(57)【特許請求の範囲】
【請求項１】
コンピュータに、
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出し、
該抽出したカラム情報を用いて、前記テーブルの符号化種別に対応した部分符号化データであって、前記処理対象の項目名のカラムに対応した部分符号化データを生成する
処理を実行させることを特徴とする符号化処理プログラム。
【請求項２】
前記生成する処理は、前記カラム情報を用いて、前記テーブルの項目名と当該項目名の符号化種別のそれぞれから、前記処理対象の項目名のカラムに対応する部分符号化データを抽出し、処理命令の条件に対応した前記部分符号化データを含む部分符号化テーブルを生成する
処理を実行させることを特徴とする請求項１に記載の符号化処理プログラム。
【請求項３】
前記生成する処理は、前記カラム情報を用いて、複数のテーブルのそれぞれの項目名のカラムを符号化した複数の符号化テーブルのそれぞれから、前記処理対象の項目名のカラムに対応する部分符号化データを抽出し、抽出した部分符号化データから、処理命令の条件であって範囲が指定された条件に対応した部分符号化データを部分符号化テーブルに書き込む
処理を実行させることを特徴とする請求項１に記載の符号化処理プログラム。
【請求項４】
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出する抽出部と、
前記抽出部によって抽出されたカラム情報を用いて、前記テーブルの符号化種別に対応した部分符号化データであって、前記処理対象の項目名のカラムに対応した部分符号化データを生成する生成部と、
を有することを特徴とする符号化処理装置。
【請求項５】
コンピュータが、
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出し、
該抽出したカラム情報を用いて、前記テーブルの符号化種別に対応した部分符号化データであって、前記処理対象の項目名のカラムに対応した部分符号化データを生成する
各処理を実行することを特徴とする符号化処理方法。
【請求項６】
コンピュータに、
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出し、
該抽出したカラム情報を用いて、前記テーブルの符号化種別に対応する復号化方法を用いた部分復号化データであって、前記処理対象の項目名のカラムに対応した部分復号化データを生成する
処理を実行させることを特徴とする復号化処理プログラム。
【請求項７】
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出する抽出部と、
前記抽出部によって抽出されたカラム情報を用いて、前記テーブルの符号化種別に対応する復号化方法を用いた部分復号化データであって、前記処理対象の項目名のカラムに対応した部分復号化データを生成する復号化部と、
を有することを特徴とする復号化処理装置。
【請求項８】
コンピュータが、
データがデリミタで区切られたカラムの項目名と当該項目名の符号化種別を対応付けたテーブルに基づいて、処理対象の項目名のカラムに関するカラム情報を抽出し、
該抽出したカラム情報を用いて、前記テーブルの符号化種別に対応する復号化方法を用いた部分復号化データであって、前記処理対象の項目名のカラムに対応した部分復号化データを生成する
処理を実行させることを特徴とする復号化処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化処理プログラムや復号化処理プログラム等に関する。
【背景技術】
【０００２】
ＥＴＬ（Extract，Transform，Load）の処理では、複数のテーブルに存在するデータを参照する処理が行われる。例えば、専用のＥＴＬツールが、複数のテーブルから対象のデータを参照する。各テーブルのデータは、ＣＳＶ（Comma−Separated  Values）形式などの汎用ファイルに記述されている。ＣＳＶ形式でのデータの記述は、データをデリミタで区切る。デリミタの一例として、カンマ（，）が挙げられる。
【０００３】
ＣＳＶ形式で記述されたファイルの圧縮アルゴリズムとしては、ＬＺ７７を用いたＺＩＰが主流である。ＺＩＰでは、圧縮対象の文字列に対して、スライド窓を用いて最長一致の文字列を判定し、圧縮データを生成する。スライド窓を用いた最長一致文字列の判定は、バイト単位で行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１０１４４２号公報
【特許文献２】特開２０１５−７５９７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、デリミタで区切られたＣＳＶ形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合、圧縮ファイルのデータを先頭から復号化する必要があるという問題がある。
【０００６】
例えば、ＺＩＰでは、圧縮処理は、スライド窓を用いて最長一致の文字列を判定するので、最長一致の文字列から生成される圧縮符号は、データの区切りを意識しない符号となる。すなわち、最長一致の文字列から生成される圧縮符号は、デリミタを跨いだデータを圧縮した符号となる。つまり、圧縮処理とデリミタで区切られたデータの参照処理とは、共通性がない。したがって、デリミタで区切られたＣＳＶ形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合、対象の圧縮ファイルのデータをスライド窓を用いて最長一致文字列を復元し、先頭から復号化する必要がある。
【０００７】
なお、上記課題は、ＥＴＬの処理だけではなく、デリミタで区切られたＣＳＶ形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合の処理にも同様に生じる課題である。
【０００８】
１つの側面では、デリミタで区切られたＣＳＶ形式のデータを符号化した符号化ファイルに対するデータの参照であっても、復号化を行わずに、データを参照や複写や置換などを行うことを目的とする。また、１つの側面では、デリミタで区切られたＣＳＶ形式のデータを符号化した符号化ファイルに対するデータの参照であっても、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、符号化処理プログラムは、コンピュータに、デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、前記処理対象カラム情報を用いて、複数の前記符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する、処理を実行させる。第２の案では、復号化処理プログラムは、コンピュータに、デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する所定の処理対象の復号化処理命令に基づいて、前記処理対象のカラムに関する処理対象カラム情報を抽出し、前記処理対象カラム情報を用いて、前記符号化テーブルから、処理対象のカラムに対応する符号を抽出し、抽出した符号を部分符号化用のオートマトンを用いて復号化する、処理を実行させる。
【発明の効果】
【００１０】
本発明の一態様によれば、デリミタで区切られたＣＳＶ形式のデータを符号化した符号化ファイルに対するデータの参照であっても、復号化を行わずに、データを参照や複写や置換などを行うことができる。また、一態様によれば、デリミタで区切られたＣＳＶ形式のデータを符号化した符号化ファイルに対するデータの参照であっても、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る符号化と復号化処理の一例を示す図である。
【図２】図２は、実施例１に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、実施例１に係るテーブル定義の一例を示す図である。
【図４】図４は、実施例１に係る静的辞書および動的辞書の一例を示す図である。
【図５】図５は、部分復号化用のオートマトンの一例を示す図である。
【図６】図６は、実施例１に係る符号化と復号化処理の流れの一例を示す図である。
【図７Ａ】図７Ａは、実施例１に係る符号化処理の処理手順を示すフローチャート（１）である。
【図７Ｂ】図７Ｂは、実施例１に係る符号化処理の処理手順を示すフローチャート（２）である。
【図８】図８は、実施例１に係る復号化処理の処理手順を示すフローチャートである。
【図９】図９は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。
【図１０】図１０は、タイトル項目の動的辞書への登録の一例を示す図である。
【図１１】図１１は、実施例２に係る第２の抽出処理の一例を示す図である。
【図１２】図１２は、実施例２に係る符号化とＥＴＬ処理の流れの一例を示す図である。
【図１３】図１３は、実施例２に係る符号化処理の処理手順を示すフローチャートである。
【図１４】図１４は、実施例２に係るＥＴＬ処理の処理手順を示すフローチャートである。
【図１５】図１５は、コンピュータのハードウェア構成例を示す図である。
【図１６】図１６は、コンピュータで動作するプログラムの構成例を示す図である。
【図１７】図１７は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する符号化、復号化処理プログラム、符号化、復号化処理装置および符号化、復号化処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
図１は、実施例１に係る符号化と復号化処理の一例を示す図である。
【００１４】
図１に示すように、符号化処理は、テーブルにおいて、カンマ（，）で区切られた各レコードのカラムが示すデータをカラムごとに符号化する。
【００１５】
ここでいうテーブルは、例えば、リレーショナルデータベース（ＲＤＢ）で用いられるテーブルのことをいい、ＣＳＶ形式で構成される。１レコードをカンマで区切られたそれぞれのデータは、それぞれの項目（フィールド）に対応付けられる。それぞれの項目は、テーブルの各列のタイトルに相当し、それぞれのカラムに対応する。このようなテーブルの定義（テーブル定義）には、項目と、項目のデータを符号化する際に用いる符号化方法とが対応付けられる。符号化処理は、テーブルにおいてテーブル定義に設定された項目ごとの符号化方法に基づいて、それぞれの項目が示すデータを符号化する。なお、カンマは、デリミタの一例である。
【００１６】
ここで、符号化方法の一例について説明する。出現頻度が高い項目の場合には、静的辞書を用いた符号化方法を適用する。出現頻度が高い項目の一例として、主キーや外部参照キーが挙げられる。静的辞書とは、一般的には、英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。ここでいう静的辞書とは、出現頻度が高い項目の項目値に対して、より短い符号を割り当てた辞書のことをいう。静的辞書には、それぞれの項目値に対応する符号（静的コード）をあらかじめ登録する。これに対して、出現頻度が低い項目の場合には、動的辞書を用いた符号化方法を適用する。動的辞書とは、静的辞書に登録されていない項目値と、動的に付された動的コード（符号）とを対応付けた辞書である。静的辞書に登録されていない項目値には、一例として、主キーや外部参照キーと異なるキーなどのタイトル項目、すなわち、タイムスタンプ、住所、アドレスなどが挙げられる。動的辞書には、項目値が出現するごとに、項目値が動的コードに対応付けられて登録される。加えて、数値を示す項目の場合には、数値バイナリ変換を用いた符号化方法を適用する。なお、上記で説明した符号化方法は、一例であって、これに限定されることはない。
【００１７】
一例として、項目名を「ＵｓｅｒＩＤ」とするカラムは、０である。項目名を「ＴｉｍｅＳｔａｍｐ」とするカラムは、１である。項目名を「ＩｔｅｍＩＤ」とするカラムは、２である。項目名を「ＩｔｅｍＮａｍｅ」とするカラムは、３である。項目名を「ｎｕｍ」とするカラムは、４である。項目名を「ＳｈｏｐＩＤ」とするカラムは、５である。そして、１レコード目には、０カラム目に「Ｕ００１」のデータが設定されている。１カラム目に「２０１５／０４／０１  １１：００：００」のデータが設定されている。２カラム目に「Ｉ０００１」のデータが設定されている。３カラム目に「ｉｔｅｍＮａｍｅ１」のデータが設定されている。４カラム目に「２」のデータが設定されている。５カラム目に「Ｓ００１」のデータが設定されている。
【００１８】
符号化処理は、「ＵｓｅｒＩＤ」の符号化方法に基づいて、「ＵｓｅｒＩＤ」のデータ「Ｕ００１」を符号化する。この結果、「Ｕ００１」は、「００ｈ」に符号化される。符号化処理は、「ＴｉｍｅＳｔａｍｐ」の符号化方法に基づいて、「ＴｉｍｅＳｔａｍｐ」のデータ「２０１５／０４／０１  １１：００：００」を符号化する。この結果、「２０１５／０４／０１  １１：００：００」は、「ＦＦ３００１０３ｈ」に符号化される。符号化処理は、「ＩｔｅｍＩＤ」の符号化方法に基づいて、「ＩｔｅｍＩＤ」のデータ「Ｉ０００１」を符号化する。この結果、「Ｉ０００１」は、「１４ｈ」に符号化される。符号化処理は、「ＩｔｅｍＮａｍｅ」の符号化方法に基づいて、「ＩｔｅｍＮａｍｅ」のデータ「ｉｔｅｍＮａｍｅ１」を符号化する。この結果、「ｉｔｅｍＮａｍｅ１」は、「Ｆ０００００ｈ」に符号化される。符号化処理は、「ｎｕｍ」の符号化方法に基づいて、「ｎｕｍ」のデータ「２」を符号化する。この結果、「２」は、「４０００００００ｈ」に符号化される。符号化処理は、「ＳｈｏｐＩＤ」の符号化方法に基づいて、「ＳｈｏｐＩＤ」のデータ「Ｓ００１」を符号化する。この結果、「Ｓ００１」は、「６０００ｈ」に符号化される。
【００１９】
復号化処理は、符号化テーブルに対する処理命令を受け付けると、受け付けた処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。例えば、処理命令がテーブルの項目名として「ｎｕｍ」および「ＳｈｏｐＩＤ」のデータを参照する命令であるとする。すると、復号化処理は、テーブル定義から、処理対象の項目名を示す「ｎｕｍ」および「ＳｈｏｐＩＤ」に対応付けられたそれぞれのカラム情報を抽出する。一例として、「ｎｕｍ」のカラム情報には、カラムとして「４」が含まれる。「ＳｈｏｐＩＤ」に対応付けられたカラム情報には、カラムとして「５」が含まれる。
【００２０】
また、復号化処理は、抽出した処理対象カラム情報を用いて、符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する。例えば、復号化処理は、「ｎｕｍ」に関する処理対象カラム情報を用いて「ｎｕｍ」のカラム「４」を取得し、符号化テーブルから、カラム「４」に対応した符号化データを抽出する。復号化処理は、抽出した符号化データを部分符号化テーブルに書き込む。そして、復号化処理は、「ＳｈｏｐＩＤ」に関する処理対象カラム情報を用いて「ＳｈｏｐＩＤ」のカラム「５」を取得し、符号化テーブルから、カラム「５」に対応した符号化データを抽出する。復号化処理は、抽出した符号化データを部分符号化テーブルに書き込む。一例として、符号化テーブルには、１列目に、カラム「４」の符号化データ「４００００００００ｈ  ３ｆ８０００００ｈ  ・・・」が書き込まれる。そして、部分符号化テーブルには、２列目に、カラム「５」の符号化データ「６０００ｈ  ６０００ｈ  ・・・」が書き込まれる。
【００２１】
ここで、復号化処理は、復号化の処理命令を受け付けると、生成された部分符号化テーブルの符号化データを復号する。すなわち、復号化処理は、符号化テーブルに対する処理命令で抽出された符号化データを部分復号化する。例えば、復号化処理は、「ｎｕｍ」の復号化方法に基づいて、「ｎｕｍ」の符号化データを復号化する。復号化処理は、「ＳｈｏｐＩＤ」の復号化方法に基づいて、「ＳｈｏｐＩＤ」の符号化データを復号化する。一例として、「ｎｕｍ」の復号化データとして「２  １  １  ３」、「ＳｈｏｐＩＤ」の復号化データとして「Ｓ００１  Ｓ００１  Ｓ００２  Ｓ００２」が出力される。
【００２２】
このようにして、符号化と復号化処理は、カンマで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照であっても、復号化処理を行わずに、データを参照することができる。また、符号化と復号化処理は、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することができる。
【００２３】
［実施例１に係る情報処理装置の構成］
次に、図２を参照して、実施例１に係る符号化と復号化処理を実行する情報処理装置１の構成について説明する。図２は、実施例１に係る情報処理装置の構成を示す機能ブロック図である。図２に示すように、情報処理装置１は、符号化部１０、復号化部２０および記憶部３０を有する。
【００２４】
符号化部１０および復号化部２０を含む制御部（図示せず）は、図１に示した符号化と復号化処理を実行する処理部である。制御部は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部は、例えば、ＡＳＩＣやＦＰＧＡなどの集積回路の電子回路に対応する。または、制御部は、ＣＰＵやＭＰＵなどの電子回路に対応する。
【００２５】
記憶部３０は、例えばフラッシュメモリやＦＲＡＭ（登録商標）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部３０は、テーブル定義３１、静的辞書３２および動的辞書３３を有する。
【００２６】
テーブル定義３１は、テーブルを構成する項目ごとに、カラムと符号化方法との対応付けを定義する。テーブル定義３１は、複数のテーブルに対して定義する。静的辞書３２は、出現頻度が高い項目の項目値に対して、より短い符号を割り当てた辞書のことをいう。動的辞書３３は、静的辞書に登録されていない項目値と、動的に付された動的コード（符号）と、を対応付けた辞書である。なお、テーブル定義３１、静的辞書３２および静的辞書３３の詳細は、後述する。
【００２７】
［テーブル定義の一例］
ここで、テーブル定義３１の一例を、図３を参照して説明する。図３は、実施例１に係るテーブル定義の一例を示す図である。図３に示すように、テーブル定義３１は、テーブル名３１ａおよび項目名３１ｂごとのオフセット／符号化種別を対応付けて記憶する。オフセットは、符号３１ｃで表わす。符号化種別は、符号３１ｄで表わす。テーブル名３１ａは、テーブルの名称である。項目名３１ｂは、テーブルを構成する項目の名称である。オフセット３１ｃは、テーブルを構成する項目のテーブル上の位置情報である。つまり、オフセット３１ｃは、カラムに対応する。符号化種別３１ｄは、符号化方法に対応する種別である。一例として、符号化種別３１ｄが「０ｈ」である場合には、符号化方法が静的辞書３２を用いて符号化することを表す。符号化種別３１ｄが「１ｈ」である場合には、符号化方法が動的辞書３３を用いて符号化することを表す。符号化種別３１ｄが「２ｈ」である場合には、ｉｎｔ型の数値バイナリ変換を用いて符号化することを表す。符号化種別３１ｄが「３ｈ」である場合には、ｆｌｏａｔ型の数値バイナリ変換を用いて符号化することを表す。符号化種別３１ｄが「４ｈ」である場合には、ｄｏｕｂｌｅ型の数値バイナリ変換を用いて符号化することを表す。符号化種別３１ｄが「Ｆ０ｈ」以上である場合には、符号化方法がタイトル項目の符号化であって動的辞書３３を用いて符号化することを表す。
【００２８】
一例として、テーブル名３１ａが「注文テーブル」である場合を説明する。項目名３１ｂが「ＯｒｄｅｒＩＤ」の場合には、オフセット３１ｃとして「０」、符号化種別３１ｄとして「０ｈ」と記憶している。すなわち、「ＯｒｄｅｒＩＤ」は、カラムを０とし、且つ、符号化方法を、静的辞書３２を用いて符号化することを意味する。項目名３１ｂが「ＴｉｍｅＳｔａｍｐ」の場合には、オフセット３１ｃとして「１」、符号化種別３１ｄとして「Ｆ３ｈ」と記憶している。すなわち、「ＴｉｍｅＳｔａｍｐ」は、カラムを１とし、且つ、符号化方法を、タイトル項目の場合の符号化であって動的辞書３３を用いて符号化することを意味する。項目名３１ｂが「ＩｔｅｍＮａｍｅ」の場合には、オフセット３１ｃとして「３」、符号化種別３１ｄとして「１ｈ」と記憶している。すなわち、「ＩｔｅｍＮａｍｅ」は、カラムを３とし、且つ、符号化方法を、動的辞書３３を用いて符号化することを意味する。項目名３１ｂが「ｎｕｍ」の場合には、オフセット３１ｃとして「４」、符号化種別３１ｄとして「３ｈ」と記憶している。すなわち、「ｎｕｍ」は、カラムを４とし、且つ、符号化方法を、ｆｌｏａｔ型の数値バイナリ変換を用いて符号化することを意味する。
【００２９】
図２に戻って、符号化部１０は、テーブルにおいて、カンマで区切られたカラムが示すデータを各レコードのカラムごとに符号化する。例えば、符号化部１０は、符号化対象のテーブルを読み出す。符号化部１０は、カンマで区切られた文字列を処理対象として選択する。符号化部１０は、選択した文字列に対応する項目（カラム）の処理対象カラム情報をテーブル定義３１から読み出す。符号化部１０は、読み出した処理対象カラム情報に含まれる符号化種別３１ｄに基づいて、選択した文字列を符号化する。符号化部１０は、符号化した符号コードを符号化バッファに書き込む。符号化部１０は、全てのデータを符号化すると、符号化バッファを符号化テーブルに書き込む。
【００３０】
復号化部２０は、抽出部２１、編集部２２および部分復号化部２３を有する。
【００３１】
抽出部２１は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルから処理対象のカラムのデータを抽出する。例えば、抽出部２１は、処理命令からテーブル名、参照項目、集計項目および条件項目の項目名を取得する。抽出部２１は、テーブル定義３１から、取得したテーブル名のテーブルごとに、取得した参照項目、集計項目および条件項目のうち処理命令に存在する項目の処理対象カラム情報を抽出する。そして、抽出部２１は、対象の項目の処理対象カラム情報のオフセット３１ｃを用いて、テーブルごとの符号化テーブルから、対象の項目の項目値をレコード単位で抽出する。そして、抽出部２１は、符号化テーブルから抽出された項目値をレコード単位で符号化ファイルに書き込む。符号化ファイルは、取得したテーブル名が複数ある場合には、それぞれのテーブル名に対応する符号化テーブルごとに生成される。
【００３２】
編集部２２は、抽出部２１によって抽出された処理対象のカラム（項目）のデータ（項目値）を、処理命令に合わせて編集する。例えば、編集部２２は、処理命令が条件項目を用いた抽出／結合条件に合致する参照項目のデータを参照する命令である場合には、抽出部２１によって抽出された処理対象の項目の項目値から、抽出／結合条件に合致する参照項目の項目値を抽出する。結合条件とは、一例として、複数のテーブルをそれぞれのテーブルの条件項目を用いて結合する条件（ｊｏｉｎ・・・ｏｎ・・・）のことをいう。抽出条件とは、一例として、条件項目を用いて参照項目を抽出する条件（ｗｈｅｒｅ・・・）のことをいう。そして、編集部２２は、抽出した項目値を部分符号化ファイルに格納する。加えて、編集部２２は、処理命令が集計項目を含む場合には、抽出部２１によって抽出された集計に関わる参照項目の項目値を、後述する部分復号化部２３に復号化させる。そして、編集部２２は、符号化ファイルを結合条件で結合し、集約条件で集計する。ここでいう集約条件とは、集計する際に用いられる条件であって条件項目を用いて集計（集約）する条件（ｇｒｏｕｐ  ｂｙ・・・）のことをいう。そして、編集部２２は、集計値を符号化し、符号化した集計値を他の参照項目の項目値とともに部分符号化ファイルに格納する。なお、符号化処理は、符号化部１０と同様の手法で行えば良い。
【００３３】
部分復号化部２３は、依頼された項目の項目値だけを復号化する。すなわち、部分復号化部２３は、符号化テーブルのそれぞれの項目値のうち依頼された項目の項目値だけを部分的に復号化する。例えば、部分復号化部２３は、編集部２２から集計に関わる項目の項目値を部分復号化する旨の依頼を受け付けると、当該項目（カラム）の処理対象カラム情報をテーブル定義３１から読み出す。部分復号化部２３は、読み出した処理対象カラム情報に含まれる符号化種別３１ｄに基づいて、依頼された項目の項目値を復号化する。一例として、部分復号化部２３は、符号化種別３１ｄが２ｈ〜４ｈである場合には、数値バイナリ変換であると判断し、数値バイナリであることを示す項目値を文字列に復号化する。なお、部分復号化部２３は、符号化種別３１ｄが数値バイナリ変換以外の符号化手法を示す場合には、部分復号化用のオートマトンを用いて、項目値を文字列に復号化すれば良い。部分復号化用のオートマトンについては、後述する。
【００３４】
［静的辞書および動的辞書の一例］
次に、実施例１に係る静的辞書３２および動的辞書３３の一例を、図４を参照して説明する。図４は、実施例１に係る静的辞書および動的辞書の一例を示す図である。
【００３５】
図４に示すように、静的辞書３２には、文字列が出現頻度に応じて１バイトまたは２バイトの符号にマッピングされる。００ｈ〜５Ｆｈが１バイトの符号である。６０００ｈ〜ＥＦＦＦｈが２バイトの符号である。動的辞書３３には、静的辞書３２に登録されていない文字列であって数値でない文字列が３バイトまたは４バイトの符号にマッピングされる。Ｆ０００００ｈ〜ＦＥＦＦＦＦｈが３バイトの符号である。ＦＦ００００００ｈ〜ＦＦＦＦＦＦＦＦｈが４バイトの符号である。なお、図４の例では、１バイトの符号および２バイトの符号がマッピングされている。
【００３６】
図４の例では、主キーや外部参照キーの文字列が１バイトの符号にマッピングされている。一例として、主キーである項目「ＯｒｄｅｒＩＤ」について、文字列「Ｏ００１」が１バイトの「００ｈ」にマッピングされている。文字列「Ｏ０２０」が１バイトの「１３ｈ」にマッピングされている。外部参照キーである項目「ＩｔｅｍＩＤ」について、文字列「Ｉ０００１」が１バイトの「１４ｈ」にマッピングされている。文字列「Ｉ００７６」が「５Ｆｈ」にマッピングされている。また、外部参照キーである項目「ＳｈｏｐＩＤ」について、文字列「Ｓ００１」が２バイトの「６０００ｈ」にマッピングされている。
【００３７】
また、項目「ＩｔｅｍＮａｍｅ」について、文字列「ｉｔｅｍＮａｍｅ１」が、符号化の際に当該項目の符号化種別３１ｄに応じて３バイトの「Ｆ０００００ｈ」にマッピングされる。文字列「ｉｔｅｍＮａｍｅ２」が、符号化の際に当該項目の符号化種別３１ｄに応じて３バイトの「Ｆ００００２ｈ」にマッピングされる。また、タイトル項目「ＴｉｍｅＳｔａｍｐ」について、文字列「２０１５／０４／０１  １１：００：００」が、符号化の際に当該項目の符号化種別３１ｄに応じて４バイトの「ＦＦ３００１０３ｈ」にマッピングされる。文字列「２０１５／０４／０１  １１：０１：００」が、符号化の際に当該項目の符号化種別３１ｄに応じて４バイトの「ＦＦ３００１１３ｈ」にマッピングされる。
【００３８】
［部分復号化に関するオートマトンの一例］
次に、部分復号化用のオートマトンの一例を、図５を参照して説明する。図５は、部分復号化用のオートマトンの一例を示す図である。図５に示すように、部分復号化用のオートマトンは、１バイト・コードのテーブル、２バイト・コードのテーブルおよび３バイト・コードのテーブルを含む。それぞれのテーブルは、符号ごとに復号化用の２バイトのレジスタを有する。かかるレジスタには、照合フラグと結果フラグとが含まれる。照合フラグは、かかる情報の１５ビット目にあり、照合が必要であるか否かを示す。照合が必要である場合には、「１」が設定され、照合が不要である場合には、「０」が設定される。結果フラグは、かかる情報の１４ビット目にあり、復号化結果が有るか否かを示す。復号化結果が有る場合には、「１」が設定され、復号化結果が無い場合には、「０」が設定される。復号化結果が有る場合には、復号化結果が存在する位置を示す符号化文字列へのポインタが設定される。復号化結果が無い場合には、復号化文字列へのポインタが設定されていないことを示す。
【００３９】
一例として、「００ｈ」を復号化する場合には、部分復号化部２３は、部分復号化用のオートマトンを用いて、「００ｈ」に対応するレジスタを取得する。すなわち、部分復号化部２３は、第１バイトが００ｈ〜５Ｆｈであるので、１バイト・コードのテーブルを参照し、「００ｈ」に対応するレジスタを取得する。そして、部分符号化部２３は、照合、結果および復号化文字列へのポインタを参照し、復号化結果を示す文字列「Ｏ００１」を取得する。
【００４０】
別の例として、「６００１ｈ」を復号化する場合には、部分復号化部２３は、部分復号化用のオートマトンを用いて、「６００１ｈ」に対応するレジスタを取得する。すなわち、部分復号化部２３は、第１バイトが６０ｈ〜ＥＦｈであるので、２バイト・コードのテーブルを参照し、「６００１ｈ」に対応するレジスタを取得する。そして、部分復号化部２３は、照合、結果および復号化文字列へのポインタを参照し、復号化結果を示す文字列「Ｓ００２」を取得する。
【００４１】
［符号化と復号化処理の流れの一例］
次に、実施例１に係る符号化と復号化処理の流れの一例を、図６を参照して説明する。図６は、実施例１に係る符号化と復号化処理の流れの一例を示す図である。なお、図６では、図３で示したテーブル定義３１を用いるものとする。図６では、図４で示した静的辞書３２を用いるものとする。
【００４２】
図６に示すように、符号化部１０は、カンマで区切られた注文テーブルＴ０のデータを各レコードのカラムごとに符号化する。例えば、符号化部１０は、符号化対象の注文テーブルＴ０を読み出す。符号化部１０は、読み出した注文テーブルＴ０の、カンマで区切られた文字列を処理対象として選択する。符号化部１０は、処理対象に対応する項目（カラム）の処理対象カラム情報をテーブル定義３１から読み出す。符号化部１０は、読み出した処理対象カラム情報に含まれる符号化種別３１ｄに基づいて、選択した文字列を符号化する。
【００４３】
ここでは、１レコード目について、文字列「Ｏ００１」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ＯｒｄｅｒＩＤ」の処理対象カラム情報「０／０ｈ」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄが０ｘ０であるので、静的辞書３２を用いて符号化する。この結果、文字列「Ｏ００１」は、「００ｈ」に符号化される。
【００４４】
文字列「２０１５／０４／０１  １１：００：００」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ＴｉｍｅＳｔａｍｐ」の処理対象カラム情報「１／Ｆ３ｈ」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄがＦ３ｈであり０ｘＦ０以上であるので、タイトル項目の符号化であると判断し、動的辞書３３を用いて符号化する。この結果、文字列「２０１５／０４／０１  １１：００：００」は、「ＦＦ３０００００ｈ」からの符号のうちマッピングがされていない符号が「ＦＦ３００１０３ｈ」であるとすると、「ＦＦ３００１０３ｈ」に符号化される。
【００４５】
文字列「Ｉ０００１」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ＩｔｅｍＩＤ」の処理対象カラム情報「２／０ｈ」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄが０ｈであるので、静的辞書３２を用いて符号化する。この結果、文字列「Ｉ０００１」は、「１４ｈ」に符号化される。
【００４６】
文字列「ｉｔｅｍＮａｍｅ１」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ｉｔｅｍＮａｍｅ１」の処理対象カラム情報「３／０ｘ１」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄが１ｈであるので、動的辞書３３を用いて符号化する。この結果、文字列「ｉｔｅｍＮａｍｅ１」は、「Ｆ０００００ｈ」からの符号のうちマッピングがされていない符号が「Ｆ０００００ｈ」であるとすると、「Ｆ０００００ｈ」に符号化される。
【００４７】
文字列「２」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ｎｕｍ」の処理対象カラム情報「４／３ｈ」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄが０ｘ３であるので、ｆｌｏａｔ型の数値バイナリ変換を用いて符号化する。この結果、文字列「２」は、「４０００００００ｈ」に符号化される。
【００４８】
文字列「Ｓ００１」を処理対象とする。すると、符号化部１０は、処理対象に対応する項目「ＳｈｏｐＩＤ」の処理対象カラム情報「５／０ｈ」をテーブル定義３１から読み出す。符号化部１０は、処理対象カラム情報から、符号化種別３１ｄが０ｘ０であるので、静的辞書３２を用いて符号化する。この結果、文字列「Ｓ００１」は、「６０００ｈ」に符号化される。
【００４９】
注文テーブルの２レコード以降も、同様に符号化する。この結果、符号化部１０は、符号化されたデータを符号化テーブルＣ０に書き込む。
【００５０】
そして、符号化部１０は、カンマで区切られた店舗テーブルＴ１のデータを各レコードのカラムごとに符号化する。符号化方法は、注文テーブルＴ０の場合と同様であるので、その説明を省略する。この結果、符号化部１０は、符号化されたデータを符号化テーブルＣ１に書き込む。
【００５１】
次に、抽出部２１は、符号化テーブルＣ０，Ｃ１に対する処理命令Ｐ０に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルＣ０，Ｃ１から処理対象のカラムのデータを抽出する。符号Ｐ０で示される処理命令は、注文テーブルＴ０の符号化テーブルＣ０と店舗テーブルＴ１の符号化テーブルＣ１とをＳｈｏｐＩＤで結合（ｊｏｉｎ）する。そして、処理命令は、結合したテーブルから符号化テーブルＣ１のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ０のｎｕｍを参照するものである。さらに、ｎｕｍはＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅをキーとして集計（ｇｒｏｕｐ  ｂｙ）する。
【００５２】
例えば、抽出部２１は、処理命令Ｐ０からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、抽出部２１は、処理命令Ｐ０から、テーブル名として注文テーブルＴ０の符号化テーブルＣ０と店舗テーブルＴ１の符号化テーブルＣ１とを取得する。抽出部２１は、処理命令Ｐ０から、参照項目の項目名として符号化テーブルＣ１のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ０のｎｕｍを取得する。抽出部２１は、処理命令Ｐ０から条件項目の項目名として符号化テーブルＣ１および符号化テーブルＣ０それぞれのＳｈｏｐＩＤを取得する。抽出部２１は、処理命令Ｐ０から、集計項目の項目名としてＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅを取得する。
【００５３】
そして、抽出部２１は、テーブル定義３１から、取得したテーブル名のテーブルごとに、参照項目、集計項目および条件項目のうち存在する項目（カラム）の処理対象カラム情報を抽出する。ここでは、参照項目として取得された符号化テーブルＣ１のＳｈｏｐＩＤの処理対象カラム情報は、０／０ｈであり、符号化テーブルＣ１のＳｈｏｐＮａｍｅの処理対象カラム情報は、１／１ｈであり、符号化テーブルＣ０のｎｕｍの処理対象カラム情報は、４／３ｈである。条件項目として取得された符号化テーブルＣ１のＳｈｏｐＩＤの処理対象カラム情報は、０／０ｈであり、符号化テーブルＣ０のＳｈｏｐＩＤの処理対象カラム情報は、５／０ｈである。集計項目として取得された符号化テーブルＣ１のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅの処理対象カラム情報は、それぞれ０／０ｈ、１／１ｈである。
【００５４】
そして、抽出部２１は、符号化テーブルＣ０，Ｃ１から、抽出した処理対象カラム情報に含まれるオフセット３１ｃに位置する項目値を抽出する。ここでは、抽出部２１は、符号化テーブルＣ０から、ｎｕｍおよびＳｈｏｐＩＤそれぞれの処理対象カラム情報に含まれるオフセット３１ｃ（４、５）に位置する項目値を抽出する。一例として、１レコード目について、ｎｕｍの項目値として「４０００００００ｈ」、ＳｈｏｐＩＤの項目値として「６０００ｈ」が抽出される。２レコード目について、ｎｕｍの項目値として「３Ｆ８０００００ｈ」、ＳｈｏｐＩＤの項目値として「６０００ｈ」が抽出される。そして、抽出部２１は、符号化テーブルＣ０から抽出されたデータを符号化ファイルＲ０に書き込む。
【００５５】
さらに、抽出部２１は、符号化テーブルＣ１から、ＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅそれぞれの処理対象カラム情報に含まれるオフセット３１ｃ（０、１）に位置する項目値を抽出する。一例として、１レコード目について、ＳｈｏｐＩＤの項目値として「６０００ｈ」、ＳｈｏｐＮａｍｅの項目値として「Ｆ０００１２ｈ」が抽出される。２レコード目について、ＳｈｏｐＩＤの項目値として「６００１ｈ」、ＳｈｏｐＮａｍｅの項目値として「Ｆ０００１４ｈ」が抽出される。そして、抽出部２１は、符号化テーブルＣ１から抽出されたデータを符号化ファイルＲ１に書き込む。
【００５６】
次に、編集部２２は、処理命令Ｐ０が集計項目を含む場合には、抽出部２１によって抽出された集計に関わる参照項目の項目値を、部分復号化部２３に復号化させる。ここでは、処理命令Ｐ０が集計項目を含むので、編集部２２は、集計に関わる参照項目ｎｕｍの項目値を部分復号化部２３に復号化させる。部分復号化部２３は、参照項目ｎｕｍの処理対象カラム情報４／３ｈに含まれる符号化種別３１ｄ（３ｈ）に基づいて、参照項目ｎｕｍの項目値だけを復号化する。かかる場合には、部分復号化部２３は、３ｈがｆｌｏａｔ型の数値バイナリ変換であると判断し、数値バイナリであることを示す項目値を文字列に復号化する。この結果、一例として、「４０００００００ｈ」は、文字列「２」に復号化される。「３ｆ８０００００ｈ」は、文字列「１」に復号化される。そして、編集部２２は、符号化ファイルＲ０を部分復号化したデータを含むデータを符号化ファイルＤ０に書き込む。編集部２２は、符号化ファイルＲ１が部分復号化されていないので、符号化ファイルＲ１をそのまま符号化ファイルＤ１に書き込む。
【００５７】
この後、編集部２２は、部分復号化した結果を、他の参照項目の項目値とともに部分符号化ファイル（図示せず）に格納する。ここでは、編集部２２は、集計に関わる参照項目ｎｕｍの項目値を部分復号化した結果を、集約条件（ｇｒｏｕｐ  ｂｙ  ＳｈｏｐＩＤ、ＳｈｏｐＮａｍｅ）で集計し、集計値を符号化する。編集部２２は、ｎｕｍの符号化された集計値を、ＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅの符号化された項目値とともに部分符号化ファイルに書き込む。
【００５８】
［符号化処理の処理手順］
図７Ａおよび図７Ｂは、実施例１に係る符号化処理の処理手順を示すフローチャートである。
【００５９】
図７Ａに示すように、符号化部１０は、前処理を実行する（ステップＳ１１）。例えば、符号化部１０は、各種記憶領域を記憶部３０に確保する。一例として、符号化部１０は、符号化バッファの記憶領域を記憶部３０に確保する。
【００６０】
符号化部１０は、符号化対象のテーブルを読み出す（ステップＳ１２）。符号化部１０は、読み出したテーブルについて、カンマで区切られた文字列を処理対象として選択する（ステップＳ１３）。符号化部１０は、選択した処理対象の処理対象カラム情報を取得する（ステップＳ１４）。
【００６１】
続いて、符号化部１０は、処理対象を符号化する（ステップＳ１５）。なお、処理対象の符号化処理の処理手順は、図７Ｂで説明する。そして、符号化部１０は、符号化された符号コードを符号化バッファに書き込む（ステップＳ１６）。
【００６２】
そして、符号化部１０は、テーブルの終点か否かを判定する（ステップＳ１７）。テーブルの終点でないと判定した場合には（ステップＳ１７；Ｎｏ）、符号化部１０は、次の文字列の符号化をすべく、ステップＳ１３に移行する。
【００６３】
一方、テーブルの終点であると判定した場合には（ステップＳ１７；Ｙｅｓ）、符号化部１０は、符号化バッファを符号化テーブルに書き込む（ステップＳ１８）。符号化部１０は、未処理のテーブルがあるか否かを判定する（ステップＳ１９）。未処理のテーブルがあると判定した場合には（ステップＳ１９；Ｙｅｓ）、符号化部１０は、次のテーブルを読み出すべく、ステップＳ１２に移行する。
【００６４】
一方、未処理のテーブルがないと判定した場合には（ステップＳ１９；Ｎｏ）、符号化部１０は、符号化処理を終了する。
【００６５】
図７Ｂに示すように、処理対象の文字列を受け取った符号化部１０は、当該処理対象の文字列に対応する項目の符号化種別３１ｄをテーブル定義３１から読み出す（ステップＳ３０）。符号化部１０は、符号化種別３１ｄが‘０ｈ’であるか否かを判定する（ステップＳ３１）。一例として、‘０ｈ’は、符号化方法が静的辞書３２を用いて符号化することを表す符号化種別３１ｄである。
【００６６】
符号化種別３１ｄが‘０ｈ’であると判定した場合には（ステップＳ３１；Ｙｅｓ）、符号化部１０は、静的辞書３２に登録されている静的コードを符号コードとして出力する（ステップＳ３２）。そして、符号化部１０は、処理対象の符号化処理を終了する。
【００６７】
一方、符号化種別３１ｄが‘０ｈ’でないと判定した場合には（ステップＳ３１；Ｎｏ）、符号化部１０は、符号化種別３１ｄが‘１ｈ’であるか、または‘Ｆ０ｈ’以上であるか否かを判定する（ステップＳ３３）。一例として、‘１ｈ’は、符号化方法が動的辞書３３を用いて符号化することを表す符号化種別３１ｄである。‘Ｆ０ｈ’は、符号化方法が、タイトル項目である場合の符号化であって動的辞書３３を用いて符号化することを表す符号化種別３１ｄである。
【００６８】
符号化種別３１ｄが‘１ｈ’である、または‘Ｆ０ｈ’以上であると判定した場合には（ステップＳ３３；Ｙｅｓ）、符号化部１０は、動的辞書３３を参照する（ステップＳ３４）。そして、符号化部１０は、動的辞書３３に処理対象の文字列が登録済みであるか否かを判定する（ステップＳ３５）。動的辞書３３に処理対象の文字列が登録済みであると判定した場合には（ステップＳ３５；Ｙｅｓ）、符号化部１０は、処理対象の文字列に動的コードを割り当てるべく、ステップＳ３７に移行する。
【００６９】
一方、動的辞書３３に処理対象の文字列が登録済みでないと判定した場合には（ステップＳ３５；Ｎｏ）、符号化部１０は、符号化種別３１ｄに対応した辞書領域に処理対象の文字列を登録する（ステップＳ３６）。そして、符号化部１０は、処理対象の文字列に動的コードを割り当てるべく、ステップＳ３７に移行する。
【００７０】
ステップＳ３７において、符号化部１０は、動的辞書３３に登録されている動的コードを符号コードとして出力する（ステップＳ３７）。例えば、符号化部１０は、処理対象の文字列を登録した際に当該処理対象の文字列と対応付けられた動的コードに符号化する。そして、符号化部１０は、符号化した動的コードを符号コードとして出力する。そして、符号化部１０は、処理対象の符号化処理を終了する。
【００７１】
ステップＳ３３において、符号化種別３１ｄが‘１ｈ’でない、且つ‘Ｆ０ｈ’以上でないと判定した場合には（ステップＳ３３；Ｎｏ）、符号化部１０は、処理対象の文字列を数値バイナリ変換した後のデータを符号コードとして出力する（ステップＳ３８）。すなわち、符号化部１０は、符号化種別３１ｄが数値バイナリ変換であると判断する。そして、符号化部１０は、処理対象の符号化処理を終了する。
【００７２】
［復号化処理の処理手順］
図８は、実施例１に係る復号化処理の処理手順を示すフローチャートである。
【００７３】
図８に示すように、復号化部２０は、符号化テーブルに対する処理命令を受け付けたか否かを判定する（ステップＳ４１）。処理命令を受け付けていないと判定した場合には（ステップＳ４１；Ｎｏ）、復号化部２０は、処理命令を受け付けるまで、判定処理を繰り返す。
【００７４】
一方、処理命令を受け付けたと判定した場合には（ステップＳ４１；Ｙｅｓ）、復号化部２０は、処理命令から、テーブル名、参照項目、抽出／結合条件の項目および集計項目を取得する（ステップＳ４２）。
【００７５】
そして、復号化部２０は、取得した項目のカラムに関するカラム情報をテーブル定義３１から抽出する（ステップＳ４３）。例えば、復号化部２０は、テーブル定義３１から、取得したテーブル名のテーブルごとに、取得した参照項目、抽出／結合条件の項目および集計項目の処理対象カラム情報を抽出する。
【００７６】
そして、復号化部２０は、取得した項目のカラム情報を用いて、取得した項目の項目値を対象テーブルの符号化テーブルから抽出する（ステップＳ４４）。例えば、復号化部２０は、テーブルごとの符号化ファイルから、抽出した処理対象カラム情報に含まれるオフセット３１ｃに位置する項目値を抽出する。
【００７７】
続いて、復号化部２０は、復号化が必要か否かを判定する（ステップＳ４５）。復号化が必要でないと判定した場合には（ステップＳ４５；Ｎｏ）、復号化部２０は、ステップＳ４７に移行する。
【００７８】
一方、復号化が必要と判定した場合には（ステップＳ４５；Ｙｅｓ）、復号化部２０は、集計に関わる参照項目の符号コードを部分復号化する（ステップＳ４６）。例えば、復号化部２０は、参照項目の処理対象カラム情報に含まれる符号化種別３１ｄに基づいて、当該参照項目の符号コードを復号化する。そして、復号化部２０は、ステップＳ４７に移行する。
【００７９】
ステップＳ４７において、復号化部２０は、処理命令の実行結果を出力する（ステップＳ４７）。例えば、復号化部２０は、集計結果を他の参照項目の符号コードとともに部分符号化ファイルに書き込む。
【００８０】
［実施例１の効果］
このようにして、上記実施例１では、情報処理装置１は、デリミタで区切られたテーブルのデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置１は、処理対象カラム情報を用いて、複数の符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する。かかる構成によれば、情報処理装置１は、デリミタで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照であっても、復号化処理を行わずに、データを参照できる。
【００８１】
また、上記実施例１では、情報処理装置１は、処理対象カラム情報を用いて、複数の符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出し、処理命令の条件に対応した符号化データを部分復号化する。かかる構成によれば、情報処理装置１は、条件に対応したデータを部分復号化できる。
【実施例２】
【００８２】
ところで、実施例１に係る情報処理装置１は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルから処理対象のカラムのデータを抽出する。しかしながら、情報処理装置１は、これに限定されず、処理命令の抽出条件が範囲指定を示す条件である場合には、処理対象カラム情報を用いて、符号化テーブルから抽出条件に従った処理対象のカラムのデータを抽出しても良い。範囲指定を示す抽出条件で指定される項目には、一例として、タイトル項目が挙げられる。
【００８３】
そこで、実施例２に係る情報処理装置１は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置１は、抽出した処理対象カラム情報を用いて、符号化テーブルから、処理命令の範囲が指定される抽出条件に従った処理対象のカラムのデータを抽出する場合を説明する。
【００８４】
［実施例２に係る情報処理装置の構成］
図９は、実施例２に係る情報処理装置の構成を示す機能ブロック図である。なお、図２に示す情報処理装置１と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、符号化部１０を符号化部１０Ａに変更し、復号化部２０Ａを、ＥＴＬ処理を行うＥＴＬ処理部２０Ａに変換した点にある。実施例１と実施例２とが異なるところは、抽出部２１を第１の抽出部２１Ａに変更し、第２の抽出部４１を追加した点にある。なお、第１の抽出部２１Ａの動作は、抽出部２１と同一である。
【００８５】
符号化部１０Ａは、カンマで区切られたテーブルにタイトル項目が存在する場合には、各レコードをタイトル項目の項目値順にソートする。符号化部１０Ａは、テーブルのデータを各レコードのカラムごとに符号化する。なお、テーブルにタイトル項目が存在する場合の各レコードのソートの順番は、昇順であっても良いし、降順であっても良い。実施例２では、ソートの順番を昇順として説明する。例えば、符号化部１０Ａは、符号化対象のテーブルを読み出す。符号化部１０Ａは、カンマで区切られた文字列を処理対象として選択する。符号化部１０Ａは、選択した文字列に対応する項目（カラム）の処理対象カラム情報をテーブル定義３１から読み出す。符号化部１０Ａは、読み出した処理対象カラム情報に含まれる符号化種別３１ｄに基づいて、選択した文字列を符号化する。
【００８６】
第１の抽出部２１Ａは、実施例１に係る抽出部２１と同一の動作であるので、その説明を省略する。
【００８７】
第２の抽出部４１は、範囲指定を示す条件である抽出条件に基づいて、第１の抽出部２１Ａによって抽出されたレコードから該当するレコードを抽出する。
【００８８】
一例として、第２の抽出部４１は、抽出条件を構成する項目がタイトル項目である場合には、当該項目の項目値が動的辞書３３に登録済みであるか否かを判定する。第２の抽出部４１は、項目の項目値が動的辞書３３に登録済みである場合には、抽出条件を構成する項目の項目値を動的辞書３３に登録されている動的コードに代える。そして、第２の抽出部４１は、動的辞書３３を用いて抽出条件に合致するレコードを抽出する。第２の抽出部４１は、項目の項目値が動的辞書３３に登録済みでない場合には、動的辞書３３から抽出条件に合致する文字列であって範囲指定の境界に当たる文字列を探索する。第２の抽出部４１は、抽出条件を構成する項目の項目値を探索文字列に対応する動的コードに代える。そして、第２の抽出部４１は、動的辞書３３を用いて抽出条件に合致するレコードを抽出する。範囲指定の境界に当たる文字列を探索する手法には、一例として、２分探索、２分木探索およびＢ木探索が挙げられる。すなわち、第２の抽出部４１は、符号化ファイルに存在するレコード上の、抽出条件を構成する項目の符号コードを復号化しなくても、データを抽出できる。
【００８９】
また、別の例として、第２の抽出部４１は、抽出条件を構成する項目が数値型である場合には、当該項目の項目値を数値バイナリに変換する。第２の抽出部４１は、抽出条件を構成する項目の項目値を変換後の符号コードに代え、抽出条件に合致するレコードを抽出する。すなわち、第２の抽出部４１は、符号化ファイルに存在するレコード上の、抽出条件を構成する項目の符号コードを復号化しなくても、データを抽出できる。
【００９０】
なお、第２の抽出部４１は、抽出条件を構成する項目がタイトル項目でない場合には、レコード上の抽出条件を構成する項目の符号コードを復号化してから、抽出条件に合致するレコードを抽出すれば良い。
【００９１】
［タイトル項目の動的辞書への登録の一例］
図１０は、タイトル項目の動的辞書への登録の一例を示す図である。なお、図１０では、タイトル項目が「ＴｉｍｅＳｔａｍｐ」であるものとする。そして、タイトル項目の符号化種別３１ｄがＦ３ｈである場合とする。かかる場合には、符号化部１０Ａは、４バイトの動的コード「ＦＦ３０００００ｈ」から順に動的コードを割り当てるものとする。
【００９２】
ここで、カンマで区切られたテーブルにタイトル項目「ＴｉｍｅＳｔａｍｐ」が存在するとする。すると、符号化部１０Ａは、テーブルの各レコードをタイトル項目の項目値順にソートする。そして、符号化部１０Ａは、テーブルのデータを各レコードのカラムごとに符号化する。ここでは、「ＴｉｍｅＳｔａｍｐ」の項目値が「２０１４／０１／０１  ００：００：００」「２０１４／０１／０１  ０１：００：００」「２０１５／０４／０４  ２３：００：００」の順にソートされたとする。さらに、「２０１５／０４／０５  ００：００：００」「２０１５／０４／０５  ０１：００：００」「２０１５／０４／０５  ０１：０３：００」の順にソートされたとする。符号化部１０Ａは、「ＴｉｍｅＳｔａｍｐ」の項目値について、この順番に符号化する。
【００９３】
図１０の左図に示すように、「２０１４／０１／０１  ００：００：００」には、動的符号として最初の「ＦＦ３０００００ｈ」が割り当てられる。「２０１４／０１／０１  ０１：００：００」には、動的符号として次の「ＦＦ３００００１ｈ」が割り当てられる。
【００９４】
ここで、動的辞書３３に登録されていない項目値「２０１３／１２／３１  ００：００：００」が追加されるとする。すると、符号化部１０Ａは、追加された項目値を含むテーブルの各レコードをタイトル項目の項目値順にソートする。符号化部１０Ａは、テーブルのデータを各レコードのカラムごとに符号化する。ここでは、「ＴｉｍｅＳｔａｍｐ」の項目値が「２０１３／１２／３１  ００：００：００」「２０１４／０１／０１  ００：００：００」「２０１４／０１／０１  ０１：００：００」「２０１５／０４／０４  ２３：００：００」の順にソートされる。さらに、「２０１５／０４／０５  ００：００：００」「２０１５／０４／０５  ０１：００：００」「２０１５／０４／０５  ０１：０３：００」の順にソートされる。符号化部１０Ａは、「ＴｉｍｅＳｔａｍｐ」の項目値について、この順番に符号化する。
【００９５】
図１０の右図に示すように、「２０１３／１２／３１  ００：００：００」には、動的符号として最初の「ＦＦ３０００００ｈ」が割り当てられる。「２０１４／０１／０１  ００：００：００」には、動的符号として次の「ＦＦ３００００１ｈ」が割り当てられる。「２０１４／０１／０１  ０１：００：００」には、動的符号としてその次の「ＦＦ３００００２ｈ」が割り当てられる。
【００９６】
［第２の抽出処理の一例］
図１１は、実施例２に係る第２の抽出処理の一例を示す図である。図１１に示すように、抽出条件は、「ＴｉｍｅＳｔａｍｐ＞‘２０１４／０４／０５  ００：００：００’」であるとする。「ＴｉｍｅＳｔａｍｐ」は、タイトル項目である。
【００９７】
図１１の左図に示すように、第２の抽出部４１は、抽出条件を構成する項目「ＴｉｍｅＳｔａｍｐ」がタイトル項目であるので、当該項目の項目値「２０１４／０４／０５  ００：００：００」が動的辞書３３に登録済みであるか否かを判定する。ここでは、項目の項目値「２０１４／０４／０５  ００：００：００」が動的辞書３３に登録済みである。
【００９８】
そこで、第２の抽出部４１は、抽出条件を構成する項目の項目値を動的辞書３３に登録されている動的コードに代える。ここでは、第２の抽出部４１は、抽出条件を構成する項目の項目値「２０１４／０４／０５  ００：００：００」を動的辞書３３に登録されている動的符号「ＦＦ３０１０ＡＤｈ」に代える。
【００９９】
そして、第２の抽出部４１は、動的辞書３３を用いて抽出条件に合致するレコードを抽出する。ここでは、第２の抽出部４１は、「ＴｉｍｅＳｔａｍｐ」が動的符号「ＦＦ３０１０ＡＤｈ」より大きい動的符号を持つレコードを抽出する。符号テーブルをＣ８とすると、「ＴｉｍｅＳｔａｍｐ」の動的符号として「ＦＦ３０１Ａ０３ｈ」および「ＦＦ３０１０ＡＥｈ」を持つレコードが抽出される。
【０１００】
図１１の右図に示すように、第２の抽出部４１は、抽出条件を構成する項目「ＴｉｍｅＳｔａｍｐ」がタイトル項目である場合には、当該項目の項目値「２０１４／０４／０５  ００：００：００」が動的辞書３３に登録済みであるか否かを判定する。ここでは、項目の項目値「２０１４／０４／０５  ００：００：００」が動的辞書３３に登録されていない。
【０１０１】
そこで、第２の抽出部４１は、動的辞書３３から抽出条件に合致する文字列であって範囲指定の境界となる項目値（文字列）を探索する。ここでは、２分探索を用いるとする。すると、第２の抽出部４１は、最初の動的符号「ＦＦ３０００００ｈ」に対応付けられた項目値は、抽出条件に合致しない（Ｆａｌｓｅ）と判定する。次に、第２の抽出部４１は、最後の動的符号「ＦＦ３００００６ｈ」に対応付けられた項目値は、抽出条件に合致する（Ｔｒｕｅ）と判定する。そこで、第２の抽出部４１は、中間の動的符号「ＦＦ３００００３ｈ」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致しない（Ｆａｌｓｅ）と判定する。さらに、第２の抽出部４１は、中間の動的符号「ＦＦ３００００５ｈ」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致する（Ｔｒｕｅ）と判定する。そして、第２の抽出部４１は、中間の動的符号「ＦＦ３００００４ｈ」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致する（Ｔｒｕｅ）と判定する。
【０１０２】
そして、第２の抽出部４１は、隣り合う動的符号でＦａｌｓｅ／Ｔｒｕｅになった場合に、抽出条件を構成する項目の項目値をＴｒｕｅである動的符号に代える。ここでは、第２の抽出部４１は、抽出条件を構成する項目の項目値「２０１４／０４／０５  ００：００：００」を動的辞書３３に登録されている動的符号「ＦＦ３００００４ｈ」に代える。
【０１０３】
そして、第２の抽出部４１は、動的辞書３３を用いて抽出条件に合致するレコードを抽出する。ここでは、第２の抽出部４１は、「ＴｉｍｅＳｔａｍｐ」が動的符号「ＦＦ３００００４ｈ」以上の動的符号を持つレコードを抽出する。符号テーブルをＣ９とすると、「ＴｉｍｅＳｔａｍｐ」の動的符号として「ＦＦ３０１Ａ０３ｈ」、「ＦＦ３００１０３ｈ」、「ＦＦ３０１０ＡＥｈ」および「ＦＦ３００１０Ｄｈ」を持つレコードが抽出される。
【０１０４】
［符号化とＥＴＬ処理の流れの一例］
次に、実施例２に係る符号化とＥＴＬ処理の流れの一例を、図１２を参照して説明する。図１２は、実施例２に係る符号化とＥＴＬ処理の流れの一例を示す図である。なお、図１２では、図３で示したテーブル定義３１を用いるものとする。図１２では、図４で示した静的辞書３２を用いるものとする。
【０１０５】
図１２に示すように、符号化部１０Ａは、カンマで区切られた注文テーブルＴ０にタイトル項目が存在する場合には、各レコードをタイトル項目の項目値順にソートし、注文テーブルＴ０のデータを各レコードのカラムごとに符号化する。ここでは、注文テーブルＴ０にタイトル項目「ＴｉｍｅＳｔａｍｐ」が存在するので、符号化部１０Ａは、各レコードをタイトルの項目値順にソートする。そして、符号化部１０Ａは、ソートした後の注文テーブルＴ０のデータを各レコードのカラムごとに符号化する。注文テーブルＴ０を符号化した結果は、符号化テーブルＣ１０である。店舗テーブルＴ１にタイトル項目「ＴｉｍｅＳｔａｍｐ」が存在しないので、符号化部１０Ａは、ソート処理をしないで、店舗テーブルＴ１のデータを各レコードのカラムごとに符号化する。店舗テーブルＴ１を符号化した結果は、符号化テーブルＣ２０である。
【０１０６】
次に、第１の抽出部２１Ａは、符号化テーブルＣ１０，Ｃ２０に対する処理命令Ｐ０に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルＣ１０、Ｃ２０から処理対象のカラムのデータを抽出する。符号Ｐ０で示される処理命令は、注文テーブルＴ０の符号化テーブルＣ１０と店舗テーブルＴ１の符号化テーブルＣ２０とをＳｈｏｐＩＤで結合（ｊｏｉｎ）する。そして、処理命令は、結合したテーブルから符号化テーブルＣ１０のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ１０のｎｕｍを参照するものである。さらに、ｎｕｍはＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅをキーとして集計（ｇｒｏｕｐ  ｂｙ）する。
【０１０７】
例えば、第１の抽出部２１Ａは、処理命令Ｐ０からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、第１の抽出部２１Ａは、処理命令Ｐ０から、テーブル名として注文テーブルＴ０の符号化テーブルＣ１０と店舗テーブルＴ１の符号化テーブルＣ２０とを取得する。第１の抽出部２１Ａは、処理命令Ｐ０から、参照項目の項目名として符号化テーブルＣ２０のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ１０のｎｕｍを取得する。第１の抽出部２１Ａは、処理命令Ｐ０から条件項目の項目名として符号化テーブルＣ１０および符号化テーブルＣ２０それぞれのＳｈｏｐＩＤを取得する。第１の抽出部２１Ａは、処理命令Ｐ０から、集計項目の項目名としてＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅを取得する。
【０１０８】
次に、第１の抽出部２１Ａは、符号化テーブルＣ１０，Ｃ２０に対する処理命令Ｐ１０に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルＣ１０，Ｃ２０から処理対象のカラムのデータを抽出する。符号Ｐ１０で示される処理命令は、注文テーブルＴ０の符号化テーブルＣ１０と店舗テーブルＴ１の符号化テーブルＣ２０とをＳｈｏｐＩＤで結合（ｊｏｉｎ）する。そして、処理命令は、結合したテーブルから符号化テーブルＣ２０のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ１０のｎｕｍを参照するものである。さらに、抽出条件（ｗｈｅｒｅ）は、符号化テーブルＣ１０のＴｉｍｅＳｔａｍｐが「２０１５／０４／０５  ００：００：００」より小さいである。
【０１０９】
例えば、第１の抽出部２１Ａは、処理命令Ｐ１０からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、第１の抽出部２１Ａは、処理命令Ｐ１０から、テーブル名として符号化テーブルＣ１０と符号化テーブルＣ２０とを取得する。第１の抽出部２１Ａは、処理命令Ｐ１０から、参照項目の項目名として符号化テーブルＣ２０のＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅ並びに符号化テーブルＣ１０のｎｕｍを取得する。第１の抽出部２１Ａは、処理命令Ｐ１０から条件項目の項目名として符号化テーブルＣ２０および符号化テーブルＣ１０それぞれのＳｈｏｐＩＤを取得する。また、第１の抽出部２１Ａは、処理命令Ｐ１０から条件項目の項目名として符号化テーブルＣ１０のＴｉｍｅＳｔａｍｐを取得する。なお、処理命令Ｐ１０は、集計項目の項目名を有していない。
【０１１０】
そして、第１の抽出部２１Ａは、テーブル定義３１から、取得したテーブル名のテーブルごとに、参照項目、集計項目および条件項目のうち存在する項目（カラム）の処理対象カラム情報を抽出する。第１の抽出部２１Ａは、テーブルごとの符号化テーブルＣ１０，Ｃ２０から、抽出した処理対象カラム情報に含まれるオフセット３１ｃに位置する項目値を抽出する。ここでは、第１の抽出部２１Ａは、符号化テーブルＣ１０から、ｎｕｍ、ＴｉｍｅＳｔａｍｐおよびＳｈｏｐＩＤそれぞれの処理対象カラム情報に含まれるオフセット３１ｃ（４、１、５）に位置する項目値を抽出する。一例として、１レコード目について、ｎｕｍの項目値として「４０００００００ｈ」、ＴｉｍｅＳｔａｍｐの項目値として「ＦＦ３００１０３ｈ」、ＳｈｏｐＩＤの項目値として「６０００ｈ」が抽出される。そして、第１の抽出部２１Ａは、符号化テーブルＣ１０から抽出されたデータを符号化ファイルＲ１０に書き込む。さらに、第１の抽出部２１Ａは、符号化テーブルＣ２０から、ＳｈｏｐＩＤおよびＳｈｏｐＮａｍｅそれぞれの処理対象カラム情報に含まれるオフセット３１ｃ（０、１）に位置する項目値を抽出する。一例として、１レコード目について、ＳｈｏｐＩＤの項目値として「６０００ｈ」、ＳｈｏｐＮａｍｅの項目値として「Ｆ０００１２ｈ」が抽出される。そして、第１の抽出部２１Ａは、符号化テーブルＣ２０から抽出されたデータを符号化ファイルＲ２０に書き込む。
【０１１１】
そして、第２の抽出部４１は、抽出条件を構成する項目「ＴｉｍｅＳｔａｍｐ」がタイトル項目の場合であるので、当該項目の項目値が動的辞書３３に登録済みであるか否かを判定する。第２の抽出部４１は、抽出条件を構成する項目「ＴｉｍｅＳｔａｍｐ」の項目値「２０１５／０４／０５  ００：００：００」が動的辞書３３に登録されていないと判定すると、動的辞書３３から抽出条件に合致する文字列であって範囲指定の境界となる文字列を探索する。ここでは、範囲指定の境界となる文字列として「２０１５／０４／０３  １１：０５：００」が探索される。
【０１１２】
そこで、第２の抽出部４１は、抽出条件を構成する項目の項目値を探索文字列に対応する動的コードに代える。ここでは、第２の抽出部４１は、抽出条件を構成する項目の項目値「２０１４／０４／０５  ００：００：００」を動的辞書３３に登録されている動的符号「ＦＦ３０００１０Ｄｈ」に代える。
【０１１３】
そして、第２の抽出部４１は、動的辞書３３を用いて抽出条件に合致するレコードを抽出する。ここでは、第２の抽出部４１は、「ＴｉｍｅＳｔａｍｐ」が動的符号「ＦＦ３０００１０Ｄｈ」以下の動的符号を持つレコードを抽出する。ここでは、「ＴｉｍｅＳｔａｍｐ」の動的符号が「ＦＦ３００１０３ｈ」および「ＦＦ３００１０Ｄｈ」を持つレコードが抽出される。抽出結果は、符号化テーブルＲ１０´である。
【０１１４】
なお、符号化テーブルＣ２０には、抽出条件を構成する項目「ＴｉｍｅＳｔａｍｐ」が存在しないので、第２の抽出部４１は、符号化ファイルＲ２０をそのまま符号化ファイルＲ２０´に書き込む。
【０１１５】
次に、編集部２２は、符号化ファイルＲ１０´，Ｒ２０´を条件項目で条件化した結合条件で結合する。ここでは、編集部２２は、符号化ファイルＲ１０´，Ｒ２０´を結合条件（店舗テーブル．ＳｈｏｐＩＤ＝注文テーブル．ＳｈｏｐＩＤ）で結合する。そして、編集部２２は、結合した結果を部分符号化ファイルＢ１０に格納する。
【０１１６】
［符号化処理の処理手順］
図１３は、実施例２に係る符号化処理の処理手順を示すフローチャートである。なお、図１３のフローチャートは、図７ＡのフローチャートにＳ５３およびＳ５４を追加したものである。したがって、以降では、同一の処理を、簡略して説明する。
【０１１７】
図１３に示すように、符号化部１０Ａは、前処理を実行する（ステップＳ５１）。符号化部１０Ａは、符号化対象のテーブルを読み出す（ステップＳ５２）。
【０１１８】
符号化部１０Ａは、読み出したテーブルにタイトル項目が存在するか否かを判定する（ステップＳ５３）。例えば、符号化部１０Ａは、テーブル定義３１を参照し、該当するテーブルに対応する項目名３１ｂの中に符号化種別３１ｄがＦ０ｈ以上の項目名が存在するか否かを判定する。読み出したテーブルにタイトル項目が存在しないと判定した場合には（ステップＳ５３；Ｎｏ）、符号化部１０Ａは、ステップＳ５５に移行する。
【０１１９】
一方、読み出したテーブルにタイトル項目が存在すると判定した場合には（ステップＳ５３；Ｙｅｓ）、符号化部１０Ａは、読み出したテーブルをタイトル項目の項目値でソートする（ステップＳ５４）。そして、符号化部１０Ａは、ステップＳ５５に移行する。
【０１２０】
ステップＳ５５において、符号化部１０Ａは、読み出したテーブルについて、カンマで区切られた文字列を処理対象として選択する（ステップＳ５５）。符号化部１０Ａは、選択した処理対象の処理対象カラム情報を取得する（ステップＳ５６）。
【０１２１】
続いて、符号化部１０Ａは、処理対象を符号化する（ステップＳ５７）。なお、処理対象の符号化処理の処理手順は、図７Ｂの説明と同様であるので、その説明を省略する。そして、符号化部１０Ａは、符号化された符号コードを符号化バッファに書き込む（ステップＳ５８）。
【０１２２】
そして、符号化部１０Ａは、テーブルの終点か否かを判定する（ステップＳ５９）。テーブルの終点でないと判定した場合には（ステップＳ５９；Ｎｏ）、符号化部１０Ａは、次の文字列の符号化をすべく、ステップＳ５５に移行する。
【０１２３】
一方、テーブルの終点であると判定した場合には（ステップＳ５９；Ｙｅｓ）、符号化部１０Ａは、符号化バッファを符号化テーブルに書き込む（ステップＳ６０）。符号化部１０Ａは、未処理のテーブルがあるか否かを判定する（ステップＳ６１）。未処理のテーブルがあると判定した場合には（ステップＳ６１；Ｙｅｓ）、符号化部１０Ａは、次のテーブルを読み出すべく、ステップＳ５２に移行する。
【０１２４】
一方、未処理のテーブルがないと判定した場合には（ステップＳ６１；Ｎｏ）、符号化部１０Ａは、符号化処理を終了する。
【０１２５】
［ＥＴＬ処理の処理手順］
図１４は、実施例２に係るＥＴＬ処理の処理手順を示すフローチャートである。図１４に示すように、ＥＴＬ処理部２０Ａは、符号化テーブルに対する処理命令を受け付けたか否かを判定する（ステップＳ７１）。処理命令を受け付けていないと判定した場合には（ステップＳ７１；Ｎｏ）、ＥＴＬ処理部２０Ａは、処理命令を受け付けるまで、判定処理を繰り返す。
【０１２６】
一方、処理命令を受け付けたと判定した場合には（ステップＳ７１；Ｙｅｓ）、ＥＴＬ処理部２０Ａは、処理命令から、テーブル名、参照項目、抽出／結合条件の項目および集計項目を取得する（ステップＳ７２）。
【０１２７】
そして、ＥＴＬ処理部２０Ａは、取得した項目のカラムに関するカラム情報をテーブル定義３１から抽出する（ステップＳ７３）。
【０１２８】
そして、ＥＴＬ処理部２０Ａは、取得した項目のカラム情報を用いて、取得した項目の項目値を対象テーブルの符号化テーブルから抽出する（ステップＳ７４）。ＥＴＬ処理部２０Ａは、対象テーブルごとに、抽出した項目値を符号化ファイルに書き込む。
【０１２９】
続いて、ＥＴＬ処理部２０Ａは、抽出条件の項目が数値型か否かを判定する（ステップＳ７５）。抽出条件の項目が数値型であると判定した場合には（ステップＳ７５；Ｙｅｓ）、ＥＴＬ処理部２０Ａは、抽出条件の項目値を数値バイナリに変換し、変換後のデータを符号コードとして出力する（ステップＳ７６）。そして、ＥＴＬ処理部２０Ａは、符号化テーブルから該当レコードを抽出すべく、ステップＳ８１に移行する。
【０１３０】
一方、抽出条件の項目が数値型でないと判定した場合には（ステップＳ７５；Ｎｏ）、ＥＴＬ処理部２０Ａは、抽出条件の項目がタイトル項目であるか否かを判定する（ステップＳ７７）。抽出条件の項目がタイトル項目であると判定した場合には（ステップＳ７７；Ｙｅｓ）、ＥＴＬ処理部２０Ａは、抽出条件の項目値が動的辞書３３に登録済みであるか否かを判定する（ステップＳ７８）。
【０１３１】
抽出条件の項目値が動的辞書３３に登録済みであると判定した場合には（ステップＳ７８；Ｙｅｓ）、ＥＴＬ処理部２０Ａは、動的辞書３３に登録されている項目値に対応する符号コード（動的コード）を出力する（ステップＳ７９）。そして、ＥＴＬ処理部２０Ａは、ステップＳ８１に移行する。
【０１３２】
一方、抽出条件の項目値が動的辞書３３に登録済みでないと判定した場合には（ステップＳ７８；Ｎｏ）、ＥＴＬ処理部２０Ａは、２分探索を用いて符号コードを探索し、該当する符号コードを出力する（ステップＳ８０）。例えば、ＥＴＬ処理部２０Ａは、動的辞書３３から抽出条件に合致する文字列（項目値）であって範囲指定の境界となる項目値に対応する符号コードを探索する。そして、ＥＴＬ処理部２０Ａは、ステップＳ８１に移行する。
【０１３３】
ステップＳ８１において、ＥＴＬ処理部２０Ａは、符号化ファイルから、項目値を符号化した抽出条件に合致するレコードを抽出する（ステップＳ８１）。そして、ＥＴＬ処理部２０Ａは、ステップＳ８４に移行する。
【０１３４】
ステップＳ７７において、抽出条件の項目がタイトル項目でないと判定した場合には（ステップＳ７７；Ｎｏ）、ＥＴＬ処理部２０Ａは、抽出条件の項目に対応する、符号化テーブルの符号コードを部分復号化する（ステップＳ８２）。そして、ＥＴＬ処理部２０Ａは、符号化ファイルから、抽出条件に合致するレコードを抽出する（ステップＳ８３）。そして、ＥＴＬ処理部２０Ａは、ステップＳ８４に移行する。
【０１３５】
ステップＳ８４において、ＥＴＬ処理部２０Ａは、集計項目が抽出されたか否かを判定する（ステップＳ８４）。集計項目が抽出されないと判定した場合には（ステップＳ８４；Ｎｏ）、ＥＴＬ処理部２０Ａは、ステップＳ８８に移行する。
【０１３６】
一方、集計項目が抽出されたと判定した場合には（ステップＳ８４；Ｙｅｓ）、ＥＴＬ処理部２０Ａは、集計に関わる参照項目の符号コードを部分復号化する（ステップＳ８５）。ＥＴＬ処理部２０Ａは、集約条件に基づいて、部分復号化された結果を示す項目値を集計する（ステップＳ８６）。ＥＴＬ処理部２０Ａは、集計結果を符号化する（ステップＳ８７）。なお、処理対象の符号化処理の処理手順は、図７Ｂの説明と同様であるので、その説明を省略する。そして、ＥＴＬ処理部２０Ａは、ステップＳ８８に移行する。
【０１３７】
ステップＳ８８において、ＥＴＬ処理部２０Ａは、処理命令の実行結果を出力する（ステップＳ８８）。例えば、ＥＴＬ処理部２０Ａは、抽出条件に合致した参照項目の符号コードを部分符号化ファイルに書き込む。加えて、ＥＴＬ処理部２０Ａは、集計結果があれば、集計結果を他の参照項目の符号コードとともに部分符号化ファイルに書き込む。
【０１３８】
［実施例２の効果］
このようにして、上記実施例２では、情報処理装置１は、デリミタで区切られたテーブルのデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置１は、処理対象カラム情報を用いて、複数の符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出する。そして、情報処理装置１は、処理命令の条件であって範囲が指定された条件に対応した符号化データを部分符号化テーブルに書き込む。かかる構成によれば、情報処理装置１は、デリミタで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照のうち範囲が指定された条件に対するデータの参照であっても、復号化処理を行わずに、データを参照できる。
【０１３９】
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【０１４０】
例えば、実施例では、数値を示す項目の場合には、数値バイナリ変換を用いた符号化方法を適用すると説明した。しかしながら、数値を示す項目の場合であっても、動的辞書３３を用いた符号化方法を適用しても良い。すなわち、符号化部１０Ａは、項目の符号化種別３１ｄが０２ｈ〜０３ｈである場合には、項目が数値であると判断し、動的辞書３３を用いて、当該項目の項目値を符号化する。ここで、範囲指定を示す抽出条件に数値項目が含まれている場合には、第２の抽出部４１は、符号化ファイルに存在するレコードの、抽出条件を構成する数値項目の符号コードを復号化してから、抽出条件に合致するレコードを抽出すれば良い。これにより、情報処理装置１は、テーブルを構成する項目の項目値を、静的辞書３２および動的辞書３３を用いて符号化することとなるので、統一した方式で符号化処理を行うことができる。
【０１４１】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１４２】
［情報処理装置のハードウェア構成］
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１５は、コンピュータのハードウェア構成例を示す図である。コンピュータ３００は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【０１４３】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ３００は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１４４】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク４００を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ３００と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１４５】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力デバイス３０７は、例えば、キーボードやコンピュータ３００の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ３００の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ３００と一体になっていても良いし、コンピュータ３００に含まれず、例えば、コンピュータ３００に外部から接続する装置であっても良い。
【０１４６】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って符号化部１０や復号化部２０の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部３０の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２０４、ミドルウェア２０３およびＯＳ２０２など）やデータファイル（例えば、テーブル定義３１、静的辞書３２、動的辞書３３など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１６を用いて説明する。
【０１４７】
図１６は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ３００において、図１６に示すハードウェア群（ＨＷ）２０１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２０２が動作する。ＯＳ２０２に従った手順でプロセッサ３０１が動作して、ハードウェア群（ＨＷ）２０１の制御・管理が行なわれることにより、アプリケーションプログラム（ＡＰ）２０４やミドルウェア（ＭＷ）２０３に従った処理がハードウェア群２０１で実行される。さらに、コンピュータ３００において、ミドルウェア（ＭＷ）２０３またはアプリケーションプログラム（ＡＰ）２０４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【０１４８】
プロセッサ３０１が、符号化機能が呼び出された場合に、ミドルウェア２０３またはアプリケーションプログラム２０４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２０２に基づいてハードウェア群２０１を制御して）符号化部１０および復号化部２０の機能が実現される。符号化機能および復号化機能は、アプリケーションプログラム２０４自体に含まれても良いし、アプリケーションプログラム２０４に従って呼び出されることで実行されるミドルウェア２０３の一部であっても良い。
【０１４９】
図１７は、実施形態のシステムにおける装置の構成例を示す。図１７のシステムは、コンピュータ３００ａ、コンピュータ３００ｂ、基地局５００およびネットワーク４００を含む。コンピュータ３００ａは、無線または有線の少なくとも一方により、コンピュータ３００ｂと接続されたネットワーク４００に接続している。
【０１５０】
図２に示す符号化部１０と復号化部２０とは、図１７に示すコンピュータ３００ａとコンピュータ３００ｂとのいずれに含まれても良い。コンピュータ３００ｂが符号化部１０の機能を含み、コンピュータ３００ａが復号化部２０の機能を含んでも良いし、コンピュータ３００ａが符号化部１０の機能を含み、コンピュータ３００ｂが復号化部２０の機能を含んでも良い。また、コンピュータ３００ａとコンピュータ３００ｂとの双方が、符号化部１０の機能および復号化部２０の機能を備えても良い。
【０１５１】
図２に示す抽出部２１および編集部２２と部分復号化部２３とは、図１７に示すコンピュータ３００ａとコンピュータ３００ｂとのいずれに含まれても良い。コンピュータ３００ｂが抽出部２１および編集部２２の機能を含み、コンピュータ３００ａが部分復号化部２３の機能を含んでも良いし、コンピュータ３００ａが抽出部２１および編集部２２の機能を含み、コンピュータ３００ｂが部分復号化部２３の機能を含んでも良い。また、コンピュータ３００ａとコンピュータ３００ｂとの双方が、抽出部２１および編集部２２の機能および部分復号化部２３の機能を備えても良い。
【符号の説明】
【０１５２】
１  情報処理装置
１０，１０Ａ  符号化部
２０  復号化部
２０Ａ  ＥＴＬ処理部
２１  抽出部
２１Ａ  第１の抽出部
２２  編集部
２３  部分復号化部
４１  第２の抽出部
３０  記憶部
３１  テーブル定義
３２  静的辞書
３３  動的辞書
【図１】
0006728926.tif 000002
【図２】
0006728926.tif 000003
【図３】
0006728926.tif 000004
【図４】
0006728926.tif 000005
【図５】
0006728926.tif 000006
【図６】
0006728926.tif 000007
【図７Ａ】
0006728926.tif 000008
【図７Ｂ】
0006728926.tif 000009
【図８】
0006728926.tif 000010
【図９】
0006728926.tif 000011
【図１０】
0006728926.tif 000012
【図１１】
0006728926.tif 000013
【図１２】
0006728926.tif 000014
【図１３】
0006728926.tif 000015
【図１４】
0006728926.tif 000016
【図１５】
0006728926.tif 000017
【図１６】
0006728926.tif 000018
【図１７】
0006728926.tif 000019