(57)【要約】【課題】データの圧縮効率の向上を図ること。【解決手段】情報処理装置１００は、第１辞書および第２辞書を記憶する。情報処理装置１００は、第１項目を有するデータ１２０を取得する。情報処理装置１００は、第１辞書を参照し、データ１２０に含まれる第１項目の第１項目データ１２１に割り当てられる符号と第１項目の他の項目データ１３１，１４１に割り当てられた符号との差分が小さくなるように、第１項目データ１２１に符号を割り当てる。情報処理装置１００は、第２辞書を参照し、データ１２０に含まれる第２項目の第２項目データ１２２に割り当てられる符号と、第１項目データ１２１に割り当てた符号との差分が小さくなるように、第２項目データ１２２に符号を割り当てる。情報処理装置１００は、割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。【選択図】図１
2020021177.tif 000002
【特許請求の範囲】
【請求項１】
全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、取得した前記データを圧縮または伸長する第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、
制御部を有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記第１項目を有するデータを取得する都度、前記第１装置との間で同期した前記第１辞書および前記第２辞書に基づいて、取得した前記データに含まれる前記第１項目の項目データおよび前記第２項目の項目データを符号に置き換えて、置換後のデータを蓄積し、
蓄積した複数の前記置換後のデータを纏めて圧縮して前記第１装置に送信する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、前記第１項目についての互いに異なる２つの項目データのうち、一方の項目データを含むデータと、他方の項目データを含むデータとが共に、単位時間あたりに取得される確率が高いほど、前記２つの項目データのそれぞれの項目データに割り当てられる符号の差分が小さくなるように、前記それぞれの項目データに符号を割り当て、
前記それぞれの項目データに符号を割り当てた結果に基づいて、前記第１装置との間で、前記第１辞書の内容について同期する、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記制御部は、前記第１項目を有するデータを取得する都度、前記第１辞書を参照して、取得した前記データに含まれる前記第１項目の項目データに割り当てられた符号がなければ、取得した前記データに含まれる前記第１項目の項目データに符号を割り当て、
前記第１項目を有するデータを取得する都度、前記第２辞書を参照して、取得した前記データに含まれる前記第２項目の項目データに割り当てられた符号の数が、取得した前記データに含まれる前記第２項目の項目データに割り当て可能な符号の数未満であれば、取得した前記データに含まれる前記第２項目の項目データに符号を割り当てる、ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記制御部は、前記第１項目を有するデータを取得する都度、取得した前記データに含まれる第１項目の項目データと置き換えられた符号と、取得した前記データに含まれる前記第２項目の項目データと置き換えられた符号との差分を算出し、
前記第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定以上であれば、前記いずれかの項目データに割り当て可能な符号の数を増加させる、ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記制御部は、前記第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定未満であれば、前記第２辞書から、前記いずれかの項目データに割り当てられた符号を削除する、ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
情報処理装置と、前記情報処理装置と通信可能な第１装置とを含む分散処理システムであって、
前記情報処理装置は、
全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、前記第１装置との間で、前記第１辞書および前記第２辞書の内容について同期し、
前記第１装置は、
前記情報処理装置との間で同期した前記第１辞書および前記第２辞書の内容を記憶する、
ことを特徴とする分散処理システム。
【請求項８】
コンピュータに、
全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、取得した前記データを圧縮または伸長する第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、
処理を実行させることを特徴とする分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、分散処理システム、および分散処理プログラムに関する。
【背景技術】
【０００２】
従来、エッジコンピュータが、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）デバイスからデータを収集し、収集したデータのメタデータを圧縮してからデータセンターに送信することにより、データセンターにメタデータを集約するシステムがある。
【０００３】
先行技術としては、例えば、一般ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）に記録された各属性の型の情報に加えて、属性の属性値の種類の数を調査し、型および種類数によって、一般ＲＤＢの各属性を分類することにより、圧縮を施すかどうかを判断するものがある。また、例えば、受信したレコードをカラムごとに圧縮してカラム位置情報と共にデータベースに登録し、一致検索の場合に検索キーデータを圧縮して検索対象となる圧縮されたままのカラムデータと比較する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２３８０７３号公報
【特許文献２】特開平８−３１４９５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、メタデータの圧縮効率が低下してしまうことがある。例えば、エッジコンピュータが一度に送信するメタデータの量が少ないほど、メタデータの圧縮効率が低下してしまう傾向がある。
【０００６】
１つの側面では、本発明は、データの圧縮効率の向上を図ることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、全符号化対象データが共通して有する第１項目を有するデータを取得し、前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、割り当て結果に基づいて、取得した前記データを圧縮または伸長する第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する情報処理装置、分散処理システム、および分散処理プログラムが提案される。
【発明の効果】
【０００８】
一態様によれば、データの圧縮効率の向上を図ることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる分散処理方法の一実施例を示す説明図である。
【図２】図２は、分散処理システム２００の一例を示す説明図である。
【図３】図３は、末端処理装置２０１のハードウェア構成例を示すブロック図である。
【図４】図４は、メタデータ４００の具体例を示す説明図である。
【図５】図５は、符号化したメタデータ５００の具体例を示す説明図である。
【図６】図６は、バージョン情報６００の記憶内容の一例を示す説明図である。
【図７】図７は、固定値符号表７００の記憶内容の一例を示す説明図である。
【図８】図８は、変動値符号表８００の記憶内容の一例を示す説明図である。
【図９】図９は、対応関係テーブル９００の記憶内容の一例を示す説明図である。
【図１０】図１０は、同期待ち符号リスト１０００の記憶内容の一例を示す説明図である。
【図１１】図１１は、共起確率リスト１１００の記憶内容の一例を示す説明図である。
【図１２】図１２は、累積差分リスト１２００の記憶内容の一例を示す説明図である。
【図１３】図１３は、中央処理装置２０３のハードウェア構成例を示すブロック図である。
【図１４】図１４は、分散処理システム２００の機能的構成例を示すブロック図である。
【図１５】図１５は、分散処理システム２００の動作例を示す説明図（その１）である。
【図１６】図１６は、分散処理システム２００の動作例を示す説明図（その２）である。
【図１７】図１７は、分散処理システム２００の動作例を示す説明図（その３）である。
【図１８】図１８は、分散処理システム２００の動作例を示す説明図（その４）である。
【図１９】図１９は、登録処理手順の一例を示すフローチャートである。
【図２０】図２０は、第１払出処理手順の一例を示すフローチャートである。
【図２１】図２１は、第２払出処理手順の一例を示すフローチャートである。
【図２２】図２２は、圧縮呼び出し処理手順の一例を示すフローチャートである。
【図２３】図２３は、圧縮処理手順の一例を示すフローチャートである。
【図２４】図２４は、同期呼び出し処理手順の一例を示すフローチャートである。
【図２５】図２５は、同期処理手順の一例を示すフローチャートである。
【図２６】図２６は、更新処理手順の一例を示すフローチャートである。
【図２７】図２７は、第１符号調整呼び出し処理手順の一例を示すフローチャートである。
【図２８】図２８は、第１符号調整処理手順の一例を示すフローチャートである。
【図２９】図２９は、第２符号調整呼び出し処理手順の一例を示すフローチャートである。
【図３０】図３０は、第２符号調整処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる情報処理装置、分散処理システム、および分散処理プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる分散処理方法の一実施例）
図１は、実施の形態にかかる分散処理方法の一実施例を示す説明図である。図１において、情報処理装置１００は、分散処理システムに用いられるコンピュータである。
【００１２】
分散処理システムは、例えば、ＩｏＴデバイスと、エッジコンピュータと、データセンターとを含む。分散処理システムでは、例えば、エッジコンピュータが、ＩｏＴデバイスからデータを収集し、収集したデータをデータセンターに送信することにより、データセンターにデータを集約し、データセンターでデータを利用可能にすることがある。
【００１３】
ここで、ＩｏＴデバイスが生成するデータのすべてが、データセンターで利用されるとは限らず、通信コストをかけてデータセンターに送信したデータが、データセンターで利用されないことがある。通信コストは、消費電力および帯域負荷などである。このため、エッジコンピュータが、ＩｏＴデバイスから収集したデータについてのメタデータをデータセンターに送信することにより、データセンターにメタデータを集約するようにすることが考えられる。
【００１４】
また、エッジコンピュータとデータセンターとの間の通信帯域が狭いほど、エッジコンピュータとデータセンターとで大量のデータをやり取りすることが困難になる。例えば、通信帯域は、１．５Ｍｂｐｓである。このため、エッジコンピュータとデータセンターとの間の一度の通信量を低減化することが好ましい。具体的には、エッジコンピュータが、メタデータをデータセンターに送信する際には、メタデータを圧縮することが好ましい。また、具体的には、エッジコンピュータが、データセンターに一度に送信するメタデータの量を少なくすることが好ましい。
【００１５】
しかしながら、かかる状況では、メタデータを効率よく圧縮することが難しく、エッジコンピュータとデータセンターとの間の一度の通信量を低減することが難しい。例えば、エッジコンピュータが、辞書式符号化とハフマン符号化とをベースとしたＤｅｆｌａｔｅと呼ばれる圧縮技術を利用する場合、一度に送信するメタデータの量が少ないほど、メタデータの圧縮効率が低下してしまう傾向がある。また、圧縮したメタデータに、伸長のための辞書情報を付与することになる。このため、エッジコンピュータとデータセンターとの間の一度の通信量を低減することは難しい。
【００１６】
これに対し、エッジコンピュータとデータセンターとで、定期的に辞書情報を同期し、エッジコンピュータが、同期した辞書情報を利用してメタデータを圧縮するようにする場合が考えられる。この場合でも、メタデータを効率よく圧縮することが難しく、エッジコンピュータとデータセンターとの間の一度の通信量を低減することが難しい。例えば、メタデータが有する項目ごとに項目データを符号化し、同じ項目についての符号を並べた符号列に対して整数列圧縮を実施することになるが、符号列の隣り合う符号の差分が小さくなるとは限らず、圧縮効率が低下してしまうことがある。
【００１７】
そこで、本実施の形態では、装置間で辞書を同期した状況で、一方の装置がデータを効率よく圧縮し、他方の装置に送信することが可能になるように、データに含まれる各種項目の項目データに符号を割り当てることができる分散処理方法について説明する。
【００１８】
図１の例では、情報処理装置１００は、第１装置１１０と通信可能である。情報処理装置１００は、第１辞書および第２辞書を、記憶部１０１に記憶する。第１装置１１０は、同様に、第１辞書および第２辞書を、記憶部１１１に記憶する。記憶部１０１の記憶内容と、記憶部１１１の記憶内容とは、情報処理装置１００により同期される。第１装置１１０は、データを圧縮または伸長する装置である。
【００１９】
第１辞書は、第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す対応情報である。第１項目は、全符号化対象データが共通して有する項目である。第１項目は、例えば、符号化対象データの生成元装置の識別情報が設定される項目である。符号は、例えば、整数である。また、第２辞書は、第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す対応情報である。第２項目は、例えば、符号化対象データの生成元装置が取得したセンサ情報が設定される項目である。
【００２０】
（１−１）情報処理装置１００は、第１項目を有するデータ１２０を取得する。情報処理装置１００は、例えば、自装置がＩｏＴデバイスと通信可能な場合、ＩｏＴデバイスから第１項目を有するデータ１２０を受信する。
【００２１】
（１−２）情報処理装置１００は、第１辞書を参照して、取得したデータ１２０に含まれる第１項目の第１項目データ１２１に、第１項目の他の項目データ１３１，１４１に割り当てられた符号と重複しない符号を割り当てる。他の項目データ１３１，１４１は、例えば、過去に取得したデータ１３０，１４０に含まれる項目データであり、符号を割り当て済みの項目データである。この際、情報処理装置１００は、第１項目データ１２１に割り当てられる符号と、他の項目データ１３１，１４１に割り当てられた符号との差分が小さくなるように、第１項目データ１２１に符号を割り当てる。
【００２２】
（１−３）情報処理装置１００は、第２辞書を参照して、取得したデータ１２０に含まれる第２項目の第２項目データ１２２に、第２項目の他の項目データ１３２，１４２に割り当てられた符号と重複しない符号を割り当てる。他の項目データ１３２，１４２は、例えば、過去に取得したデータ１３０，１４０に含まれる項目データであり、符号を割り当て済みの項目データである。この際、情報処理装置１００は、第２項目データ１２２に割り当てられる符号と、第１項目データ１２１に割り当てた符号との差分が小さくなるように、第２項目データ１２２に符号を割り当てる。
【００２３】
（１−４）情報処理装置１００は、割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。情報処理装置１００は、例えば、割り当て結果を第１装置１１０に送信する。第１装置１１０は、割り当て結果を記憶部１１１に反映し、記憶部１１１にある第１辞書および第２辞書を更新する。また、情報処理装置１００は、割り当て結果を記憶部１０１に反映し、記憶部１０１にある第１辞書および第２辞書を更新する。
【００２４】
これにより、情報処理装置１００は、第１項目についての複数の項目データを符号化し、第１項目についての符号列に対して整数列圧縮を実施する場合に、整数列圧縮の効率化が図られるように、第１項目についての項目データに符号を割り当てることができる。
【００２５】
例えば、ＩｏＴデバイスは、所定間隔でデータを生成する傾向があり、第１項目についての項目データは、ＩｏＴデバイスごとに固定的である傾向がある。換言すれば、内容が同一である第１項目についての項目データを含むデータが、ＩｏＴデバイスから所定間隔で生成される傾向があると考えられる。
【００２６】
このため、同時期の、第１項目についての複数の項目データに、互いに差分が小さい符号を割り当てた場合、以降のある時期の、第１項目についての複数の項目データを符号化する際に、互いに差分が小さい符号に置き換えることができると考えられる。結果として、情報処理装置１００は、第１装置１１０との間で、第１辞書および第２辞書の内容について同期した以降、第１項目についての複数の項目データを、互いに差分が小さい符号に置き換えることができ、整数列圧縮を効率化することができる。
【００２７】
また、情報処理装置１００は、第２項目についての複数の項目データを符号化し、第２項目についての符号列に対して整数列圧縮を実施した場合に、整数列圧縮の効率化が図られるように、第２項目についての項目データに符号を割り当てることができる。
【００２８】
例えば、第１項目についての複数の項目データを、互いに差分が小さい符号に置き換えた場合、置き換えた符号との差分が小さい符号が割り当てられた第２項目についての複数の項目データも、互いに差分が小さい符号に置き換えることができると考えられる。結果として、情報処理装置１００は、第１装置１１０との間で、第１辞書および第２辞書の内容について同期した以降、第２項目についての複数の項目データを、互いに差分が小さい符号に置き換えることができ、整数列圧縮を効率化することができる。
【００２９】
また、情報処理装置１００は、記憶部１０１の記憶内容と、記憶部１１１の記憶内容とを同期することができ、第１装置１１０が第１辞書および第２辞書に基づいてデータを圧縮可能または伸長可能にすることができる。結果として、情報処理装置１００は、データを効率よく圧縮可能にすることができ、第１装置１１０との間の通信量の低減化を図ることができる。
【００３０】
（分散処理システム２００の一例）
次に、図２を用いて、図１に示した情報処理装置１００を適用した、分散処理システム２００の一例について説明する。
【００３１】
図２は、分散処理システム２００の一例を示す説明図である。図２において、分散処理システム２００は、末端処理装置２０１と、ＩｏＴデバイス２０２と、中央処理装置２０３とを含む。
【００３２】
分散処理システム２００において、ＩｏＴデバイス２０２と末端処理装置２０１とは、有線または無線により接続される。また、分散処理システム２００において、末端処理装置２０１と中央処理装置２０３とは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００３３】
図２の例では、末端処理装置２０１に、図１に示した情報処理装置１００が適用される。末端処理装置２０１は、ＩｏＴデバイス２０２からデータを収集するコンピュータである。末端処理装置２０１は、図６〜図１２に後述する各種データベースを有する。末端処理装置２０１は、例えば、図６に後述するバージョン情報６００により、図７に後述する固定値符号表７００、および、図８に後述する変動値符号表８００を管理する。
【００３４】
固定値符号表７００は、メタデータの固定値フィールドのデータに割り振られた符号を示す情報である。固定値フィールドは、全メタデータが共通して有するフィールドである。固定値符号表７００は、例えば、メタデータの固定値フィールドのデータのハッシュ値と、メタデータの固定値フィールドのデータに割り当てられた符号とを対応付けた対応情報である。ここで、データと、データのハッシュ値との対応関係は、図９に後述する対応関係テーブル９００に記憶される。固定値符号表７００は、具体的には、図１に示した第１辞書に対応する。
【００３５】
変動値符号表８００は、メタデータの変動値フィールドのデータに割り振られた符号を示す情報である。変動値フィールドは、固定値フィールド以外のフィールドである。変動値符号表８００は、例えば、メタデータの変動値フィールドのデータのハッシュ値と、メタデータの変動値フィールドのデータに割り当てられた符号とを対応付けた対応情報である。ここで、データと、データのハッシュ値との対応関係は、図９に後述する対応関係テーブル９００に記憶される。変動値符号表８００は、具体的には、図１に示した第２辞書に対応する。
【００３６】
また、末端処理装置２０１は、固定値符号表７００、および、変動値符号表８００を参照して、収集したデータについてのメタデータを符号化して蓄積し、符号化したメタデータを複数纏めて圧縮し、中央処理装置２０３に送信する。メタデータの具体例については、図４を用いて後述する。符号化したメタデータの具体例については、図５を用いて後述する。
【００３７】
また、末端処理装置２０１は、メタデータの固定値フィールドのデータ、および、変動値フィールドのデータに新たな符号を割り振り、図１０に後述する同期待ち符号リスト１０００に保存する。また、末端処理装置２０１は、図１１に後述する共起確率リスト１１００を利用し、メタデータの固定値フィールドのデータに符号を割り振り直し、同期待ち符号リスト１０００に保存してもよい。また、末端処理装置２０１は、図１２に後述する累積差分リスト１２００を利用し、変動値フィールドのデータに割り当て可能な符号の数を調整する。
【００３８】
また、末端処理装置２０１は、同期待ち符号リスト１０００を中央処理装置２０３に送信すると共に、同期待ち符号リスト１０００を固定値符号表７００、および、変動値符号表８００に反映する。末端処理装置２０１は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００３９】
ＩｏＴデバイス２０２は、データを生成して末端処理装置２０１に送信するコンピュータである。ＩｏＴデバイス２０２は、例えば、所定の場所に設けられ、所定の場所の周囲の環境を示すデータを、末端処理装置２０１に送信する。ＩｏＴデバイス２０２は、例えば、所定の物体に装着され、所定の物体の状態を示すデータを、末端処理装置２０１に送信してもよい。ＩｏＴデバイス２０２は、例えば、人間に所持され、人間の状態を示すデータを、末端処理装置２０１に送信してもよい。
【００４０】
中央処理装置２０３は、圧縮されたメタデータを受信し、圧縮されたメタデータを伸長するコンピュータである。中央処理装置２０３は、末端処理装置２０１と同様に、固定値符号表７００、変動値符号表８００、および、対応関係テーブル９００を有する。中央処理装置２０３は、同期待ち符号リスト１０００を受信し、同期待ち符号リスト１０００を、固定値符号表７００、および、変動値符号表８００に反映する。中央処理装置２０３は、例えば、サーバやＰＣなどである。
【００４１】
ここでは、末端処理装置２０１に図１に示した情報処理装置１００が適用される場合について説明したが、これに限らない。例えば、中央処理装置２０３に図１に示した情報処理装置１００が適用される場合があってもよい。この場合、中央処理装置２０３が、伸長したメタデータに基づいて、メタデータの固定値フィールドや変動値フィールドに符号を割り当てて同期待ち符号リスト１０００を生成し、同期待ち符号リスト１０００を末端処理装置２０１に送信することになる。
【００４２】
また、例えば、末端処理装置２０１や中央処理装置２０３とは異なる装置に図１に示した情報処理装置１００が適用される場合があってもよい。この場合、末端処理装置２０１や中央処理装置２０３とは異なる装置が、末端処理装置２０１または中央処理装置２０３からメタデータを収集することになる。そして、末端処理装置２０１や中央処理装置２０３とは異なる装置が、メタデータの固定値フィールドや変動値フィールドに符号を割り当てて同期待ち符号リスト１０００を生成する。そして、末端処理装置２０１や中央処理装置２０３とは異なる装置が、同期待ち符号リスト１０００を末端処理装置２０１や中央処理装置２０３に送信する。
【００４３】
ここでは、末端処理装置２０１が１つの装置である場合について説明したが、これに限らない。例えば、末端処理装置２０１が、協働する複数の装置を含むシステムであってもよい。また、中央処理装置２０３が１つの装置である場合について説明したが、これに限らない。例えば、中央処理装置２０３が、協働する複数の装置を含むシステムであってもよい。
【００４４】
（末端処理装置２０１のハードウェア構成例）
次に、図３を用いて、末端処理装置２０１のハードウェア構成例について説明する。
【００４５】
図３は、末端処理装置２０１のハードウェア構成例を示すブロック図である。図３において、末端処理装置２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ３０１は、末端処理装置２０１の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４７】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３は、例えば、モデムやＬＡＮアダプタなどである。
【００４８】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、末端処理装置２０１から着脱可能であってもよい。
【００４９】
末端処理装置２０１は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、末端処理装置２０１は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を複数有していてもよい。また、末端処理装置２０１は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００５０】
（メタデータ４００の具体例）
次に、図４を用いて、メタデータ４００の具体例について説明する。メタデータ４００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００５１】
図４は、メタデータ４００の具体例を示す説明図である。図４に示すように、メタデータ４００は、ｓｏｕｒｃｅ＿ｉｄと、ｌｏｃａｔｉｏｎと、１以上のｋｅｙとのフィールドを有する。ｓｏｕｒｃｅ＿ｉｄのフィールドには、メタデータ４００を生成したＩｏＴデバイス２０２を識別するデータが設定される。ｌｏｃａｔｉｏｎのフィールドには、メタデータ４００を生成したＩｏＴデバイス２０２がある場所を示すデータが設定される。ｋｅｙのフィールドには、メタデータ４００を生成したＩｏＴデバイス２０２で取得したデータが設定される。
【００５２】
メタデータ４００は、ｋｅｙのフィールドを有さない場合があってもよい。以下の説明では、例えば、ｓｏｕｒｃｅ＿ｉｄと、ｌｏｃａｔｉｏｎとのフィールドが、併せて、固定値フィールドとして扱われる。また、例えば、ｋｅｙのフィールドが、変動値フィールドとして扱われる。
【００５３】
（符号化したメタデータ５００の具体例）
次に、図５を用いて、符号化したメタデータ５００の具体例について説明する。符号化したメタデータ５００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００５４】
図５は、符号化したメタデータ５００の具体例を示す説明図である。図５に示すように、符号化したメタデータ５００は、固定値と、変動値と、文字列とのフィールドを有する。固定値のフィールドには、固定値フィールドのデータと置き換えられた符号が設定される。変動値のフィールドには、変動値フィールドのデータと置き換えられた符号が設定される。文字列のフィールドには、符号と置き換えられなかったデータが設定される。
【００５５】
（バージョン情報６００の記憶内容）
次に、図６を用いて、バージョン情報６００の記憶内容の一例について説明する。バージョン情報６００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００５６】
図６は、バージョン情報６００の記憶内容の一例を示す説明図である。図６に示すように、バージョン情報６００は、固定値符号表７００のＶｅｒと、変動値符号表８００のＶｅｒとのフィールドを有する。固定値符号表７００のＶｅｒのフィールドには、固定値符号表７００が何回更新されたかを示すバージョン番号が設定される。変動値符号表８００のＶｅｒのフィールドには、変動値符号表８００が何回更新されたかを示すバージョン番号が設定される。
【００５７】
（固定値符号表７００の記憶内容）
次に、図７を用いて、固定値符号表７００の記憶内容の一例について説明する。固定値符号表７００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００５８】
図７は、固定値符号表７００の記憶内容の一例を示す説明図である。図７に示すように、固定値符号表７００は、ハッシュ値と、符号とのフィールドを有する。固定値符号表７００は、固定値フィールドのデータのハッシュ値ごとに各フィールドに情報を設定することにより、固定値符号情報がレコードとして記憶される。
【００５９】
ハッシュ値のフィールドには、固定値フィールドのデータのハッシュ値が設定される。符号のフィールドには、固定値フィールドのデータに割り当てられた符号が設定される。
【００６０】
（変動値符号表８００の記憶内容）
次に、図８を用いて、変動値符号表８００の記憶内容の一例について説明する。変動値符号表８００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００６１】
図８は、変動値符号表８００の記憶内容の一例を示す説明図である。図８に示すように、変動値符号表８００は、ハッシュ値と、符号と、割当数とのフィールドを有する。変動値符号表８００は、変動値フィールドのデータのハッシュ値ごとに各フィールドに情報を設定することにより、変動値符号情報がレコードとして記憶される。
【００６２】
ハッシュ値のフィールドには、変動値フィールドのデータのハッシュ値が設定される。符号のフィールドには、変動値フィールドのデータに割り当てられた符号が設定される。符号のフィールドには、符号が複数設定されてもよい。割当数のフィールドには、変動値フィールドのデータに割り当て可能な符号の数が設定される。
【００６３】
（対応関係テーブル９００の記憶内容）
次に、図９を用いて、対応関係テーブル９００の記憶内容の一例について説明する。対応関係テーブル９００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００６４】
図９は、対応関係テーブル９００の記憶内容の一例を示す説明図である。図９に示すように、対応関係テーブル９００は、ハッシュ値と、データとのフィールドを有する。対応関係テーブル９００は、データごとに各フィールドに情報を設定することにより、対応情報がレコードとして記憶される。
【００６５】
ハッシュ値のフィールドには、メタデータに含まれる固定値フィールドのデータまたは変動値フィールドのデータから算出されたハッシュ値が設定される。データのフィールドには、メタデータに含まれる固定値フィールドのデータまたは変動値フィールドのデータが設定される。
【００６６】
（同期待ち符号リスト１０００の記憶内容）
次に、図１０を用いて、同期待ち符号リスト１０００の記憶内容の一例について説明する。同期待ち符号リスト１０００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００６７】
図１０は、同期待ち符号リスト１０００の記憶内容の一例を示す説明図である。図１０に示すように、同期待ち符号リスト１０００は、データ／ハッシュ値と、固定値／変動値と、符号と、追加／削除とのフィールドを有する。同期待ち符号リスト１０００は、データまたはハッシュ値ごとに各フィールドに情報を設定することにより、同期待ち符号情報がレコードとして記憶される。
【００６８】
データ／ハッシュ値のフィールドには、データまたはハッシュ値が設定される。データ／ハッシュ値のフィールドには、例えば、固定値符号表７００または変動値符号表８００に対して、データと符号との組み合わせを追加しようとする場合には、データが設定される。データ／ハッシュ値のフィールドには、例えば、固定値符号表７００または変動値符号表８００から、ハッシュ値と符号との組み合わせを削除しようとする場合には、ハッシュ値が設定される。
【００６９】
固定値／変動値のフィールドには、固定値符号表７００および変動値符号表８００のいずれを処理対象にするかを示すフラグ情報が設定される。フラグ情報が固定値であれば、固定値符号表７００を処理対象とすることを示し、フラグ情報が変動値であれば、変動値符号表８００を処理対象とすることを示す。符号のフィールドには、処理対象に対して追加または削除される符号が設定される。追加／削除のフィールドには、処理種別として追加または削除が設定される。
【００７０】
（共起確率リスト１１００の記憶内容）
次に、図１１を用いて、共起確率リスト１１００の記憶内容の一例について説明する。共起確率リスト１１００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００７１】
図１１は、共起確率リスト１１００の記憶内容の一例を示す説明図である。図１１に示すように、共起確率リスト１１００は、ハッシュ値ペアと、共起確率とのフィールドを有する。共起確率リスト１１００は、ハッシュ値のペアごとに各フィールドに情報を設定することにより、共起確率情報がレコードとして記憶される。
【００７２】
ハッシュ値ペアのフィールドには、固定値フィールドについての互いに異なる２つのデータのそれぞれのデータから算出されたハッシュ値のペアが設定される。共起確率のフィールドには、固定値フィールドについての互いに異なる２つのデータが、単位時間あたりに取得される確率である共起確率が設定される。
【００７３】
（累積差分リスト１２００の記憶内容）
次に、図１２を用いて、累積差分リスト１２００の記憶内容の一例について説明する。累積差分リスト１２００は、例えば、図３に示した末端処理装置２０１のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００７４】
図１２は、累積差分リスト１２００の記憶内容の一例を示す説明図である。図１２に示すように、累積差分リスト１２００は、ハッシュ値と、累積差分と、割当数とのフィールドを有する。累積差分リスト１２００は、ハッシュ値ごとに各フィールドに情報を設定することにより、累積差分情報がレコードとして記憶される。
【００７５】
ハッシュ値のフィールドには、変動値フィールドについてのデータから算出されたハッシュ値が設定される。累積差分のフィールドには、メタデータに含まれる変動値フィールドについてのデータと置き換えられた符号と、同じメタデータに含まれる固定値フィールドについてのデータと置き換えられた符号との差分を累積した結果が設定される。割当数のフィールドには、変動値フィールドについてのデータに対して割り当て可能な符号の数が設定される。
【００７６】
（ＩｏＴデバイス２０２のハードウェア構成例）
ＩｏＴデバイス２０２のハードウェア構成例は、図３に示した末端処理装置２０１のハードウェア構成例と同様であるが、ＩｏＴデバイス２０２は、記録媒体Ｉ／Ｆや記録媒体を有していなくてもよい。また、ＩｏＴデバイス２０２は、例えば、センサ装置を有していてもよい。
【００７７】
センサ装置は、例えば、ＩｏＴデバイス２０２の状態を検出する。ＩｏＴデバイス２０２の状態は、例えば、ＩｏＴデバイス２０２の位置、動き、および向きのうち少なくともいずれかである。センサ装置は、具体的には、加速度センサ、地磁気センサ、振動センサ、または、ＧＰＳ受信機などのいずれかを含んでもよい。
【００７８】
また、センサ装置は、例えば、ＩｏＴデバイス２０２の周辺の環境を検出してもよい。環境は、例えば、音や光などである。センサ装置は、具体的には、光センサ、または、音センサなどのいずれかを含んでもよい。また、センサ装置は、例えば、生体情報を検出してもよい。生体情報は、例えば、脈拍、心拍、体温、または、運動量などである。
【００７９】
（中央処理装置２０３のハードウェア構成例）
次に、図１３を用いて、中央処理装置２０３のハードウェア構成例について説明する。
【００８０】
図１３は、中央処理装置２０３のハードウェア構成例を示すブロック図である。図１３において、中央処理装置２０３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３０１と、メモリ１３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１３０３と、記録媒体Ｉ／Ｆ１３０４と、記録媒体１３０５とを有する。また、各構成部は、バス１３００によってそれぞれ接続される。
【００８１】
ここで、ＣＰＵ１３０１は、中央処理装置２０３の全体の制御を司る。メモリ１３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ１３０１のワークエリアとして使用される。メモリ１３０２に記憶されるプログラムは、ＣＰＵ１３０１にロードされることで、コーディングされている処理をＣＰＵ１３０１に実行させる。メモリ１３０２は、固定値符号表７００、変動値符号表８００、および、対応関係テーブル９００などを記憶する。
【００８２】
ネットワークＩ／Ｆ１３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ１３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ１３０３は、例えば、モデムやＬＡＮアダプタなどである。
【００８３】
記録媒体Ｉ／Ｆ１３０４は、ＣＰＵ１３０１の制御に従って記録媒体１３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ１３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体１３０５は、記録媒体Ｉ／Ｆ１３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体１３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体１３０５は、中央処理装置２０３から着脱可能であってもよい。
【００８４】
中央処理装置２０３は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、中央処理装置２０３は、記録媒体Ｉ／Ｆ１３０４や記録媒体１３０５を複数有していてもよい。また、中央処理装置２０３は、記録媒体Ｉ／Ｆ１３０４や記録媒体１３０５を有していなくてもよい。
【００８５】
（分散処理システム２００の機能的構成例）
次に、図１４を用いて、分散処理システム２００の機能的構成例について説明する。具体的には、分散処理システム２００に含まれる情報処理装置１００の機能的構成例と、情報処理装置１００と通信可能な第１装置１１０の機能的構成例とについて説明する。
【００８６】
図１４は、分散処理システム２００の機能的構成例を示すブロック図である。図１４の例では、主として、図２に示した末端処理装置２０１が情報処理装置１００に対応し、図２に示した中央処理装置２０３が第１装置１１０に対応する場合について説明する。
【００８７】
図１４において、情報処理装置１００は、記憶部１４００と、取得部１４０１と、割当部１４０２と、同期部１４０３と、圧縮部１４０４と、出力部１４０５とを含む。また、第１装置１１０は、記憶部１４１０と、更新部１４１１と、伸長部１４１２とを含む。
【００８８】
記憶部１４００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。以下では、記憶部１４００が、情報処理装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部１４００が、情報処理装置１００とは異なる装置に含まれ、記憶部１４００の記憶内容が情報処理装置１００から参照可能である場合があってもよい。
【００８９】
取得部１４０１〜出力部１４０５は、制御部の一例として機能する。取得部１４０１〜出力部１４０５は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。情報処理装置１００の各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００９０】
記憶部１４００は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部１４００は、例えば、第１辞書および第２辞書を記憶する。第１辞書は、第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す対応情報である。第１項目は、全符号化対象データが共通して有する項目である。第１項目は、複数の項目を含んでもよい。第１項目は、例えば、固定値フィールドである。符号は、例えば、整数である。また、第２辞書は、第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す対応情報である。第２項目は、例えば、変動値フィールドである。記憶部１４００は、具体的には、図６〜図１２に示した各種データベースを記憶する。
【００９１】
取得部１４０１は、各機能部の処理に用いられる各種情報を取得する。取得部１４０１は、取得した各種情報を、記憶部１４００に記憶し、または、各機能部に出力する。また、取得部１４０１は、記憶部１４００に記憶しておいた各種情報を、各機能部に出力してもよい。取得部１４０１は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部１４０１は、例えば、情報処理装置１００とは異なる装置から、各種情報を受信してもよい。
【００９２】
取得部１４０１は、具体的には、第１項目を有するデータを取得する。データは、１以上の項目を有し、１以上の項目のそれぞれの項目の項目データを含む。項目データは、項目名を含んでもよい。データは、例えば、メタデータである。データは、メタデータではなくてもよい。取得部１４０１は、より具体的には、ＩｏＴデバイス２０２から、メタデータを受信する。これにより、取得部１４０１は、各機能部がメタデータを参照可能にすることができる。
【００９３】
割当部１４０２は、第１辞書を参照して、取得したデータに含まれる第１項目の第１項目データに、第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当てる。他の項目データは、例えば、過去に取得したデータに含まれる項目データであり、符号を割り当て済みの項目データである。この際、割当部１４０２は、第１項目データに割り当てられる符号と、他の項目データに割り当てられた符号との差分が小さくなるように、第１項目データに符号を割り当てる。差分が小さくなるようにすることは、例えば、差分を０に近づけることである。差分が小さくなるようにすることは、例えば、差分が一定以上小さくなるようにすることであってもよい。
【００９４】
割当部１４０２は、例えば、第１辞書を参照して、取得したデータに含まれる第１項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第１項目の項目データに符号を割り当てる。また、割当部１４０２は、例えば、第１辞書を参照して、取得したデータに含まれる第１項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第１項目の項目データに符号を割り当てなくてもよい。
【００９５】
割当部１４０２は、具体的には、メタデータに含まれる固定値フィールドのデータのハッシュ値を算出する。次に、割当部１４０２は、ハッシュ値をキーに固定値符号表７００を検索し、ハッシュ値に対応する符号があるか否かを判定する。そして、割当部１４０２は、符号がなければ、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存せず、固定値符号表７００に追加する場合があってもよい。
【００９６】
これにより、割当部１４０２は、第１項目についての複数の項目データを符号化し、第１項目についての符号列に対して整数列圧縮を実施する場合に、整数列圧縮の効率化が図られるように、第１項目についての項目データに符号を割り当てることができる。
【００９７】
割当部１４０２は、第２辞書を参照して、取得したデータに含まれる第２項目の第２項目データに、第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当てる。他の項目データは、例えば、過去に取得したデータに含まれる項目データであり、符号を割り当て済みの項目データである。この際、割当部１４０２は、第２項目データに割り当てられる符号と、第１項目データに割り当てた符号との差分が小さくなるように、第２項目データに符号を割り当てる。
【００９８】
割当部１４０２は、例えば、第２辞書を参照して、取得したデータに含まれる第２項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第２項目の項目データに符号を割り当てる。また、割当部１４０２は、例えば、第２辞書を参照して、取得したデータに含まれる第２項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第２項目の項目データに符号を割り当てなくてもよい。
【００９９】
割当部１４０２は、具体的には、メタデータに含まれる変動値フィールドのデータのハッシュ値を算出する。次に、割当部１４０２は、ハッシュ値をキーに変動値符号表８００を検索し、ハッシュ値に対応する符号があるか否かを判定する。そして、割当部１４０２は、符号がなければ、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存せず、変動値符号表８００に追加する場合があってもよい。
【０１００】
また、割当部１４０２は、例えば、第２辞書を参照して、取得したデータに含まれる第２項目の項目データに割り当てられた符号の数が、取得したデータに含まれる第２項目の項目データに割り当て可能な符号の数未満であるか否かを判定してもよい。そして、割当部１４０２は、割り当て可能な符号の数未満であれば、取得したデータに含まれる第２項目の項目データに符号を割り当てる。また、割当部１４０２は、割り当て可能な符号の数以上であれば、取得したデータに含まれる第２項目の項目データに符号を割り当てなくてもよい。
【０１０１】
割当部１４０２は、具体的には、メタデータに含まれる変動値フィールドのデータのハッシュ値を算出する。次に、割当部１４０２は、ハッシュ値をキーに変動値符号表８００を検索し、ハッシュ値に対応する符号があるか否かを判定する。そして、割当部１４０２は、符号がなければ、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存せず、変動値符号表８００に追加する場合があってもよい。
【０１０２】
また、割当部１４０２は、ハッシュ値に対応する符号があれば、ハッシュ値に対応する符号の数が、割り当て可能な符号の数未満であるか否かを判定する。そして、割当部１４０２は、割り当て可能な符号の数未満であれば、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、ハッシュ値と、新たな符号とを対応付けて、同期待ち符号リスト１０００に保存せず、変動値符号表８００に追加する場合があってもよい。
【０１０３】
これにより、割当部１４０２は、第２項目についての複数の項目データを符号化し、第２項目についての符号列に対して整数列圧縮を実施した場合に、整数列圧縮の効率化が図られるように、第２項目についての項目データに符号を割り当てることができる。
【０１０４】
割当部１４０２は、第１項目についての互いに異なる２つの項目データのうち、一方の項目データを含むデータと、他方の項目データを含むデータとが共に、単位時間あたりに取得される確率を算出する。確率は、共起確率である。そして、割当部１４０２は、算出した確率が高いほど、２つの項目データのそれぞれの項目データに割り当てられる符号の差分が小さくなるように、それぞれの項目データに符号を割り当てる。
【０１０５】
割当部１４０２は、具体的には、単位時間ごとのメタデータ群における固定値フィールド群の中に２種のデータが同時に現れた回数を基に、２種のデータについて共起確率を算出する。次に、割当部１４０２は、算出した共起確率を、２種のデータのハッシュ値を組み合わせたハッシュ値のペアに対応付けて、共起確率リスト１１００に追加する。そして、割当部１４０２は、共起確率が高い順に、ハッシュ値のペアに対応する符号の差分が小さくなるように、ハッシュ値のペアに符号を割り当てる。
【０１０６】
割当部１４０２は、割り当て結果を、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、割り当て結果を、同期待ち符号リスト１０００に保存せず、固定値符号表７００に反映する場合があってもよい。これにより、割当部１４０２は、さらに整数列圧縮の効率化が図られるように、第１項目についての項目データに符号を割り当て直すことができる。
【０１０７】
割当部１４０２は、第１項目を有するデータを取得する都度、取得したデータに含まれる第１項目の項目データと置き換えられた符号と、取得したデータに含まれる第２項目の項目データと置き換えられた符号との差分を算出する。そして、割当部１４０２は、第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定以上であれば、いずれかの項目データに割り当て可能な符号の数を増加させる。
【０１０８】
割当部１４０２は、具体的には、メタデータを符号化する都度、符号化したメタデータに含まれる固定値フィールドの符号と変動値フィールドの符号との差分を算出する。次に、割当部１４０２は、算出した差分に基づいて、累積差分リスト１２００のうち、変動値フィールドの符号に対応するハッシュ値に対応付けられた累積差分を更新する。累積差分は、変動値フィールドの符号に対応するハッシュ値に対応付けられた符号の数に基づいて正規化されてもよい。
【０１０９】
そして、割当部１４０２は、累積差分が一定以上であれば、変動値符号表８００のうち、変動値フィールドの符号に対応するハッシュ値に対応付けられた割り当て可能な符号の数を増加させる。これにより、割当部１４０２は、さらに整数列圧縮の効率化が図られるように、第２項目についての項目データに、新たに符号を割り当て可能にすることができる。
【０１１０】
例えば、割当部１４０２は、第１項目の項目データと置き換えられた符号と、第２項目の項目データと置き換えられた符号との差分を小さくすることが、整数列圧縮の効率化に寄与するという性質を利用している。このため、累積差分が大きい場合、現状で第２項目の項目データと置き換えている符号は、整数列圧縮の効率化に寄与しにくいと考えられる。これに対し、割当部１４０２は、第２項目についての項目データに、新たに符号を割り当て可能にし、さらに整数列圧縮の効率化が図られるようにすることができる。
【０１１１】
割当部１４０２は、第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定未満であれば、第２辞書から、いずれかの項目データに割り当てられた符号を削除する。割当部１４０２は、具体的には、メタデータを符号化する都度、符号化したメタデータに含まれる固定値フィールドの符号と変動値フィールドの符号との差分を算出する。次に、割当部１４０２は、算出した差分に基づいて、累積差分リスト１２００のうち、変動値フィールドの符号に対応するハッシュ値に対応付けられた累積差分を更新する。
【０１１２】
そして、割当部１４０２は、累積差分が一定未満であれば、変動値符号表８００のうち、変動値フィールドの符号に対応するハッシュ値に対応付けられた符号を削除する。割当部１４０２は、削除結果を、同期待ち符号リスト１０００に保存する。ここで、割当部１４０２は、削除結果を、同期待ち符号リスト１０００に保存せず、変動値符号表８００に反映する場合があってもよい。また、割当部１４０２は、変動値符号表８００のうち、変動値フィールドの符号に対応するハッシュ値に対応付けられた割り当て可能な符号の数を減少させる。これにより、割当部１４０２は、利用回数の比較的少ない符号を削除し、利用可能な符号の数を増加させることができる。
【０１１３】
同期部１４０３は、割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。同期部１４０３は、例えば、割り当て結果を第１装置１１０に送信する。また、同期部１４０３は、割り当て結果に基づいて、記憶部１４００が記憶する第１辞書および第２辞書の内容を更新する。同期部１４０３は、具体的には、同期待ち符号リスト１０００を、中央処理装置２０３に送信する。また、同期部１４０３は、同期待ち符号リスト１０００に基づいて、固定値符号表７００および変動値符号表８００を更新する。
【０１１４】
これにより、同期部１４０３は、第１装置１１０が記憶する第１辞書および第２辞書の内容を、情報処理装置１００が記憶する第１辞書および第２辞書と同じ内容になるように、第１装置１１０に更新させることができる。このため、同期部１４０３は、第１辞書および第２辞書に基づいてデータを、第１装置１１０が圧縮可能または伸長可能にすることができる。結果として、同期部１４０３は、データを効率よく圧縮可能にすることができ、第１装置１１０との間の通信量の低減化を図ることができる。
【０１１５】
同期部１４０３は、第１項目の項目データに符号を割り当てたこと、または、第２項目の項目データに符号を割り当てたことに応じて、割り当て結果を蓄積してもよい。そして、同期部１４０３は、蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。
【０１１６】
同期部１４０３は、例えば、一定数以上のデータを取得するまでに蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。同期部１４０３は、一定時間のうちで蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期する。これにより、同期部１４０３は、同期にかかる通信量の低減化を図ることができる。
【０１１７】
圧縮部１４０４は、第１項目を有するデータを取得する都度、第１装置１１０との間で同期した第１辞書および第２辞書に基づいて、取得したデータに含まれる第１項目の項目データおよび第２項目の項目データを符号に置き換えて、置換後のデータを蓄積する。
【０１１８】
圧縮部１４０４は、例えば、取得したデータに含まれる第１項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第１項目の項目データを、当該符号に置き換える。また、圧縮部１４０４は、例えば、取得したデータに含まれる第１項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第１項目の項目データを、所定符号に置き換える。
【０１１９】
圧縮部１４０４は、例えば、取得したデータに含まれる第２項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第２項目の項目データを、当該符号に置き換える。また、圧縮部１４０４は、例えば、取得したデータに含まれる第２項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第２項目の項目データを、所定符号に置き換える。
【０１２０】
そして、圧縮部１４０４は、蓄積した複数の置換後のデータを纏めて圧縮する。圧縮部１４０４は、例えば、蓄積した複数の置換後のデータのそれぞれの置換後のデータに含まれる第１項目の項目データと置き換えられた符号を並べた符号列を圧縮する。また、圧縮部１４０４は、例えば、蓄積した複数の置換後のデータのそれぞれの置換後のデータに含まれる第２項目の項目データと置き換えられた符号を並べた符号列を圧縮する。これにより、圧縮部１４０４は、データを効率よく圧縮することができる。
【０１２１】
出力部１４０５は、圧縮結果を、第１装置１１０に送信する。出力部１４０５は、具体的には、圧縮された複数のメタデータを、圧縮に利用した固定値符号表７００のバージョン番号、および、圧縮に利用した変動値符号表８００のバージョン番号と共に、中央処理装置２０３に送信する。これにより、出力部１４０５は、第１装置１１０との間の通信量の低減化を図ることができる。
【０１２２】
記憶部１４１０は、例えば、図１３に示したメモリ１３０２や記録媒体１３０５などの記憶領域によって実現される。以下では、記憶部１４１０が、第１装置１１０に含まれる場合について説明するが、これに限らない。例えば、記憶部１４１０が、第１装置１１０とは異なる装置に含まれ、記憶部１４１０の記憶内容が第１装置１１０から参照可能である場合があってもよい。
【０１２３】
更新部１４１１および伸長部１４１２は、具体的には、例えば、メモリ１３０２や記録媒体１３０５などの記憶領域に記憶されたプログラムをＣＰＵ１３０１に実行させることにより、または、ネットワークＩ／Ｆ１３０３により、その機能を実現する。第１装置１１０の各機能部の処理結果は、例えば、図１３に示したメモリ１３０２や記録媒体１３０５などの記憶領域に記憶される。
【０１２４】
記憶部１４１０は、記憶部１４００と同様に、第１辞書および第２辞書を記憶する。記憶部１４００の記憶内容と、記憶部１４１０の記憶内容とは、同期される。例えば、記憶部１４００が記憶する第１辞書および第２辞書と、記憶部１４１０が記憶する第１辞書および第２辞書とは、同一内容になるように同期される。記憶部１４１０は、具体的には、固定値符号表７００および変動値符号表８００を記憶する。また、記憶部１４１０は、バージョン情報６００を記憶してもよい。
【０１２５】
更新部１４１１は、割当部１４０２の割り当て結果に基づいて、記憶部１４１０に記憶された第１辞書および第２辞書を更新する。更新部１４１１は、具体的には、同期待ち符号リスト１０００を受信し、同期待ち符号リスト１０００に基づいて、記憶部１４１０に記憶された固定値符号表７００および変動値符号表８００を更新する。これにより、更新部１４１１は、情報処理装置１００と第１装置１１０とが同じ内容の第１辞書および第２辞書を有するように同期することができる。
【０１２６】
伸長部１４１２は、第１辞書および第２辞書に基づいて、圧縮されたデータを伸長する。伸長部１４１２は、具体的には、圧縮に利用した固定値符号表７００のバージョン番号、および、圧縮に利用した変動値符号表８００のバージョン番号と共に、圧縮された複数のメタデータを受信する。そして、伸長部１４１２は、固定値符号表７００、変動値符号表８００、および、バージョン情報６００に基づいて、圧縮された複数のメタデータを伸長する。これにより、伸長部１４１２は、圧縮されたデータを利用可能にすることができる。
【０１２７】
ここでは、図２に示した分散処理システム２００において、末端処理装置２０１が情報処理装置１００に対応し、中央処理装置２０３が第１装置１１０に対応する場合について説明したが、これに限らない。例えば、末端処理装置２０１が第１装置１１０に対応し、中央処理装置２０３が情報処理装置１００に対応する場合があってもよい。
【０１２８】
例えば、この場合、取得部１４０１は、末端処理装置２０１から、圧縮されたメタデータを受信し、圧縮されたメタデータを伸長してもよい。また、例えば、同期部１４０３は、同期待ち符号リスト１０００を、末端処理装置２０１に送信してもよい。また、例えば、情報処理装置１００の圧縮部１４０４および出力部１４０５と、第１装置１１０の伸長部１４１２とが入れ替わってもよい。
【０１２９】
（分散処理システム２００の動作例）
次に、図１５〜図１８を用いて、図２に示した分散処理システム２００の動作例について説明する。
【０１３０】
図１５〜図１８は、分散処理システム２００の動作例を示す説明図である。図１５において、末端処理装置２０１は、ＩｏＴデバイス２０２から、メタデータ１５０１を受信する。ここで、メタデータ１５０１のうち、固定値フィールドは、ｓｏｕｒｃｅ＿ｉｄのフィールドと、ｌｏｃａｔｉｏｎのフィールドとの組み合わせである。また、変動値フィールドは、ｈｏｇｅのフィールドと、ｆｏｏのフィールドとのそれぞれのフィールドである。
【０１３１】
末端処理装置２０１は、固定値符号表７００に、メタデータ１５０１の固定値フィールドのデータに対応する符号があるか否かを判定し、符号があれば、メタデータ１５０１の固定値フィールドのデータを符号化する。末端処理装置２０１は、符号がなければ、メタデータ１５０１の固定値フィールドのデータに符号を割り当てて、同期待ち符号リスト１０００に保存する。
【０１３２】
図１５の例では、末端処理装置２０１は、固定値フィールドのデータ「“ｓｏｕｒｃｅ＿ｉｄ”：“００１”，“ｌｏｃａｔｉｏｎ”：｛“ｌａｔ”：ｘｘ，“ｌｎｇ”：ｙｙ｝」のハッシュ値「ａｂｃｄｅｆｇ」を算出する。末端処理装置２０１は、固定値符号表７００に、ハッシュ値「ａｂｃｄｅｆｇ」に対応する符号「１」があると判定する。このため、末端処理装置２０１は、固定値フィールドのデータ「“ｓｏｕｒｃｅ＿ｉｄ”：“００１”，“ｌｏｃａｔｉｏｎ”：｛“ｌａｔ”：ｘｘ，“ｌｎｇ”：ｙｙ｝」を符号「１」に置き換える。
【０１３３】
ここで、末端処理装置２０１は、データに符号を割り当てる際、固定値フィールドについての互いに異なる２つのデータに割り当てられる符号が連続せず、少なくとも一定以上離れるようにしてもよい。これにより、末端処理装置２０１は、固定値フィールドのデータに割り当てられた符号の周囲に余分範囲を設け、当該符号との差分が小さい符号を、変動値フィールドのデータに割り当てやすくしておくことができる。
【０１３４】
また、末端処理装置２０１は、変動値符号表８００に、メタデータ１５０１の変動値フィールドのデータに対応する符号があるか否かを判定し、符号があれば、メタデータ１５０１の変動値フィールドのデータを符号化する。末端処理装置２０１は、符号がなければ、メタデータ１５０１の変動値フィールドのデータに符号を割り当てて、同期待ち符号リスト１０００に保存する。また、末端処理装置２０１は、符号があっても、割り当て済みの符号の数が、割り当て可能な符号の数未満であれば、メタデータ１５０１の変動値フィールドのデータに符号を割り当てて、同期待ち符号リスト１０００に保存してもよい。
【０１３５】
図１５の例では、末端処理装置２０１は、１つ目の変動値フィールドのデータ「“ｈｏｇｅ”：“ｆｕｇａ”」のハッシュ値「ｎｏｐｑｒｓｔ」を算出する。末端処理装置２０１は、変動値符号表８００に、ハッシュ値「ｎｏｐｑｒｓｔ」に対応する符号「１」があるため、１つ目の変動値フィールド「“ｈｏｇｅ”：“ｆｕｇａ”」のデータを符号「１」に置き換える。固定値フィールドのデータと置き換える符号と、変動値フィールドのデータと置き換える符号とは、同値であってもよい。
【０１３６】
ここで、末端処理装置２０１は、２つ目以降の変動値フィールドのデータについては符号に置き換えなくてもよい。このため、末端処理装置２０１は、２つ目の変動値フィールドのデータ「“ｆｏｏ”：“ｂａｒ”」を、そのままにする。また、末端処理装置２０１が、２つ目以降の変動値フィールドのデータについても符号に置き換える場合があってもよい。末端処理装置２０１は、符号化したメタデータ１５０２を、送信待ちバッファに蓄積する。送信待ちバッファは、例えば、ＦＩＦＯキューである。
【０１３７】
また、末端処理装置２０１は、固定値フィールドのデータと置き換えた符号と、変動値フィールドのデータと置き換えた符号との差分を算出し、累積差分リスト１２００を更新する。末端処理装置２０１は、例えば、変動値フィールドのデータと置き換えた符号を、変動値フィールドのデータに割り当て可能な符号の最大数で除算した商＋１を算出する。最大数は、例えば、３である。
【０１３８】
また、末端処理装置２０１は、固定値フィールドのデータと置き換えた符号を、変動値フィールドのデータに割り当て可能な符号の最大数で除算した商を算出する。そして、末端処理装置２０１は、変動値フィールドについて算出した商＋１から、固定値フィールドについて算出した商を減算した差分を算出し、累積差分リスト１２００の累積差分に加算する。
【０１３９】
これにより、末端処理装置２０１は、符号の整数列圧縮の効率化への寄与が少ないほど累積差分が大きくなるように、かつ、符号の利用回数が少ないほど累積差分が小さくなるように、累積差分を記憶することができる。そして、末端処理装置２０１は、累積差分に基づいて、整数列圧縮の効率化が図られるように、変動値符号表８００における符号の割り当てを調整可能にすることができる。次に、図１６の説明に移行する。
【０１４０】
図１６において、末端処理装置２０１は、送信待ちバッファに蓄積した符号化されたメタデータの量が一定以上になるか、または、一定時間が経過すると、蓄積した符号化されたメタデータを複数纏めて圧縮する。
【０１４１】
図１６の例では、末端処理装置２０１は、固定値フィールドにある符号の順に、符号化されたメタデータをソートして、固定値符号表７００のバージョン番号や変動値符号表８００のバージョン番号を付与したファイル１６００のエントリとして記入する。
【０１４２】
次に、末端処理装置２０１は、エントリごとに符号の数を合わせるためにパディングを実施する。末端処理装置２０１は、具体的には、エントリ「５，｛“ｐｉｙｏ”：“ｂａｚ”｝」にパディングを実施し、エントリ「５，０，｛“ｐｉｙｏ”：“ｂａｚ”｝」とする。
【０１４３】
そして、末端処理装置２０１は、エントリのカラムごとに、符号または文字列を並べて、ファイル１６０１に記入する。末端処理装置２０１は、具体的には、固定値フィールドにある符号を並べた「１，３，５，７」、および、変動値フィールドにある符号を並べた「１，３，０，７」を、ファイル１６０１に記入する。また、末端処理装置２０１は、文字列フィールドにある文字列を並べた「［｛“ｆｏｏ”：“ｂａｒ”｝，｛“ｈｏｇｅ”：“ｆｕｇａ”｝，｛“ｐｉｙｏ”：“ｂａｚ”｝，ｎｉｌ］」を、ファイル１６０１に記入する。ｎｉｌは、文字列がないことを示す。
【０１４４】
そして、末端処理装置２０１は、ファイル１６０１に対して、カラム単位での整数列圧縮を実施する。末端処理装置２０１は、具体的には、固定値フィールドにある符号を並べた符号列「１，３，５，７」を整数列圧縮し、変動値フィールドにある符号を並べた符号列「１，３，０，７」を整数列圧縮する。また、末端処理装置２０１は、文字列フィールドにある文字列を並べた文字列群に対しては、整数列圧縮以外の圧縮を実施する。
【０１４５】
そして、末端処理装置２０１は、圧縮結果であるバイナリデータ１６０２を、中央処理装置２０３に送信する。中央処理装置２０３は、末端処理装置２０１とは逆の処理を実行し、バイナリデータ１６０２から、ファイル１６００を伸長する。これにより、末端処理装置２０１は、符号化されたメタデータを効率よく圧縮することができ、中央処理装置２０３との間の通信量の低減化を図ることができる。
【０１４６】
ここで、末端処理装置２０１は、送信待ちバッファに蓄積した符号化されたメタデータに基づいて、固定値フィールドのデータと置き換えられた符号のペアに対応するハッシュ値のペアについて、共起確率リスト１１００の共起確率を更新してもよい。そして、末端処理装置２０１は、共起確率リスト１１００を参照し、ハッシュ値のペアの共起確率が高いほど、ハッシュ値のペアのそれぞれのハッシュ値に割り当てられる符号の差分が小さくなるように、それぞれのハッシュ値に符号を割り当て直す。末端処理装置２０１は、ハッシュ値と、ハッシュ値に割り当て直した符号と、処理種別として追加とを対応付けて、同期待ち符号リスト１０００に追加する。
【０１４７】
例えば、末端処理装置２０１は、符号化されたメタデータに含まれる固定値フィールドの符号を並べた符号列における符号同士の差分を小さくすることが、符号列に対する整数列圧縮の効率化に寄与するという性質を利用している。また、ハッシュ値のペアの共起確率が高いことは、ハッシュ値のペアに対応する固定値フィールドのデータのペアが、同じタイミングで符号化されやすいことを示している。
【０１４８】
このため、共起確率が高いハッシュ値のペアに対応する固定値フィールドのデータのペアを、差分が小さい符号に置き換えられれば、整数列圧縮の対象となる符号列に、差分が小さい符号が含まれる可能性を向上することができると考えられる。これに対し、末端処理装置２０１は、共起確率が高いハッシュ値のペアのそれぞれのハッシュ値に、符号を割り当て直すことで、さらに整数列圧縮の効率化を図ることができる。
【０１４９】
ここでは、末端処理装置２０１が、データに一旦符号を割り当てた後、共起確率に基づいてデータに符号を割り当て直す場合について説明したが、これに限らない。例えば、末端処理装置２０１は、データに一旦符号を割り当てることなく、共起確率に基づいて、データに符号を割り当てるようにする場合があってもよい。次に、図１７の説明に移行する。
【０１５０】
図１７において、末端処理装置２０１は、一定時間ごとに、固定値符号表７００および変動値符号表８００についての同期要求を中央処理装置２０３に送信する。同期要求は、例えば、固定値符号表７００および変動値符号表８００をどのように更新するかを示す同期待ち符号リスト１０００が付与される。また、同期要求は、バージョン情報６００に基づいて、固定値符号表７００のバージョン番号、および、変動値符号表８００のバージョン番号が付与される。
【０１５１】
中央処理装置２０３は、同期要求を受信する。中央処理装置２０３は、同期要求に付与された同期待ち符号リスト１０００を、自装置が記憶する固定値符号表７００および変動値符号表８００に反映する。中央処理装置２０３は、例えば、同期待ち符号リスト１０００の追加／削除のフィールドの処理種別で、固定値符号表７００および変動値符号表８００に対して、ハッシュ値と符号との対応関係を追加または削除する。中央処理装置２０３は、自装置が記憶するバージョン情報１７００を、同期待ち符号リスト１０００に付与された固定値符号表７００のバージョン番号と変動値符号表８００のバージョン番号とで上書きする。
【０１５２】
ここで、中央処理装置２０３は、同期待ち符号リスト１０００を自装置が記憶する固定値符号表７００に反映する際、反映前の固定値符号表７００を残しておいてもよい。同様に、中央処理装置２０３は、同期待ち符号リスト１０００を自装置が記憶する変動値符号表８００に反映する際、反映前の変動値符号表８００を残しておいてもよい。中央処理装置２０３は、同期要求に付与された同期待ち符号リスト１０００を、自装置が記憶する固定値符号表７００および変動値符号表８００に反映した後、更新完了応答を、末端処理装置２０１に送信する。
【０１５３】
末端処理装置２０１は、更新完了応答を受信すると、同期待ち符号リスト１０００を、自装置が記憶する固定値符号表７００および変動値符号表８００に反映する。そして、末端処理装置２０１は、同期待ち符号リスト１０００を初期化する。これにより、末端処理装置２０１は、中央処理装置２０３との間で、同一の内容の固定値符号表７００および変動値符号表８００を有するようにすることができる。このため、末端処理装置２０１は、中央処理装置２０３が、圧縮されたメタデータを伸長可能にすることができる。次に、図１８の説明に移行する。
【０１５４】
図１８において、末端処理装置２０１は、累積差分リスト１２００を参照し、累積差分の大小に基づいて、変動値フィールドのデータに割り当て可能な符号の数を増減させる。ここで、累積差分は、値が大きいほど、符号の整数列圧縮の効率化への寄与が少ないことを示し、かつ、値が小さいほど、符号の利用回数が少ないことを示している。
【０１５５】
このため、末端処理装置２０１は、ハッシュ値ごとの累積差分の分布１８００を生成する。末端処理装置２０１は、累積差分が閾値１８０１を超えるハッシュ値に対応するデータについては、割り当て可能な符号の数を増加させる。閾値１８０１は、例えば、３０である。また、末端処理装置２０１は、累積差分が閾値１８０２を下回るハッシュ値に対応するデータに割り当てられた符号を削除する。閾値１８０２は、例えば、３である。そして、末端処理装置２０１は、累積差分リスト１２００を初期化する。
【０１５６】
図１８の例では、末端処理装置２０１は、変動値符号表８００および累積差分リスト１２００において、累積差分「４０」であるハッシュ値「ｎｏｐｑｒｓｔ」に対応するデータに割り当て可能な符号の数を「１」から「２」に増加させる。また、末端処理装置２０１は、累積差分「４０」であるハッシュ値「ｎｏｐｑｒｓｔ」に対応する累積差分を「０」に初期化する。また、末端処理装置２０１は、変動値符号表８００および累積差分リスト１２００から、累積差分「１」であるハッシュ値「ｃｄｅｆｇｈｉ」に対応するレコードを削除する。
【０１５７】
例えば、末端処理装置２０１は、同じメタデータについての固定値フィールドにある符号と変動値フィールドにある符号との差分を小さくすることが、変動値フィールドにある符号を並べた符号列に対する整数列圧縮の効率化に寄与するという性質を利用している。このため、累積差分が大きい場合、現状で変動値フィールドにあるデータと置き換えている符号は、整数列圧縮の効率化に寄与しにくいと考えられる。これに対し、末端処理装置２０１は、データに新たに符号を割り当て可能にし、さらに整数列圧縮の効率化が図られるようにすることができる。
【０１５８】
また、符号は、符号化における利用回数が多いほど、変動値符号表８００を用いた辞書式圧縮の効率化に寄与することができると考えられる。また、現状、いずれかのデータに割り当てられた圧縮の効率化に寄与しない符号は、他のデータに割り当てられた場合には、辞書式圧縮の効率化、または、整数列圧縮の効率化に寄与することができる可能性がある。これに対し、末端処理装置２０１は、データに割り当てた符号を削除し、符号を利用可能にすることができ、辞書式圧縮の効率化、または、整数列圧縮の効率化が図られるようにすることができる。
【０１５９】
（登録処理手順）
次に、図１９を用いて、末端処理装置２０１が実行する、登録処理手順の一例について説明する。登録処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６０】
図１９は、登録処理手順の一例を示すフローチャートである。図１９において、末端処理装置２０１は、ＩｏＴデバイス２０２からデータを受信して保存する（ステップＳ１９０１）。そして、末端処理装置２０１は、受信したデータの格納場所と対応付けて受信したデータについてのメタデータを保存する（ステップＳ１９０２）。
【０１６１】
次に、末端処理装置２０１は、図２０に後述する第１払出処理を実行し、メタデータを符号化する（ステップＳ１９０３）。そして、末端処理装置２０１は、図２１に後述する第２払出処理を実行し、メタデータを符号化する（ステップＳ１９０４）。
【０１６２】
次に、末端処理装置２０１は、符号化したメタデータを送信待ちバッファに保存する（ステップＳ１９０５）。そして、末端処理装置２０１は、登録処理を終了する。
【０１６３】
（第１払出処理手順）
次に、図２０を用いて、末端処理装置２０１が実行する、第１払出処理手順の一例について説明する。第１払出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１６４】
図２０は、第１払出処理手順の一例を示すフローチャートである。図２０において、末端処理装置２０１は、メタデータに含まれる固定値フィールドのデータ全体のハッシュ値を算出する（ステップＳ２００１）。
【０１６５】
次に、末端処理装置２０１は、固定値符号表７００を参照し、算出したハッシュ値に対応する符号が存在するか否かを判定する（ステップＳ２００２）。ここで、ハッシュ値に対応する符号が存在しない場合（ステップＳ２００２：Ｎｏ）、末端処理装置２０１は、ステップＳ２００４の処理に移行する。一方で、ハッシュ値に対応する符号が存在する場合（ステップＳ２００２：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２００３の処理に移行する。
【０１６６】
ステップＳ２００３では、末端処理装置２０１は、固定値符号表７００を参照し、メタデータに含まれる固定値フィールドのデータを、算出したハッシュ値に対応する符号に置換する（ステップＳ２００３）。そして、末端処理装置２０１は、第１払出処理を終了する。
【０１６７】
ステップＳ２００４では、末端処理装置２０１は、メタデータに含まれる固定値フィールドのデータに対して新たな符号を割り当てる。末端処理装置２０１は、固定値フィールドのデータと、新たな符号と、処理種別として追加とを対応付けて、同期待ち符号リスト１０００に追加する（ステップＳ２００４）。
【０１６８】
次に、末端処理装置２０１は、メタデータに含まれる固定値フィールドのデータを０に置換し、メタデータに含まれる固定値フィールドのデータを、メタデータに含まれる文字列フィールドに移動する（ステップＳ２００５）。そして、末端処理装置２０１は、第１払出処理を終了する。
【０１６９】
（第２払出処理手順）
次に、図２１を用いて、末端処理装置２０１が実行する、第２払出処理手順の一例について説明する。第２払出処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１７０】
図２１は、第２払出処理手順の一例を示すフローチャートである。図２１において、末端処理装置２０１は、メタデータに含まれる変動値フィールドのデータ全体のハッシュ値を算出する（ステップＳ２１０１）。
【０１７１】
次に、末端処理装置２０１は、変動値符号表８００を参照し、算出したハッシュ値に対応する符号が存在するか否かを判定する（ステップＳ２１０２）。ここで、ハッシュ値に対応する符号が存在しない場合（ステップＳ２１０２：Ｎｏ）、末端処理装置２０１は、ステップＳ２１０９の処理に移行する。一方で、ハッシュ値に対応する符号が存在する場合（ステップＳ２１０２：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２１０３の処理に移行する。
【０１７２】
ステップＳ２１０３では、末端処理装置２０１は、変動値符号表８００を参照し、算出したハッシュ値に対応する符号の数が、算出したハッシュ値に対応する割り当て可能な符号の数未満であるか否かを判定する（ステップＳ２１０３）。ここで、割り当て可能な符号の数未満である場合（ステップＳ２１０３：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２１０６の処理に移行する。一方で、割り当て可能な符号の数以上である場合（ステップＳ２１０３：Ｎｏ）、末端処理装置２０１は、ステップＳ２１０４の処理に移行する。
【０１７３】
ステップＳ２１０４では、末端処理装置２０１は、変動値符号表８００を参照し、メタデータに含まれる変動値フィールドのデータを、算出したハッシュ値に対応する符号に置換する（ステップＳ２１０４）。次に、末端処理装置２０１は、変動値フィールドにある符号と、固定値フィールドにある符号との差分を算出し、累積差分リスト１２００のうち、算出したハッシュ値に対応する累積差分を更新する（ステップＳ２１０５）。そして、末端処理装置２０１は、ステップＳ２１１２の処理に移行する。
【０１７４】
ステップＳ２１０６では、末端処理装置２０１は、固定値フィールドにある符号に対応する余分範囲に、変動値フィールドのデータに割り当て可能な符号が存在するか否かを判定する（ステップＳ２１０６）。ここで、割り当て可能な符号が存在しない場合（ステップＳ２１０６：Ｎｏ）、末端処理装置２０１は、ステップＳ２１０８の処理に移行する。一方で、割り当て可能な符号が存在する場合（ステップＳ２１０６：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２１０７の処理に移行する。
【０１７５】
ステップＳ２１０７では、末端処理装置２０１は、メタデータに含まれる変動値フィールドのデータに対して新たな符号を割り当てる。末端処理装置２０１は、変動値フィールドのデータと、新たな符号と、処理種別として追加とを対応付けて、同期待ち符号リスト１０００に追加する（ステップＳ２１０７）。そして、末端処理装置２０１は、ステップＳ２１０８の処理に移行する。
【０１７６】
ステップＳ２１０８では、末端処理装置２０１は、メタデータに含まれる変動値フィールドのデータを、算出したハッシュ値に対応する符号に置換する（ステップＳ２１０８）。そして、末端処理装置２０１は、ステップＳ２１１２の処理に移行する。
【０１７７】
ステップＳ２１０９では、末端処理装置２０１は、固定値フィールドにある符号に対応する余分範囲に、変動値フィールドのデータに割り当て可能な符号が存在するか否かを判定する（ステップＳ２１０９）。ここで、割り当て可能な符号が存在しない場合（ステップＳ２１０９：Ｎｏ）、末端処理装置２０１は、ステップＳ２１１１の処理に移行する。一方で、割り当て可能な符号が存在する場合（ステップＳ２１０９：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２１１０の処理に移行する。
【０１７８】
ステップＳ２１１０では、末端処理装置２０１は、メタデータに含まれる変動値フィールドのデータに対して新たな符号を割り当てる。末端処理装置２０１は、変動値フィールドのデータと、新たな符号と、処理種別として追加とを対応付けて、同期待ち符号リスト１０００に追加する（ステップＳ２１１０）。そして、末端処理装置２０１は、ステップＳ２１１１の処理に移行する。
【０１７９】
ステップＳ２１１１では、末端処理装置２０１は、メタデータに含まれる変動値フィールドのデータを０に置換し、メタデータに含まれる変動値フィールドのデータを、メタデータに含まれる文字列フィールドに移動する（ステップＳ２１１１）。そして、末端処理装置２０１は、ステップＳ２１１２の処理に移行する。
【０１８０】
ステップＳ２１１２では、末端処理装置２０１は、メタデータに含まれるすべての変動値フィールドのデータを処理したか否かを判定する（ステップＳ２１１２）。ここで、未処理の変動値フィールドのデータがある場合（ステップＳ２１１２：Ｎｏ）、末端処理装置２０１は、ステップＳ２１０１の処理に戻る。一方で、すべての変動値フィールドのデータを処理している場合（ステップＳ２１１２：Ｙｅｓ）、末端処理装置２０１は、第２払出処理を終了する。
【０１８１】
（圧縮呼び出し処理手順）
次に、図２２を用いて、末端処理装置２０１が実行する、圧縮呼び出し処理手順の一例について説明する。圧縮呼び出し処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８２】
図２２は、圧縮呼び出し処理手順の一例を示すフローチャートである。図２２において、末端処理装置２０１は、デーモンから定期的に発行される開始指示を受信したか否かを判定する（ステップＳ２２０１）。ここで、開始指示を受信している場合（ステップＳ２２０１：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２２０３の処理に移行する。一方で、開始指示を受信していない場合（ステップＳ２２０１：Ｎｏ）、末端処理装置２０１は、ステップＳ２２０２の処理に移行する。
【０１８３】
ステップＳ２２０２では、末端処理装置２０１は、送信待ちバッファに蓄積されたメタデータの量が一定以上であるか否かを判定する（ステップＳ２２０２）。ここで、メタデータの量が一定未満である場合（ステップＳ２２０２：Ｎｏ）、末端処理装置２０１は、ステップＳ２２０１の処理に戻る。一方で、メタデータの量が一定以上である場合（ステップＳ２２０２：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２２０３の処理に移行する。
【０１８４】
ステップＳ２２０３では、末端処理装置２０１は、図２３に後述する圧縮処理を実行する（ステップＳ２２０３）。そして、末端処理装置２０１は、圧縮呼び出し処理を終了する。
【０１８５】
（圧縮処理手順）
次に、図２３を用いて、末端処理装置２０１が実行する、圧縮処理手順の一例について説明する。圧縮処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１８６】
図２３は、圧縮処理手順の一例を示すフローチャートである。図２３において、末端処理装置２０１は、共起確率リスト１１００のうち、送信待ちバッファに蓄積されたメタデータに含まれる固定値フィールドにある符号のペアに対応するハッシュ値のペアごとの共起確率を更新する（ステップＳ２３０１）。
【０１８７】
次に、末端処理装置２０１は、固定値フィールドにある符号を基準にして、送信待ちバッファに蓄積されたメタデータをソートする（ステップＳ２３０２）。そして、末端処理装置２０１は、ソートしたメタデータに含まれる固定値フィールドにある符号を並べた符号列に対して整数列圧縮を実施する（ステップＳ２３０３）。
【０１８８】
次に、末端処理装置２０１は、送信待ちバッファに蓄積されたメタデータのうち、変動値フィールドの数がｎ以上含まれるメタデータの数がｔｈ＿ｖを超えるようになるｎを算出する（ステップＳ２３０４）。そして、末端処理装置２０１は、ソートしたメタデータに含まれるｎ番目までの変動値フィールドのそれぞれの変動値フィールドにある符号を並べた符号列に対して整数列圧縮を実施する（ステップＳ２３０５）。
【０１８９】
次に、末端処理装置２０１は、ソートしたメタデータに含まれる文字列フィールドにあるデータに対して順序を維持したまま文字列圧縮を実施する（ステップＳ２３０６）。そして、末端処理装置２０１は、圧縮したメタデータを、中央処理装置２０３に送信する（ステップＳ２３０７）。そして、末端処理装置２０１は、圧縮処理を終了する。
【０１９０】
（同期呼び出し処理手順）
次に、図２４を用いて、末端処理装置２０１が実行する、同期呼び出し処理手順の一例について説明する。同期呼び出し処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１９１】
図２４は、同期呼び出し処理手順の一例を示すフローチャートである。図２４において、末端処理装置２０１は、デーモンから定期的に発行される開始指示を受信したか否かを判定する（ステップＳ２４０１）。ここで、開始指示を受信していない場合（ステップＳ２４０１：Ｎｏ）、末端処理装置２０１は、ステップＳ２４０１の処理に戻る。一方で、開始指示を受信している場合（ステップＳ２４０１：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２４０２の処理に移行する。
【０１９２】
ステップＳ２４０２では、末端処理装置２０１は、図２５に後述する同期処理を実行する（ステップＳ２４０２）。そして、末端処理装置２０１は、同期呼び出し処理を終了する。
【０１９３】
（同期処理手順）
次に、図２５を用いて、末端処理装置２０１が実行する、同期処理手順の一例について説明する。同期処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０１９４】
図２５は、同期処理手順の一例を示すフローチャートである。図２５において、末端処理装置２０１は、バージョン番号をインクリメントし、バージョン番号と対応付けた同期待ち符号リスト１０００を、中央処理装置２０３に送信する（ステップＳ２５０１）。
【０１９５】
次に、末端処理装置２０１は、中央処理装置２０３から更新完了応答を受信したか否かを判定する（ステップＳ２５０２）。ここで、更新完了応答を受信していない場合（ステップＳ２５０２：Ｎｏ）、末端処理装置２０１は、ステップＳ２５０２の処理に戻る。一方で、更新完了応答を受信している場合（ステップＳ２５０２：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２５０３の処理に移行する。
【０１９６】
ステップＳ２５０３では、末端処理装置２０１は、同期待ち符号リスト１０００を固定値符号表７００および変動値符号表８００に反映した後、同期待ち符号リスト１０００を初期化する（ステップＳ２５０３）。そして、末端処理装置２０１は、同期処理を終了する。
【０１９７】
（更新処理手順）
次に、図２６を用いて、中央処理装置２０３が実行する、更新処理手順の一例について説明する。更新処理は、例えば、図１３に示したＣＰＵ１３０１と、メモリ１３０２や記録媒体１３０５などの記憶領域と、ネットワークＩ／Ｆ１３０３とによって実現される。
【０１９８】
図２６は、更新処理手順の一例を示すフローチャートである。図２６において、中央処理装置２０３は、バージョン番号と対応付けた同期待ち符号リスト１０００を受信する（ステップＳ２６０１）。
【０１９９】
次に、中央処理装置２０３は、受信したバージョン番号を記録し、送信元の末端処理装置２０１に対応する固定値符号表７００および変動値符号表８００に、受信した同期待ち符号リスト１０００を反映する（ステップＳ２６０２）。そして、中央処理装置２０３は、更新完了応答を、送信元の末端処理装置２０１に送信する（ステップＳ２６０３）。そして、中央処理装置２０３は、更新処理を終了する。
【０２００】
（第１符号調整呼び出し処理手順）
次に、図２７を用いて、末端処理装置２０１が実行する、第１符号調整呼び出し処理手順の一例について説明する。第１符号調整呼び出し処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０２０１】
図２７は、第１符号調整呼び出し処理手順の一例を示すフローチャートである。図２７において、末端処理装置２０１は、デーモンから定期的に発行される開始指示を受信したか否かを判定する（ステップＳ２７０１）。ここで、開始指示を受信していない場合（ステップＳ２７０１：Ｎｏ）、末端処理装置２０１は、ステップＳ２７０１の処理に戻る。一方で、開始指示を受信している場合（ステップＳ２７０１：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２７０２の処理に移行する。
【０２０２】
ステップＳ２７０２では、末端処理装置２０１は、図２８に後述する第１符号調整処理を実行する（ステップＳ２７０２）。そして、末端処理装置２０１は、第１符号調整呼び出し処理を終了する。
【０２０３】
（第１符号調整処理手順）
次に、図２８を用いて、末端処理装置２０１が実行する、第１符号調整処理手順の一例について説明する。第１符号調整処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０２０４】
図２８は、第１符号調整処理手順の一例を示すフローチャートである。図２８において、末端処理装置２０１は、共起確率リスト１１００を参照する。末端処理装置２０１は、ハッシュ値のペアの共起確率が高いほど、ハッシュ値のペアのそれぞれのハッシュ値に割り当てられる符号の差分が小さくなるように、それぞれのハッシュ値に符号を割り当て直す（ステップＳ２８０１）。
【０２０５】
次に、末端処理装置２０１は、ハッシュ値と、ハッシュ値に割り当て直した符号と、処理種別として追加とを対応付けて、同期待ち符号リスト１０００に追加する（ステップＳ２８０２）。そして、末端処理装置２０１は、第１符号調整処理を終了する。
【０２０６】
（第２符号調整呼び出し処理手順）
次に、図２９を用いて、末端処理装置２０１が実行する、第２符号調整呼び出し処理手順の一例について説明する。第２符号調整呼び出し処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０２０７】
図２９は、第２符号調整呼び出し処理手順の一例を示すフローチャートである。図２９において、末端処理装置２０１は、デーモンから定期的に発行される開始指示を受信したか否かを判定する（ステップＳ２９０１）。ここで、開始指示を受信していない場合（ステップＳ２９０１：Ｎｏ）、末端処理装置２０１は、ステップＳ２９０１の処理に戻る。一方で、開始指示を受信している場合（ステップＳ２９０１：Ｙｅｓ）、末端処理装置２０１は、ステップＳ２９０２の処理に移行する。
【０２０８】
ステップＳ２９０２では、末端処理装置２０１は、図３０に後述する第２符号調整処理を実行する（ステップＳ２９０２）。そして、末端処理装置２０１は、第２符号調整呼び出し処理を終了する。
【０２０９】
（第２符号調整処理手順）
次に、図３０を用いて、末端処理装置２０１が実行する、第２符号調整処理手順の一例について説明する。第２符号調整処理は、例えば、図３に示したＣＰＵ３０１と、メモリ３０２や記録媒体３０５などの記憶領域と、ネットワークＩ／Ｆ３０３とによって実現される。
【０２１０】
図３０は、第２符号調整処理手順の一例を示すフローチャートである。図３０において、末端処理装置２０１は、累積差分リスト１２００を参照し、変動値符号表８００にあるハッシュ値ごとに割り当てられた符号の数により正規化した、変動値符号表８００にあるハッシュ値ごとの累積差分の分布を生成する（ステップＳ３００１）。
【０２１１】
次に、末端処理装置２０１は、分布に基づいて、変動値符号表８００において累積差分が一定以下であるハッシュ値に割り当てられた符号を削除する（ステップＳ３００２）。そして、末端処理装置２０１は、累積差分が一定以下であるハッシュ値と、削除した符号と、処理種別として削除とを対応付けて、同期待ち符号リスト１０００に追加する（ステップＳ３００３）。
【０２１２】
次に、末端処理装置２０１は、累積差分が一定以下であるハッシュ値に割り当て可能な符号の数を一定数減少させる（ステップＳ３００４）。そして、末端処理装置２０１は、分布に基づいて、変動値符号表８００において累積差分が一定以上であるハッシュ値に割り当て可能な符号の数を増加させる（ステップＳ３００５）。
【０２１３】
次に、末端処理装置２０１は、累積差分リスト１２００を初期化する（ステップＳ３００６）。そして、末端処理装置２０１は、第２符号調整処理を終了する。
【０２１４】
ここで、図１９〜図３０のそれぞれのフローチャートにおいて、一部ステップの処理の順序が入れ替えられてもよい。また、図１９〜図３０のそれぞれのフローチャートにおいて、一部ステップの処理が省略されてもよい。
【０２１５】
以上説明したように、情報処理装置１００によれば、全符号化対象データが共通して有する第１項目を有するデータを取得することができる。情報処理装置１００によれば、第１辞書を参照して、取得したデータに含まれる第１項目の第１項目データに割り当てられる符号と、第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、第１項目データに符号を割り当てることができる。情報処理装置１００によれば、第２辞書を参照して、取得したデータに含まれる第２項目の第２項目データに割り当てられる符号と、第１項目データに割り当てた符号との差分が小さくなるように、第２項目データに符号を割り当てることができる。情報処理装置１００によれば、割り当て結果に基づいて、取得したデータを圧縮または伸長する第１装置１１０との間で、第１辞書および第２辞書の内容について同期することができる。
【０２１６】
これにより、情報処理装置１００は、第１項目についての複数の項目データを符号化し、第１項目についての符号列に対して整数列圧縮を実施する場合に、整数列圧縮の効率化が図られるように、第１項目についての項目データに符号を割り当てることができる。また、情報処理装置１００は、第２項目についての複数の項目データを符号化し、第２項目についての符号列に対して整数列圧縮を実施した場合に、整数列圧縮の効率化が図られるように、第２項目についての項目データに符号を割り当てることができる。そして、情報処理装置１００は、第１装置１１０が第１辞書および第２辞書に基づいてデータを圧縮可能または伸長可能にすることができる。結果として、情報処理装置１００は、データを効率よく圧縮可能になり、第１装置１１０との間の通信量の低減化を図ることができる。
【０２１７】
情報処理装置１００によれば、第１項目を有するデータを取得する都度、第１装置１１０との間で同期した第１辞書および第２辞書に基づいて、取得したデータに含まれる第１項目の項目データおよび第２項目の項目データを符号に置き換えることができる。情報処理装置１００によれば、置換後のデータを蓄積し、蓄積した複数の置換後のデータを纏めて圧縮して第１装置１１０に送信することができる。これにより、情報処理装置１００は、データを効率よく圧縮することができる。
【０２１８】
情報処理装置１００によれば、第１装置１１０との間で同期した第１辞書を参照して、取得したデータに含まれる第１項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第１項目の項目データを、当該符号に置き換えることができる。情報処理装置１００によれば、取得したデータに含まれる第１項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第１項目の項目データを、所定符号に置き換えることができる。これにより、情報処理装置１００は、第１項目の項目データに割り当てられた符号がなくても、第１項目についての複数の項目データを符号化し、第１項目についての符号列に対して整数列圧縮を実施可能にすることができる。
【０２１９】
情報処理装置１００によれば、第１装置１１０との間で同期した第２辞書を参照して、取得したデータに含まれる第２項目の項目データに割り当てられた符号があれば、取得したデータに含まれる第２項目の項目データを、当該符号に置き換えることができる。情報処理装置１００によれば、取得したデータに含まれる第２項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第２項目の項目データを、所定符号に置き換えることができる。これにより、情報処理装置１００は、第２項目の項目データに割り当てられた符号がなくても、第２項目についての複数の項目データを符号化し、第２項目についての符号列に対して整数列圧縮を実施可能にすることができる。
【０２２０】
情報処理装置１００によれば、蓄積した複数の置換後のデータのそれぞれの置換後のデータに含まれる第１項目の項目データと置き換えられた符号を並べた符号列を圧縮することができる。情報処理装置１００によれば、蓄積した複数の置換後のデータのそれぞれの置換後のデータに含まれる第２項目の項目データと置き換えられた符号を並べた符号列を圧縮することができる。これにより、情報処理装置１００は、データを効率よく圧縮することができる。
【０２２１】
情報処理装置１００によれば、第１項目についての互いに異なる２つの項目データのうち、一方の項目データを含むデータと、他方の項目データを含むデータとが共に、単位時間あたりに取得される確率を算出することができる。情報処理装置１００によれば、算出した確率が高いほど、２つの項目データのそれぞれの項目データに割り当てられる符号の差分が小さくなるように、それぞれの項目データに符号を割り当てることができる。情報処理装置１００によれば、それぞれの項目データに符号を割り当てた結果に基づいて、第１装置１１０との間で、第１辞書の内容について同期することができる。これにより、情報処理装置１００は、さらに整数列圧縮の効率化が図られるように、第１項目についての項目データに符号を割り当て直すことができる。
【０２２２】
情報処理装置１００によれば、第１辞書を参照して、取得したデータに含まれる第１項目の項目データに割り当てられた符号がなければ、取得したデータに含まれる第１項目の項目データに符号を割り当てることができる。情報処理装置１００によれば、第２辞書を参照して、取得したデータに含まれる第２項目の項目データに割り当てられた符号の数が、取得したデータに含まれる第２項目の項目データに割り当て可能な符号の数未満か否かを判定することができる。情報処理装置１００によれば、割り当て可能な符号の数未満であれば、取得したデータに含まれる第２項目の項目データに符号を割り当てることができる。これにより、情報処理装置１００は、同じ項目データに割り当てられる符号の数を抑制することができる。
【０２２３】
情報処理装置１００によれば、第１項目を有するデータを取得する都度、取得したデータに含まれる第１項目の項目データと置き換えられた符号と、取得したデータに含まれる第２項目の項目データと置き換えられた符号との差分を算出することができる。情報処理装置１００によれば、第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定以上であれば、いずれかの項目データに割り当て可能な符号の数を増加させることができる。これにより、情報処理装置１００は、さらに整数列圧縮の効率化が図られるように、第２項目についての項目データに、新たに符号を割り当て可能にすることができる。
【０２２４】
情報処理装置１００によれば、第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定未満であれば、第２辞書から、いずれかの項目データに割り当てられた符号を削除することができる。これにより、情報処理装置１００は、利用回数の比較的少ない符号を削除し、利用可能な符号の数を増加させることができる。
【０２２５】
情報処理装置１００によれば、第１項目の項目データに符号を割り当てたこと、または、第２項目の項目データに符号を割り当てたことに応じて、割り当て結果を蓄積することができる。情報処理装置１００によれば、蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期することができる。これにより、情報処理装置１００は、同期にかかる通信量の低減化を図ることができる。
【０２２６】
情報処理装置１００によれば、一定数以上のデータを取得するまでに蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期することができる。これにより、情報処理装置１００は、同期にかかる通信量の低減化を図ることができる。
【０２２７】
情報処理装置１００によれば、一定時間のうちで蓄積した割り当て結果に基づいて、第１装置１１０との間で、第１辞書および第２辞書の内容について同期することができる。これにより、情報処理装置１００は、同期にかかる通信量の低減化を図ることができる。
【０２２８】
情報処理装置１００によれば、第１項目が、複数の項目を含むようにすることができる。これにより、情報処理装置１００は、複数の項目の項目データを纏めて符号化することができる。
【０２２９】
情報処理装置１００によれば、取得するデータとして、メタデータを利用することができる。これにより、情報処理装置１００は、メタデータの通信に適用することができる。
【０２３０】
情報処理装置１００によれば、符号として、整数を利用することができる。これにより、情報処理装置１００は、整数列圧縮を実施可能にすることができる。
【０２３１】
なお、本実施の形態で説明した分散処理システムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した分散処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した分散処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２３２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２３３】
（付記１）全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、取得した前記データを圧縮または伸長する第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、
制御部を有することを特徴とする情報処理装置。
【０２３４】
（付記２）前記制御部は、前記第１項目を有するデータを取得する都度、前記第１装置との間で同期した前記第１辞書および前記第２辞書に基づいて、取得した前記データに含まれる前記第１項目の項目データおよび前記第２項目の項目データを符号に置き換えて、置換後のデータを蓄積し、
蓄積した複数の前記置換後のデータを纏めて圧縮して前記第１装置に送信する、ことを特徴とする付記１に記載の情報処理装置。
【０２３５】
（付記３）前記制御部は、前記第１項目を有するデータを取得する都度、前記第１装置との間で同期した前記第１辞書を参照して、取得した前記データに含まれる前記第１項目の項目データに割り当てられた符号があれば、取得した前記データに含まれる前記第１項目の項目データを、当該符号に置き換え、取得した前記データに含まれる前記第１項目の項目データに割り当てられた符号がなければ、取得した前記データに含まれる前記第１項目の項目データを、所定符号に置き換える、ことを特徴とする付記２に記載の情報処理装置。
【０２３６】
（付記４）前記制御部は、前記第１項目を有するデータを取得する都度、前記第１装置との間で同期した前記第２辞書を参照して、取得した前記データに含まれる前記第２項目の項目データに割り当てられた符号があれば、取得した前記データに含まれる前記第２項目の項目データを、当該符号に置き換え、取得した前記データに含まれる前記第２項目の項目データに割り当てられた符号がなければ、取得した前記データに含まれる前記第２項目の項目データを、所定符号に置き換える、ことを特徴とする付記２または３に記載の情報処理装置。
【０２３７】
（付記５）前記制御部は、蓄積した複数の前記置換後のデータのそれぞれの前記置換後のデータに含まれる前記第１項目の項目データと置き換えられた符号を並べた符号列を圧縮し、蓄積した複数の前記置換後のデータのそれぞれの前記置換後のデータに含まれる前記第２項目の項目データと置き換えられた符号を並べた符号列を圧縮する、ことを特徴とする付記２〜４のいずれか一つに記載の情報処理装置。
【０２３８】
（付記６）前記制御部は、前記第１項目についての互いに異なる２つの項目データのうち、一方の項目データを含むデータと、他方の項目データを含むデータとが共に、単位時間あたりに取得される確率が高いほど、前記２つの項目データのそれぞれの項目データに割り当てられる符号の差分が小さくなるように、前記それぞれの項目データに符号を割り当て、
前記それぞれの項目データに符号を割り当てた結果に基づいて、前記第１装置との間で、前記第１辞書の内容について同期する、ことを特徴とする付記２〜５のいずれか一つに記載の情報処理装置。
【０２３９】
（付記７）前記制御部は、前記第１項目を有するデータを取得する都度、前記第１辞書を参照して、取得した前記データに含まれる前記第１項目の項目データに割り当てられた符号がなければ、取得した前記データに含まれる前記第１項目の項目データに符号を割り当て、
前記第１項目を有するデータを取得する都度、前記第２辞書を参照して、取得した前記データに含まれる前記第２項目の項目データに割り当てられた符号の数が、取得した前記データに含まれる前記第２項目の項目データに割り当て可能な符号の数未満であれば、取得した前記データに含まれる前記第２項目の項目データに符号を割り当てる、ことを特徴とする付記２〜６のいずれか一つに記載の情報処理装置。
【０２４０】
（付記８）前記制御部は、前記第１項目を有するデータを取得する都度、取得した前記データに含まれる第１項目の項目データと置き換えられた符号と、取得した前記データに含まれる前記第２項目の項目データと置き換えられた符号との差分を算出し、
前記第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定以上であれば、前記いずれかの項目データに割り当て可能な符号の数を増加させる、ことを特徴とする付記７に記載の情報処理装置。
【０２４１】
（付記９）前記制御部は、前記第２項目のいずれかの項目データについて算出した差分の合計値の大きさが一定未満であれば、前記第２辞書から、前記いずれかの項目データに割り当てられた符号を削除する、ことを特徴とする付記８に記載の情報処理装置。
【０２４２】
（付記１０）前記制御部は、前記第１項目の項目データに符号を割り当てたこと、または、前記第２項目の項目データに符号を割り当てたことに応じて、割り当て結果を蓄積し、
蓄積した割り当て結果に基づいて、前記第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、ことを特徴とする付記７〜９のいずれか一つに記載の情報処理装置。
【０２４３】
（付記１１）前記制御部は、一定数以上のデータを取得するまでに蓄積した割り当て結果に基づいて、前記第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、ことを特徴とする付記１０に記載の情報処理装置。
【０２４４】
（付記１２）前記制御部は、一定時間のうちで蓄積した割り当て結果に基づいて、前記第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、ことを特徴とする付記１０または１１に記載の情報処理装置。
【０２４５】
（付記１３）前記第１項目は、複数の項目を含む、ことを特徴とする付記１〜１２のいずれか一つに記載の情報処理装置。
【０２４６】
（付記１４）前記データは、メタデータである、ことを特徴とする付記１〜１３のいずれか一つに記載の情報処理装置。
【０２４７】
（付記１５）前記符号は、整数である、ことを特徴とする付記１〜１４のいずれか一つに記載の情報処理装置。
【０２４８】
（付記１６）情報処理装置と、前記情報処理装置と通信可能な第１装置とを含む分散処理システムであって、
前記情報処理装置は、
全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、前記第１装置との間で、前記第１辞書および前記第２辞書の内容について同期し、
前記第１装置は、
前記情報処理装置との間で同期した前記第１辞書および前記第２辞書の内容を記憶する、
ことを特徴とする分散処理システム。
【０２４９】
（付記１７）コンピュータに、
全符号化対象データが共通して有する第１項目を有するデータを取得し、
前記第１項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第１辞書を参照して、取得した前記データに含まれる前記第１項目の第１項目データに割り当てられる符号と、前記第１項目の他の項目データに割り当てられた符号との差分が小さくなるように、前記第１項目データに、前記第１項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
前記第１項目とは異なる第２項目の項目データと、当該項目データに割り当てられた符号とを対応付けて表す第２辞書を参照して、取得した前記データに含まれる前記第２項目の第２項目データに割り当てられる符号と、前記第１項目データに割り当てた符号との差分が小さくなるように、前記第２項目データに、前記第２項目の他の項目データに割り当てられた符号と重複しない符号を割り当て、
割り当て結果に基づいて、取得した前記データを圧縮または伸長する第１装置との間で、前記第１辞書および前記第２辞書の内容について同期する、
処理を実行させることを特徴とする分散処理プログラム。
【符号の説明】
【０２５０】
１００  情報処理装置
１０１，１１１，１４００，１４１０  記憶部
１１０  第１装置
１２０，１３０，１４０  データ
１２１  第１項目データ
１２２  第２項目データ
１３１，１３２，１４１，１４２  項目データ
２００  分散処理システム
２０１  末端処理装置
２０２  ＩｏＴデバイス
２０３  中央処理装置
２１０  ネットワーク
３００，１３００  バス
３０１，１３０１  ＣＰＵ
３０２，１３０２  メモリ
３０３，１３０３  ネットワークＩ／Ｆ
３０４，１３０４  記録媒体Ｉ／Ｆ
３０５，１３０５  記録媒体
４００，５００，１５０１，１５０２  メタデータ
６００  バージョン情報
７００  固定値符号表
８００  変動値符号表
９００  対応関係テーブル
１０００  同期待ち符号リスト
１１００  共起確率リスト
１２００  累積差分リスト
１４０１  取得部
１４０２  割当部
１４０３  同期部
１４０４  圧縮部
１４０５  出力部
１４１１  更新部
１４１２  伸長部
１６００，１６０１  ファイル
１６０２  バイナリデータ
１８００  分布
１８０１，１８０２  閾値
【図１】
2020021177.tif 000003
【図２】
2020021177.tif 000004
【図３】
2020021177.tif 000005
【図４】
2020021177.tif 000006
【図５】
2020021177.tif 000007
【図６】
2020021177.tif 000008
【図７】
2020021177.tif 000009
【図８】
2020021177.tif 000010
【図９】
2020021177.tif 000011
【図１０】
2020021177.tif 000012
【図１１】
2020021177.tif 000013
【図１２】
2020021177.tif 000014
【図１３】
2020021177.tif 000015
【図１４】
2020021177.tif 000016
【図１５】
2020021177.tif 000017
【図１６】
2020021177.tif 000018
【図１７】
2020021177.tif 000019
【図１８】
2020021177.tif 000020
【図１９】
2020021177.tif 000021
【図２０】
2020021177.tif 000022
【図２１】
2020021177.tif 000023
【図２２】
2020021177.tif 000024
【図２３】
2020021177.tif 000025
【図２４】
2020021177.tif 000026
【図２５】
2020021177.tif 000027
【図２６】
2020021177.tif 000028
【図２７】
2020021177.tif 000029
【図２８】
2020021177.tif 000030
【図２９】
2020021177.tif 000031
【図３０】
2020021177.tif 000032