JP2017195447A - 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法 - Google Patents

符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法 Download PDF

Info

Publication number
JP2017195447A
JP2017195447A JP2016083167A JP2016083167A JP2017195447A JP 2017195447 A JP2017195447 A JP 2017195447A JP 2016083167 A JP2016083167 A JP 2016083167A JP 2016083167 A JP2016083167 A JP 2016083167A JP 2017195447 A JP2017195447 A JP 2017195447A
Authority
JP
Japan
Prior art keywords
encoding
processing
processing target
item
column
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016083167A
Other languages
English (en)
Other versions
JP6728926B2 (ja
Inventor
葉月 阿部
Hazuki Abe
葉月 阿部
片岡 正弘
Masahiro Kataoka
正弘 片岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016083167A priority Critical patent/JP6728926B2/ja
Priority to US15/489,206 priority patent/US20170300542A1/en
Priority to EP17166791.8A priority patent/EP3236368A1/en
Publication of JP2017195447A publication Critical patent/JP2017195447A/ja
Application granted granted Critical
Publication of JP6728926B2 publication Critical patent/JP6728926B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】デリミタで区切られたCSV形式のデータを符号化した圧縮ファイルに対する部分的なデータの参照であっても、先頭からの復号化を行わずに、指定されたカラムのデータの部分復号化や、ETL処理としての参照や、複写、置換などの処理を可能にする。【解決手段】情報処理装置1は、デリミタで区切られたCSV形式データを各レコードのカラムごとに符号化した圧縮ファイルに対して、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置1は、処理対象カラム情報を用いて、複数の符号化コードから、処理対象のカラムに対応した部分復号化やETL処理としての参照や複写、置換を行う。【選択図】図2

Description

本発明は、符号化処理プログラムや復号化処理プログラム等に関する。
ETL(Extract,Transform,Load)の処理では、複数のテーブルに存在するデータを参照する処理が行われる。例えば、専用のETLツールが、複数のテーブルから対象のデータを参照する。各テーブルのデータは、CSV(Comma−Separated Values)形式などの汎用ファイルに記述されている。CSV形式でのデータの記述は、データをデリミタで区切る。デリミタの一例として、カンマ(,)が挙げられる。
CSV形式で記述されたファイルの圧縮アルゴリズムとしては、LZ77を用いたZIPが主流である。ZIPでは、圧縮対象の文字列に対して、スライド窓を用いて最長一致の文字列を判定し、圧縮データを生成する。スライド窓を用いた最長一致文字列の判定は、バイト単位で行われる。
特開2000−101442号公報 特開2015−75970号公報
しかしながら、デリミタで区切られたCSV形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合、圧縮ファイルのデータを先頭から復号化する必要があるという問題がある。
例えば、ZIPでは、圧縮処理は、スライド窓を用いて最長一致の文字列を判定するので、最長一致の文字列から生成される圧縮符号は、データの区切りを意識しない符号となる。すなわち、最長一致の文字列から生成される圧縮符号は、デリミタを跨いだデータを圧縮した符号となる。つまり、圧縮処理とデリミタで区切られたデータの参照処理とは、共通性がない。したがって、デリミタで区切られたCSV形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合、対象の圧縮ファイルのデータをスライド窓を用いて最長一致文字列を復元し、先頭から復号化する必要がある。
なお、上記課題は、ETLの処理だけではなく、デリミタで区切られたCSV形式のデータを圧縮した圧縮ファイルに対してデータを参照する場合の処理にも同様に生じる課題である。
1つの側面では、デリミタで区切られたCSV形式のデータを符号化した符号化ファイルに対するデータの参照であっても、復号化を行わずに、データを参照や複写や置換などを行うことを目的とする。また、1つの側面では、デリミタで区切られたCSV形式のデータを符号化した符号化ファイルに対するデータの参照であっても、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することを目的とする。
第1の案では、符号化処理プログラムは、コンピュータに、デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、前記処理対象カラム情報を用いて、複数の前記符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する、処理を実行させる。第2の案では、復号化処理プログラムは、コンピュータに、デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する所定の処理対象の復号化処理命令に基づいて、前記処理対象のカラムに関する処理対象カラム情報を抽出し、前記処理対象カラム情報を用いて、前記符号化テーブルから、処理対象のカラムに対応する符号を抽出し、抽出した符号を部分符号化用のオートマトンを用いて復号化する、処理を実行させる。
本発明の一態様によれば、デリミタで区切られたCSV形式のデータを符号化した符号化ファイルに対するデータの参照であっても、復号化を行わずに、データを参照や複写や置換などを行うことができる。また、一態様によれば、デリミタで区切られたCSV形式のデータを符号化した符号化ファイルに対するデータの参照であっても、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することができる。
図1は、実施例1に係る符号化と復号化処理の一例を示す図である。 図2は、実施例1に係る情報処理装置の構成を示す機能ブロック図である。 図3は、実施例1に係るテーブル定義の一例を示す図である。 図4は、実施例1に係る静的辞書および動的辞書の一例を示す図である。 図5は、部分復号化用のオートマトンの一例を示す図である。 図6は、実施例1に係る符号化と復号化処理の流れの一例を示す図である。 図7Aは、実施例1に係る符号化処理の処理手順を示すフローチャート(1)である。 図7Bは、実施例1に係る符号化処理の処理手順を示すフローチャート(2)である。 図8は、実施例1に係る復号化処理の処理手順を示すフローチャートである。 図9は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。 図10は、タイトル項目の動的辞書への登録の一例を示す図である。 図11は、実施例2に係る第2の抽出処理の一例を示す図である。 図12は、実施例2に係る符号化とETL処理の流れの一例を示す図である。 図13は、実施例2に係る符号化処理の処理手順を示すフローチャートである。 図14は、実施例2に係るETL処理の処理手順を示すフローチャートである。 図15は、コンピュータのハードウェア構成例を示す図である。 図16は、コンピュータで動作するプログラムの構成例を示す図である。 図17は、実施形態のシステムにおける装置の構成例を示す図である。
以下に、本願の開示する符号化、復号化処理プログラム、符号化、復号化処理装置および符号化、復号化処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係る符号化と復号化処理の一例を示す図である。
図1に示すように、符号化処理は、テーブルにおいて、カンマ(,)で区切られた各レコードのカラムが示すデータをカラムごとに符号化する。
ここでいうテーブルは、例えば、リレーショナルデータベース(RDB)で用いられるテーブルのことをいい、CSV形式で構成される。1レコードをカンマで区切られたそれぞれのデータは、それぞれの項目(フィールド)に対応付けられる。それぞれの項目は、テーブルの各列のタイトルに相当し、それぞれのカラムに対応する。このようなテーブルの定義(テーブル定義)には、項目と、項目のデータを符号化する際に用いる符号化方法とが対応付けられる。符号化処理は、テーブルにおいてテーブル定義に設定された項目ごとの符号化方法に基づいて、それぞれの項目が示すデータを符号化する。なお、カンマは、デリミタの一例である。
ここで、符号化方法の一例について説明する。出現頻度が高い項目の場合には、静的辞書を用いた符号化方法を適用する。出現頻度が高い項目の一例として、主キーや外部参照キーが挙げられる。静的辞書とは、一般的には、英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。ここでいう静的辞書とは、出現頻度が高い項目の項目値に対して、より短い符号を割り当てた辞書のことをいう。静的辞書には、それぞれの項目値に対応する符号(静的コード)をあらかじめ登録する。これに対して、出現頻度が低い項目の場合には、動的辞書を用いた符号化方法を適用する。動的辞書とは、静的辞書に登録されていない項目値と、動的に付された動的コード(符号)とを対応付けた辞書である。静的辞書に登録されていない項目値には、一例として、主キーや外部参照キーと異なるキーなどのタイトル項目、すなわち、タイムスタンプ、住所、アドレスなどが挙げられる。動的辞書には、項目値が出現するごとに、項目値が動的コードに対応付けられて登録される。加えて、数値を示す項目の場合には、数値バイナリ変換を用いた符号化方法を適用する。なお、上記で説明した符号化方法は、一例であって、これに限定されることはない。
一例として、項目名を「UserID」とするカラムは、0である。項目名を「TimeStamp」とするカラムは、1である。項目名を「ItemID」とするカラムは、2である。項目名を「ItemName」とするカラムは、3である。項目名を「num」とするカラムは、4である。項目名を「ShopID」とするカラムは、5である。そして、1レコード目には、0カラム目に「U001」のデータが設定されている。1カラム目に「2015/04/01 11:00:00」のデータが設定されている。2カラム目に「I0001」のデータが設定されている。3カラム目に「itemName1」のデータが設定されている。4カラム目に「2」のデータが設定されている。5カラム目に「S001」のデータが設定されている。
符号化処理は、「UserID」の符号化方法に基づいて、「UserID」のデータ「U001」を符号化する。この結果、「U001」は、「00h」に符号化される。符号化処理は、「TimeStamp」の符号化方法に基づいて、「TimeStamp」のデータ「2015/04/01 11:00:00」を符号化する。この結果、「2015/04/01 11:00:00」は、「FF300103h」に符号化される。符号化処理は、「ItemID」の符号化方法に基づいて、「ItemID」のデータ「I0001」を符号化する。この結果、「I0001」は、「14h」に符号化される。符号化処理は、「ItemName」の符号化方法に基づいて、「ItemName」のデータ「itemName1」を符号化する。この結果、「itemName1」は、「F00000h」に符号化される。符号化処理は、「num」の符号化方法に基づいて、「num」のデータ「2」を符号化する。この結果、「2」は、「40000000h」に符号化される。符号化処理は、「ShopID」の符号化方法に基づいて、「ShopID」のデータ「S001」を符号化する。この結果、「S001」は、「6000h」に符号化される。
復号化処理は、符号化テーブルに対する処理命令を受け付けると、受け付けた処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。例えば、処理命令がテーブルの項目名として「num」および「ShopID」のデータを参照する命令であるとする。すると、復号化処理は、テーブル定義から、処理対象の項目名を示す「num」および「ShopID」に対応付けられたそれぞれのカラム情報を抽出する。一例として、「num」のカラム情報には、カラムとして「4」が含まれる。「ShopID」に対応付けられたカラム情報には、カラムとして「5」が含まれる。
また、復号化処理は、抽出した処理対象カラム情報を用いて、符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する。例えば、復号化処理は、「num」に関する処理対象カラム情報を用いて「num」のカラム「4」を取得し、符号化テーブルから、カラム「4」に対応した符号化データを抽出する。復号化処理は、抽出した符号化データを部分符号化テーブルに書き込む。そして、復号化処理は、「ShopID」に関する処理対象カラム情報を用いて「ShopID」のカラム「5」を取得し、符号化テーブルから、カラム「5」に対応した符号化データを抽出する。復号化処理は、抽出した符号化データを部分符号化テーブルに書き込む。一例として、符号化テーブルには、1列目に、カラム「4」の符号化データ「400000000h 3f800000h ・・・」が書き込まれる。そして、部分符号化テーブルには、2列目に、カラム「5」の符号化データ「6000h 6000h ・・・」が書き込まれる。
ここで、復号化処理は、復号化の処理命令を受け付けると、生成された部分符号化テーブルの符号化データを復号する。すなわち、復号化処理は、符号化テーブルに対する処理命令で抽出された符号化データを部分復号化する。例えば、復号化処理は、「num」の復号化方法に基づいて、「num」の符号化データを復号化する。復号化処理は、「ShopID」の復号化方法に基づいて、「ShopID」の符号化データを復号化する。一例として、「num」の復号化データとして「2 1 1 3」、「ShopID」の復号化データとして「S001 S001 S002 S002」が出力される。
このようにして、符号化と復号化処理は、カンマで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照であっても、復号化処理を行わずに、データを参照することができる。また、符号化と復号化処理は、先頭から一括した復号化を行わずに、参照が必要なデータのみを復号化することができる。
[実施例1に係る情報処理装置の構成]
次に、図2を参照して、実施例1に係る符号化と復号化処理を実行する情報処理装置1の構成について説明する。図2は、実施例1に係る情報処理装置の構成を示す機能ブロック図である。図2に示すように、情報処理装置1は、符号化部10、復号化部20および記憶部30を有する。
符号化部10および復号化部20を含む制御部(図示せず)は、図1に示した符号化と復号化処理を実行する処理部である。制御部は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部は、CPUやMPUなどの電子回路に対応する。
記憶部30は、例えばフラッシュメモリやFRAM(登録商標)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部30は、テーブル定義31、静的辞書32および動的辞書33を有する。
テーブル定義31は、テーブルを構成する項目ごとに、カラムと符号化方法との対応付けを定義する。テーブル定義31は、複数のテーブルに対して定義する。静的辞書32は、出現頻度が高い項目の項目値に対して、より短い符号を割り当てた辞書のことをいう。動的辞書33は、静的辞書に登録されていない項目値と、動的に付された動的コード(符号)と、を対応付けた辞書である。なお、テーブル定義31、静的辞書32および静的辞書33の詳細は、後述する。
[テーブル定義の一例]
ここで、テーブル定義31の一例を、図3を参照して説明する。図3は、実施例1に係るテーブル定義の一例を示す図である。図3に示すように、テーブル定義31は、テーブル名31aおよび項目名31bごとのオフセット/符号化種別を対応付けて記憶する。オフセットは、符号31cで表わす。符号化種別は、符号31dで表わす。テーブル名31aは、テーブルの名称である。項目名31bは、テーブルを構成する項目の名称である。オフセット31cは、テーブルを構成する項目のテーブル上の位置情報である。つまり、オフセット31cは、カラムに対応する。符号化種別31dは、符号化方法に対応する種別である。一例として、符号化種別31dが「0h」である場合には、符号化方法が静的辞書32を用いて符号化することを表す。符号化種別31dが「1h」である場合には、符号化方法が動的辞書33を用いて符号化することを表す。符号化種別31dが「2h」である場合には、int型の数値バイナリ変換を用いて符号化することを表す。符号化種別31dが「3h」である場合には、float型の数値バイナリ変換を用いて符号化することを表す。符号化種別31dが「4h」である場合には、double型の数値バイナリ変換を用いて符号化することを表す。符号化種別31dが「F0h」以上である場合には、符号化方法がタイトル項目の符号化であって動的辞書33を用いて符号化することを表す。
一例として、テーブル名31aが「注文テーブル」である場合を説明する。項目名31bが「OrderID」の場合には、オフセット31cとして「0」、符号化種別31dとして「0h」と記憶している。すなわち、「OrderID」は、カラムを0とし、且つ、符号化方法を、静的辞書32を用いて符号化することを意味する。項目名31bが「TimeStamp」の場合には、オフセット31cとして「1」、符号化種別31dとして「F3h」と記憶している。すなわち、「TimeStamp」は、カラムを1とし、且つ、符号化方法を、タイトル項目の場合の符号化であって動的辞書33を用いて符号化することを意味する。項目名31bが「ItemName」の場合には、オフセット31cとして「3」、符号化種別31dとして「1h」と記憶している。すなわち、「ItemName」は、カラムを3とし、且つ、符号化方法を、動的辞書33を用いて符号化することを意味する。項目名31bが「num」の場合には、オフセット31cとして「4」、符号化種別31dとして「3h」と記憶している。すなわち、「num」は、カラムを4とし、且つ、符号化方法を、float型の数値バイナリ変換を用いて符号化することを意味する。
図2に戻って、符号化部10は、テーブルにおいて、カンマで区切られたカラムが示すデータを各レコードのカラムごとに符号化する。例えば、符号化部10は、符号化対象のテーブルを読み出す。符号化部10は、カンマで区切られた文字列を処理対象として選択する。符号化部10は、選択した文字列に対応する項目(カラム)の処理対象カラム情報をテーブル定義31から読み出す。符号化部10は、読み出した処理対象カラム情報に含まれる符号化種別31dに基づいて、選択した文字列を符号化する。符号化部10は、符号化した符号コードを符号化バッファに書き込む。符号化部10は、全てのデータを符号化すると、符号化バッファを符号化テーブルに書き込む。
復号化部20は、抽出部21、編集部22および部分復号化部23を有する。
抽出部21は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルから処理対象のカラムのデータを抽出する。例えば、抽出部21は、処理命令からテーブル名、参照項目、集計項目および条件項目の項目名を取得する。抽出部21は、テーブル定義31から、取得したテーブル名のテーブルごとに、取得した参照項目、集計項目および条件項目のうち処理命令に存在する項目の処理対象カラム情報を抽出する。そして、抽出部21は、対象の項目の処理対象カラム情報のオフセット31cを用いて、テーブルごとの符号化テーブルから、対象の項目の項目値をレコード単位で抽出する。そして、抽出部21は、符号化テーブルから抽出された項目値をレコード単位で符号化ファイルに書き込む。符号化ファイルは、取得したテーブル名が複数ある場合には、それぞれのテーブル名に対応する符号化テーブルごとに生成される。
編集部22は、抽出部21によって抽出された処理対象のカラム(項目)のデータ(項目値)を、処理命令に合わせて編集する。例えば、編集部22は、処理命令が条件項目を用いた抽出/結合条件に合致する参照項目のデータを参照する命令である場合には、抽出部21によって抽出された処理対象の項目の項目値から、抽出/結合条件に合致する参照項目の項目値を抽出する。結合条件とは、一例として、複数のテーブルをそれぞれのテーブルの条件項目を用いて結合する条件(join・・・on・・・)のことをいう。抽出条件とは、一例として、条件項目を用いて参照項目を抽出する条件(where・・・)のことをいう。そして、編集部22は、抽出した項目値を部分符号化ファイルに格納する。加えて、編集部22は、処理命令が集計項目を含む場合には、抽出部21によって抽出された集計に関わる参照項目の項目値を、後述する部分復号化部23に復号化させる。そして、編集部22は、符号化ファイルを結合条件で結合し、集約条件で集計する。ここでいう集約条件とは、集計する際に用いられる条件であって条件項目を用いて集計(集約)する条件(group by・・・)のことをいう。そして、編集部22は、集計値を符号化し、符号化した集計値を他の参照項目の項目値とともに部分符号化ファイルに格納する。なお、符号化処理は、符号化部10と同様の手法で行えば良い。
部分復号化部23は、依頼された項目の項目値だけを復号化する。すなわち、部分復号化部23は、符号化テーブルのそれぞれの項目値のうち依頼された項目の項目値だけを部分的に復号化する。例えば、部分復号化部23は、編集部22から集計に関わる項目の項目値を部分復号化する旨の依頼を受け付けると、当該項目(カラム)の処理対象カラム情報をテーブル定義31から読み出す。部分復号化部23は、読み出した処理対象カラム情報に含まれる符号化種別31dに基づいて、依頼された項目の項目値を復号化する。一例として、部分復号化部23は、符号化種別31dが2h〜4hである場合には、数値バイナリ変換であると判断し、数値バイナリであることを示す項目値を文字列に復号化する。なお、部分復号化部23は、符号化種別31dが数値バイナリ変換以外の符号化手法を示す場合には、部分復号化用のオートマトンを用いて、項目値を文字列に復号化すれば良い。部分復号化用のオートマトンについては、後述する。
[静的辞書および動的辞書の一例]
次に、実施例1に係る静的辞書32および動的辞書33の一例を、図4を参照して説明する。図4は、実施例1に係る静的辞書および動的辞書の一例を示す図である。
図4に示すように、静的辞書32には、文字列が出現頻度に応じて1バイトまたは2バイトの符号にマッピングされる。00h〜5Fhが1バイトの符号である。6000h〜EFFFhが2バイトの符号である。動的辞書33には、静的辞書32に登録されていない文字列であって数値でない文字列が3バイトまたは4バイトの符号にマッピングされる。F00000h〜FEFFFFhが3バイトの符号である。FF000000h〜FFFFFFFFhが4バイトの符号である。なお、図4の例では、1バイトの符号および2バイトの符号がマッピングされている。
図4の例では、主キーや外部参照キーの文字列が1バイトの符号にマッピングされている。一例として、主キーである項目「OrderID」について、文字列「O001」が1バイトの「00h」にマッピングされている。文字列「O020」が1バイトの「13h」にマッピングされている。外部参照キーである項目「ItemID」について、文字列「I0001」が1バイトの「14h」にマッピングされている。文字列「I0076」が「5Fh」にマッピングされている。また、外部参照キーである項目「ShopID」について、文字列「S001」が2バイトの「6000h」にマッピングされている。
また、項目「ItemName」について、文字列「itemName1」が、符号化の際に当該項目の符号化種別31dに応じて3バイトの「F00000h」にマッピングされる。文字列「itemName2」が、符号化の際に当該項目の符号化種別31dに応じて3バイトの「F00002h」にマッピングされる。また、タイトル項目「TimeStamp」について、文字列「2015/04/01 11:00:00」が、符号化の際に当該項目の符号化種別31dに応じて4バイトの「FF300103h」にマッピングされる。文字列「2015/04/01 11:01:00」が、符号化の際に当該項目の符号化種別31dに応じて4バイトの「FF300113h」にマッピングされる。
[部分復号化に関するオートマトンの一例]
次に、部分復号化用のオートマトンの一例を、図5を参照して説明する。図5は、部分復号化用のオートマトンの一例を示す図である。図5に示すように、部分復号化用のオートマトンは、1バイト・コードのテーブル、2バイト・コードのテーブルおよび3バイト・コードのテーブルを含む。それぞれのテーブルは、符号ごとに復号化用の2バイトのレジスタを有する。かかるレジスタには、照合フラグと結果フラグとが含まれる。照合フラグは、かかる情報の15ビット目にあり、照合が必要であるか否かを示す。照合が必要である場合には、「1」が設定され、照合が不要である場合には、「0」が設定される。結果フラグは、かかる情報の14ビット目にあり、復号化結果が有るか否かを示す。復号化結果が有る場合には、「1」が設定され、復号化結果が無い場合には、「0」が設定される。復号化結果が有る場合には、復号化結果が存在する位置を示す符号化文字列へのポインタが設定される。復号化結果が無い場合には、復号化文字列へのポインタが設定されていないことを示す。
一例として、「00h」を復号化する場合には、部分復号化部23は、部分復号化用のオートマトンを用いて、「00h」に対応するレジスタを取得する。すなわち、部分復号化部23は、第1バイトが00h〜5Fhであるので、1バイト・コードのテーブルを参照し、「00h」に対応するレジスタを取得する。そして、部分符号化部23は、照合、結果および復号化文字列へのポインタを参照し、復号化結果を示す文字列「O001」を取得する。
別の例として、「6001h」を復号化する場合には、部分復号化部23は、部分復号化用のオートマトンを用いて、「6001h」に対応するレジスタを取得する。すなわち、部分復号化部23は、第1バイトが60h〜EFhであるので、2バイト・コードのテーブルを参照し、「6001h」に対応するレジスタを取得する。そして、部分復号化部23は、照合、結果および復号化文字列へのポインタを参照し、復号化結果を示す文字列「S002」を取得する。
[符号化と復号化処理の流れの一例]
次に、実施例1に係る符号化と復号化処理の流れの一例を、図6を参照して説明する。図6は、実施例1に係る符号化と復号化処理の流れの一例を示す図である。なお、図6では、図3で示したテーブル定義31を用いるものとする。図6では、図4で示した静的辞書32を用いるものとする。
図6に示すように、符号化部10は、カンマで区切られた注文テーブルT0のデータを各レコードのカラムごとに符号化する。例えば、符号化部10は、符号化対象の注文テーブルT0を読み出す。符号化部10は、読み出した注文テーブルT0の、カンマで区切られた文字列を処理対象として選択する。符号化部10は、処理対象に対応する項目(カラム)の処理対象カラム情報をテーブル定義31から読み出す。符号化部10は、読み出した処理対象カラム情報に含まれる符号化種別31dに基づいて、選択した文字列を符号化する。
ここでは、1レコード目について、文字列「O001」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「OrderID」の処理対象カラム情報「0/0h」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dが0x0であるので、静的辞書32を用いて符号化する。この結果、文字列「O001」は、「00h」に符号化される。
文字列「2015/04/01 11:00:00」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「TimeStamp」の処理対象カラム情報「1/F3h」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dがF3hであり0xF0以上であるので、タイトル項目の符号化であると判断し、動的辞書33を用いて符号化する。この結果、文字列「2015/04/01 11:00:00」は、「FF300000h」からの符号のうちマッピングがされていない符号が「FF300103h」であるとすると、「FF300103h」に符号化される。
文字列「I0001」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「ItemID」の処理対象カラム情報「2/0h」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dが0hであるので、静的辞書32を用いて符号化する。この結果、文字列「I0001」は、「14h」に符号化される。
文字列「itemName1」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「itemName1」の処理対象カラム情報「3/0x1」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dが1hであるので、動的辞書33を用いて符号化する。この結果、文字列「itemName1」は、「F00000h」からの符号のうちマッピングがされていない符号が「F00000h」であるとすると、「F00000h」に符号化される。
文字列「2」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「num」の処理対象カラム情報「4/3h」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dが0x3であるので、float型の数値バイナリ変換を用いて符号化する。この結果、文字列「2」は、「40000000h」に符号化される。
文字列「S001」を処理対象とする。すると、符号化部10は、処理対象に対応する項目「ShopID」の処理対象カラム情報「5/0h」をテーブル定義31から読み出す。符号化部10は、処理対象カラム情報から、符号化種別31dが0x0であるので、静的辞書32を用いて符号化する。この結果、文字列「S001」は、「6000h」に符号化される。
注文テーブルの2レコード以降も、同様に符号化する。この結果、符号化部10は、符号化されたデータを符号化テーブルC0に書き込む。
そして、符号化部10は、カンマで区切られた店舗テーブルT1のデータを各レコードのカラムごとに符号化する。符号化方法は、注文テーブルT0の場合と同様であるので、その説明を省略する。この結果、符号化部10は、符号化されたデータを符号化テーブルC1に書き込む。
次に、抽出部21は、符号化テーブルC0,C1に対する処理命令P0に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルC0,C1から処理対象のカラムのデータを抽出する。符号P0で示される処理命令は、注文テーブルT0の符号化テーブルC0と店舗テーブルT1の符号化テーブルC1とをShopIDで結合(join)する。そして、処理命令は、結合したテーブルから符号化テーブルC1のShopIDおよびShopName並びに符号化テーブルC0のnumを参照するものである。さらに、numはShopIDおよびShopNameをキーとして集計(group by)する。
例えば、抽出部21は、処理命令P0からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、抽出部21は、処理命令P0から、テーブル名として注文テーブルT0の符号化テーブルC0と店舗テーブルT1の符号化テーブルC1とを取得する。抽出部21は、処理命令P0から、参照項目の項目名として符号化テーブルC1のShopIDおよびShopName並びに符号化テーブルC0のnumを取得する。抽出部21は、処理命令P0から条件項目の項目名として符号化テーブルC1および符号化テーブルC0それぞれのShopIDを取得する。抽出部21は、処理命令P0から、集計項目の項目名としてShopIDおよびShopNameを取得する。
そして、抽出部21は、テーブル定義31から、取得したテーブル名のテーブルごとに、参照項目、集計項目および条件項目のうち存在する項目(カラム)の処理対象カラム情報を抽出する。ここでは、参照項目として取得された符号化テーブルC1のShopIDの処理対象カラム情報は、0/0hであり、符号化テーブルC1のShopNameの処理対象カラム情報は、1/1hであり、符号化テーブルC0のnumの処理対象カラム情報は、4/3hである。条件項目として取得された符号化テーブルC1のShopIDの処理対象カラム情報は、0/0hであり、符号化テーブルC0のShopIDの処理対象カラム情報は、5/0hである。集計項目として取得された符号化テーブルC1のShopIDおよびShopNameの処理対象カラム情報は、それぞれ0/0h、1/1hである。
そして、抽出部21は、符号化テーブルC0,C1から、抽出した処理対象カラム情報に含まれるオフセット31cに位置する項目値を抽出する。ここでは、抽出部21は、符号化テーブルC0から、numおよびShopIDそれぞれの処理対象カラム情報に含まれるオフセット31c(4、5)に位置する項目値を抽出する。一例として、1レコード目について、numの項目値として「40000000h」、ShopIDの項目値として「6000h」が抽出される。2レコード目について、numの項目値として「3F800000h」、ShopIDの項目値として「6000h」が抽出される。そして、抽出部21は、符号化テーブルC0から抽出されたデータを符号化ファイルR0に書き込む。
さらに、抽出部21は、符号化テーブルC1から、ShopIDおよびShopNameそれぞれの処理対象カラム情報に含まれるオフセット31c(0、1)に位置する項目値を抽出する。一例として、1レコード目について、ShopIDの項目値として「6000h」、ShopNameの項目値として「F00012h」が抽出される。2レコード目について、ShopIDの項目値として「6001h」、ShopNameの項目値として「F00014h」が抽出される。そして、抽出部21は、符号化テーブルC1から抽出されたデータを符号化ファイルR1に書き込む。
次に、編集部22は、処理命令P0が集計項目を含む場合には、抽出部21によって抽出された集計に関わる参照項目の項目値を、部分復号化部23に復号化させる。ここでは、処理命令P0が集計項目を含むので、編集部22は、集計に関わる参照項目numの項目値を部分復号化部23に復号化させる。部分復号化部23は、参照項目numの処理対象カラム情報4/3hに含まれる符号化種別31d(3h)に基づいて、参照項目numの項目値だけを復号化する。かかる場合には、部分復号化部23は、3hがfloat型の数値バイナリ変換であると判断し、数値バイナリであることを示す項目値を文字列に復号化する。この結果、一例として、「40000000h」は、文字列「2」に復号化される。「3f800000h」は、文字列「1」に復号化される。そして、編集部22は、符号化ファイルR0を部分復号化したデータを含むデータを符号化ファイルD0に書き込む。編集部22は、符号化ファイルR1が部分復号化されていないので、符号化ファイルR1をそのまま符号化ファイルD1に書き込む。
この後、編集部22は、部分復号化した結果を、他の参照項目の項目値とともに部分符号化ファイル(図示せず)に格納する。ここでは、編集部22は、集計に関わる参照項目numの項目値を部分復号化した結果を、集約条件(group by ShopID、ShopName)で集計し、集計値を符号化する。編集部22は、numの符号化された集計値を、ShopIDおよびShopNameの符号化された項目値とともに部分符号化ファイルに書き込む。
[符号化処理の処理手順]
図7Aおよび図7Bは、実施例1に係る符号化処理の処理手順を示すフローチャートである。
図7Aに示すように、符号化部10は、前処理を実行する(ステップS11)。例えば、符号化部10は、各種記憶領域を記憶部30に確保する。一例として、符号化部10は、符号化バッファの記憶領域を記憶部30に確保する。
符号化部10は、符号化対象のテーブルを読み出す(ステップS12)。符号化部10は、読み出したテーブルについて、カンマで区切られた文字列を処理対象として選択する(ステップS13)。符号化部10は、選択した処理対象の処理対象カラム情報を取得する(ステップS14)。
続いて、符号化部10は、処理対象を符号化する(ステップS15)。なお、処理対象の符号化処理の処理手順は、図7Bで説明する。そして、符号化部10は、符号化された符号コードを符号化バッファに書き込む(ステップS16)。
そして、符号化部10は、テーブルの終点か否かを判定する(ステップS17)。テーブルの終点でないと判定した場合には(ステップS17;No)、符号化部10は、次の文字列の符号化をすべく、ステップS13に移行する。
一方、テーブルの終点であると判定した場合には(ステップS17;Yes)、符号化部10は、符号化バッファを符号化テーブルに書き込む(ステップS18)。符号化部10は、未処理のテーブルがあるか否かを判定する(ステップS19)。未処理のテーブルがあると判定した場合には(ステップS19;Yes)、符号化部10は、次のテーブルを読み出すべく、ステップS12に移行する。
一方、未処理のテーブルがないと判定した場合には(ステップS19;No)、符号化部10は、符号化処理を終了する。
図7Bに示すように、処理対象の文字列を受け取った符号化部10は、当該処理対象の文字列に対応する項目の符号化種別31dをテーブル定義31から読み出す(ステップS30)。符号化部10は、符号化種別31dが‘0h’であるか否かを判定する(ステップS31)。一例として、‘0h’は、符号化方法が静的辞書32を用いて符号化することを表す符号化種別31dである。
符号化種別31dが‘0h’であると判定した場合には(ステップS31;Yes)、符号化部10は、静的辞書32に登録されている静的コードを符号コードとして出力する(ステップS32)。そして、符号化部10は、処理対象の符号化処理を終了する。
一方、符号化種別31dが‘0h’でないと判定した場合には(ステップS31;No)、符号化部10は、符号化種別31dが‘1h’であるか、または‘F0h’以上であるか否かを判定する(ステップS33)。一例として、‘1h’は、符号化方法が動的辞書33を用いて符号化することを表す符号化種別31dである。‘F0h’は、符号化方法が、タイトル項目である場合の符号化であって動的辞書33を用いて符号化することを表す符号化種別31dである。
符号化種別31dが‘1h’である、または‘F0h’以上であると判定した場合には(ステップS33;Yes)、符号化部10は、動的辞書33を参照する(ステップS34)。そして、符号化部10は、動的辞書33に処理対象の文字列が登録済みであるか否かを判定する(ステップS35)。動的辞書33に処理対象の文字列が登録済みであると判定した場合には(ステップS35;Yes)、符号化部10は、処理対象の文字列に動的コードを割り当てるべく、ステップS37に移行する。
一方、動的辞書33に処理対象の文字列が登録済みでないと判定した場合には(ステップS35;No)、符号化部10は、符号化種別31dに対応した辞書領域に処理対象の文字列を登録する(ステップS36)。そして、符号化部10は、処理対象の文字列に動的コードを割り当てるべく、ステップS37に移行する。
ステップS37において、符号化部10は、動的辞書33に登録されている動的コードを符号コードとして出力する(ステップS37)。例えば、符号化部10は、処理対象の文字列を登録した際に当該処理対象の文字列と対応付けられた動的コードに符号化する。そして、符号化部10は、符号化した動的コードを符号コードとして出力する。そして、符号化部10は、処理対象の符号化処理を終了する。
ステップS33において、符号化種別31dが‘1h’でない、且つ‘F0h’以上でないと判定した場合には(ステップS33;No)、符号化部10は、処理対象の文字列を数値バイナリ変換した後のデータを符号コードとして出力する(ステップS38)。すなわち、符号化部10は、符号化種別31dが数値バイナリ変換であると判断する。そして、符号化部10は、処理対象の符号化処理を終了する。
[復号化処理の処理手順]
図8は、実施例1に係る復号化処理の処理手順を示すフローチャートである。
図8に示すように、復号化部20は、符号化テーブルに対する処理命令を受け付けたか否かを判定する(ステップS41)。処理命令を受け付けていないと判定した場合には(ステップS41;No)、復号化部20は、処理命令を受け付けるまで、判定処理を繰り返す。
一方、処理命令を受け付けたと判定した場合には(ステップS41;Yes)、復号化部20は、処理命令から、テーブル名、参照項目、抽出/結合条件の項目および集計項目を取得する(ステップS42)。
そして、復号化部20は、取得した項目のカラムに関するカラム情報をテーブル定義31から抽出する(ステップS43)。例えば、復号化部20は、テーブル定義31から、取得したテーブル名のテーブルごとに、取得した参照項目、抽出/結合条件の項目および集計項目の処理対象カラム情報を抽出する。
そして、復号化部20は、取得した項目のカラム情報を用いて、取得した項目の項目値を対象テーブルの符号化テーブルから抽出する(ステップS44)。例えば、復号化部20は、テーブルごとの符号化ファイルから、抽出した処理対象カラム情報に含まれるオフセット31cに位置する項目値を抽出する。
続いて、復号化部20は、復号化が必要か否かを判定する(ステップS45)。復号化が必要でないと判定した場合には(ステップS45;No)、復号化部20は、ステップS47に移行する。
一方、復号化が必要と判定した場合には(ステップS45;Yes)、復号化部20は、集計に関わる参照項目の符号コードを部分復号化する(ステップS46)。例えば、復号化部20は、参照項目の処理対象カラム情報に含まれる符号化種別31dに基づいて、当該参照項目の符号コードを復号化する。そして、復号化部20は、ステップS47に移行する。
ステップS47において、復号化部20は、処理命令の実行結果を出力する(ステップS47)。例えば、復号化部20は、集計結果を他の参照項目の符号コードとともに部分符号化ファイルに書き込む。
[実施例1の効果]
このようにして、上記実施例1では、情報処理装置1は、デリミタで区切られたテーブルのデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置1は、処理対象カラム情報を用いて、複数の符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する。かかる構成によれば、情報処理装置1は、デリミタで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照であっても、復号化処理を行わずに、データを参照できる。
また、上記実施例1では、情報処理装置1は、処理対象カラム情報を用いて、複数の符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出し、処理命令の条件に対応した符号化データを部分復号化する。かかる構成によれば、情報処理装置1は、条件に対応したデータを部分復号化できる。
ところで、実施例1に係る情報処理装置1は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルから処理対象のカラムのデータを抽出する。しかしながら、情報処理装置1は、これに限定されず、処理命令の抽出条件が範囲指定を示す条件である場合には、処理対象カラム情報を用いて、符号化テーブルから抽出条件に従った処理対象のカラムのデータを抽出しても良い。範囲指定を示す抽出条件で指定される項目には、一例として、タイトル項目が挙げられる。
そこで、実施例2に係る情報処理装置1は、符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置1は、抽出した処理対象カラム情報を用いて、符号化テーブルから、処理命令の範囲が指定される抽出条件に従った処理対象のカラムのデータを抽出する場合を説明する。
[実施例2に係る情報処理装置の構成]
図9は、実施例2に係る情報処理装置の構成を示す機能ブロック図である。なお、図2に示す情報処理装置1と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、符号化部10を符号化部10Aに変更し、復号化部20Aを、ETL処理を行うETL処理部20Aに変換した点にある。実施例1と実施例2とが異なるところは、抽出部21を第1の抽出部21Aに変更し、第2の抽出部41を追加した点にある。なお、第1の抽出部21Aの動作は、抽出部21と同一である。
符号化部10Aは、カンマで区切られたテーブルにタイトル項目が存在する場合には、各レコードをタイトル項目の項目値順にソートする。符号化部10Aは、テーブルのデータを各レコードのカラムごとに符号化する。なお、テーブルにタイトル項目が存在する場合の各レコードのソートの順番は、昇順であっても良いし、降順であっても良い。実施例2では、ソートの順番を昇順として説明する。例えば、符号化部10Aは、符号化対象のテーブルを読み出す。符号化部10Aは、カンマで区切られた文字列を処理対象として選択する。符号化部10Aは、選択した文字列に対応する項目(カラム)の処理対象カラム情報をテーブル定義31から読み出す。符号化部10Aは、読み出した処理対象カラム情報に含まれる符号化種別31dに基づいて、選択した文字列を符号化する。
第1の抽出部21Aは、実施例1に係る抽出部21と同一の動作であるので、その説明を省略する。
第2の抽出部41は、範囲指定を示す条件である抽出条件に基づいて、第1の抽出部21Aによって抽出されたレコードから該当するレコードを抽出する。
一例として、第2の抽出部41は、抽出条件を構成する項目がタイトル項目である場合には、当該項目の項目値が動的辞書33に登録済みであるか否かを判定する。第2の抽出部41は、項目の項目値が動的辞書33に登録済みである場合には、抽出条件を構成する項目の項目値を動的辞書33に登録されている動的コードに代える。そして、第2の抽出部41は、動的辞書33を用いて抽出条件に合致するレコードを抽出する。第2の抽出部41は、項目の項目値が動的辞書33に登録済みでない場合には、動的辞書33から抽出条件に合致する文字列であって範囲指定の境界に当たる文字列を探索する。第2の抽出部41は、抽出条件を構成する項目の項目値を探索文字列に対応する動的コードに代える。そして、第2の抽出部41は、動的辞書33を用いて抽出条件に合致するレコードを抽出する。範囲指定の境界に当たる文字列を探索する手法には、一例として、2分探索、2分木探索およびB木探索が挙げられる。すなわち、第2の抽出部41は、符号化ファイルに存在するレコード上の、抽出条件を構成する項目の符号コードを復号化しなくても、データを抽出できる。
また、別の例として、第2の抽出部41は、抽出条件を構成する項目が数値型である場合には、当該項目の項目値を数値バイナリに変換する。第2の抽出部41は、抽出条件を構成する項目の項目値を変換後の符号コードに代え、抽出条件に合致するレコードを抽出する。すなわち、第2の抽出部41は、符号化ファイルに存在するレコード上の、抽出条件を構成する項目の符号コードを復号化しなくても、データを抽出できる。
なお、第2の抽出部41は、抽出条件を構成する項目がタイトル項目でない場合には、レコード上の抽出条件を構成する項目の符号コードを復号化してから、抽出条件に合致するレコードを抽出すれば良い。
[タイトル項目の動的辞書への登録の一例]
図10は、タイトル項目の動的辞書への登録の一例を示す図である。なお、図10では、タイトル項目が「TimeStamp」であるものとする。そして、タイトル項目の符号化種別31dがF3hである場合とする。かかる場合には、符号化部10Aは、4バイトの動的コード「FF300000h」から順に動的コードを割り当てるものとする。
ここで、カンマで区切られたテーブルにタイトル項目「TimeStamp」が存在するとする。すると、符号化部10Aは、テーブルの各レコードをタイトル項目の項目値順にソートする。そして、符号化部10Aは、テーブルのデータを各レコードのカラムごとに符号化する。ここでは、「TimeStamp」の項目値が「2014/01/01 00:00:00」「2014/01/01 01:00:00」「2015/04/04 23:00:00」の順にソートされたとする。さらに、「2015/04/05 00:00:00」「2015/04/05 01:00:00」「2015/04/05 01:03:00」の順にソートされたとする。符号化部10Aは、「TimeStamp」の項目値について、この順番に符号化する。
図10の左図に示すように、「2014/01/01 00:00:00」には、動的符号として最初の「FF300000h」が割り当てられる。「2014/01/01 01:00:00」には、動的符号として次の「FF300001h」が割り当てられる。
ここで、動的辞書33に登録されていない項目値「2013/12/31 00:00:00」が追加されるとする。すると、符号化部10Aは、追加された項目値を含むテーブルの各レコードをタイトル項目の項目値順にソートする。符号化部10Aは、テーブルのデータを各レコードのカラムごとに符号化する。ここでは、「TimeStamp」の項目値が「2013/12/31 00:00:00」「2014/01/01 00:00:00」「2014/01/01 01:00:00」「2015/04/04 23:00:00」の順にソートされる。さらに、「2015/04/05 00:00:00」「2015/04/05 01:00:00」「2015/04/05 01:03:00」の順にソートされる。符号化部10Aは、「TimeStamp」の項目値について、この順番に符号化する。
図10の右図に示すように、「2013/12/31 00:00:00」には、動的符号として最初の「FF300000h」が割り当てられる。「2014/01/01 00:00:00」には、動的符号として次の「FF300001h」が割り当てられる。「2014/01/01 01:00:00」には、動的符号としてその次の「FF300002h」が割り当てられる。
[第2の抽出処理の一例]
図11は、実施例2に係る第2の抽出処理の一例を示す図である。図11に示すように、抽出条件は、「TimeStamp>‘2014/04/05 00:00:00’」であるとする。「TimeStamp」は、タイトル項目である。
図11の左図に示すように、第2の抽出部41は、抽出条件を構成する項目「TimeStamp」がタイトル項目であるので、当該項目の項目値「2014/04/05 00:00:00」が動的辞書33に登録済みであるか否かを判定する。ここでは、項目の項目値「2014/04/05 00:00:00」が動的辞書33に登録済みである。
そこで、第2の抽出部41は、抽出条件を構成する項目の項目値を動的辞書33に登録されている動的コードに代える。ここでは、第2の抽出部41は、抽出条件を構成する項目の項目値「2014/04/05 00:00:00」を動的辞書33に登録されている動的符号「FF3010ADh」に代える。
そして、第2の抽出部41は、動的辞書33を用いて抽出条件に合致するレコードを抽出する。ここでは、第2の抽出部41は、「TimeStamp」が動的符号「FF3010ADh」より大きい動的符号を持つレコードを抽出する。符号テーブルをC8とすると、「TimeStamp」の動的符号として「FF301A03h」および「FF3010AEh」を持つレコードが抽出される。
図11の右図に示すように、第2の抽出部41は、抽出条件を構成する項目「TimeStamp」がタイトル項目である場合には、当該項目の項目値「2014/04/05 00:00:00」が動的辞書33に登録済みであるか否かを判定する。ここでは、項目の項目値「2014/04/05 00:00:00」が動的辞書33に登録されていない。
そこで、第2の抽出部41は、動的辞書33から抽出条件に合致する文字列であって範囲指定の境界となる項目値(文字列)を探索する。ここでは、2分探索を用いるとする。すると、第2の抽出部41は、最初の動的符号「FF300000h」に対応付けられた項目値は、抽出条件に合致しない(False)と判定する。次に、第2の抽出部41は、最後の動的符号「FF300006h」に対応付けられた項目値は、抽出条件に合致する(True)と判定する。そこで、第2の抽出部41は、中間の動的符号「FF300003h」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致しない(False)と判定する。さらに、第2の抽出部41は、中間の動的符号「FF300005h」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致する(True)と判定する。そして、第2の抽出部41は、中間の動的符号「FF300004h」に対応付けられた項目値を探索し、この動的符号に対応付けられた項目値は、抽出条件に合致する(True)と判定する。
そして、第2の抽出部41は、隣り合う動的符号でFalse/Trueになった場合に、抽出条件を構成する項目の項目値をTrueである動的符号に代える。ここでは、第2の抽出部41は、抽出条件を構成する項目の項目値「2014/04/05 00:00:00」を動的辞書33に登録されている動的符号「FF300004h」に代える。
そして、第2の抽出部41は、動的辞書33を用いて抽出条件に合致するレコードを抽出する。ここでは、第2の抽出部41は、「TimeStamp」が動的符号「FF300004h」以上の動的符号を持つレコードを抽出する。符号テーブルをC9とすると、「TimeStamp」の動的符号として「FF301A03h」、「FF300103h」、「FF3010AEh」および「FF30010Dh」を持つレコードが抽出される。
[符号化とETL処理の流れの一例]
次に、実施例2に係る符号化とETL処理の流れの一例を、図12を参照して説明する。図12は、実施例2に係る符号化とETL処理の流れの一例を示す図である。なお、図12では、図3で示したテーブル定義31を用いるものとする。図12では、図4で示した静的辞書32を用いるものとする。
図12に示すように、符号化部10Aは、カンマで区切られた注文テーブルT0にタイトル項目が存在する場合には、各レコードをタイトル項目の項目値順にソートし、注文テーブルT0のデータを各レコードのカラムごとに符号化する。ここでは、注文テーブルT0にタイトル項目「TimeStamp」が存在するので、符号化部10Aは、各レコードをタイトルの項目値順にソートする。そして、符号化部10Aは、ソートした後の注文テーブルT0のデータを各レコードのカラムごとに符号化する。注文テーブルT0を符号化した結果は、符号化テーブルC10である。店舗テーブルT1にタイトル項目「TimeStamp」が存在しないので、符号化部10Aは、ソート処理をしないで、店舗テーブルT1のデータを各レコードのカラムごとに符号化する。店舗テーブルT1を符号化した結果は、符号化テーブルC20である。
次に、第1の抽出部21Aは、符号化テーブルC10,C20に対する処理命令P0に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルC10、C20から処理対象のカラムのデータを抽出する。符号P0で示される処理命令は、注文テーブルT0の符号化テーブルC10と店舗テーブルT1の符号化テーブルC20とをShopIDで結合(join)する。そして、処理命令は、結合したテーブルから符号化テーブルC10のShopIDおよびShopName並びに符号化テーブルC10のnumを参照するものである。さらに、numはShopIDおよびShopNameをキーとして集計(group by)する。
例えば、第1の抽出部21Aは、処理命令P0からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、第1の抽出部21Aは、処理命令P0から、テーブル名として注文テーブルT0の符号化テーブルC10と店舗テーブルT1の符号化テーブルC20とを取得する。第1の抽出部21Aは、処理命令P0から、参照項目の項目名として符号化テーブルC20のShopIDおよびShopName並びに符号化テーブルC10のnumを取得する。第1の抽出部21Aは、処理命令P0から条件項目の項目名として符号化テーブルC10および符号化テーブルC20それぞれのShopIDを取得する。第1の抽出部21Aは、処理命令P0から、集計項目の項目名としてShopIDおよびShopNameを取得する。
次に、第1の抽出部21Aは、符号化テーブルC10,C20に対する処理命令P10に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、抽出した処理対象カラム情報を用いて符号化テーブルC10,C20から処理対象のカラムのデータを抽出する。符号P10で示される処理命令は、注文テーブルT0の符号化テーブルC10と店舗テーブルT1の符号化テーブルC20とをShopIDで結合(join)する。そして、処理命令は、結合したテーブルから符号化テーブルC20のShopIDおよびShopName並びに符号化テーブルC10のnumを参照するものである。さらに、抽出条件(where)は、符号化テーブルC10のTimeStampが「2015/04/05 00:00:00」より小さいである。
例えば、第1の抽出部21Aは、処理命令P10からテーブル名、参照項目、条件項目および集計項目の項目名を取得する。ここでは、第1の抽出部21Aは、処理命令P10から、テーブル名として符号化テーブルC10と符号化テーブルC20とを取得する。第1の抽出部21Aは、処理命令P10から、参照項目の項目名として符号化テーブルC20のShopIDおよびShopName並びに符号化テーブルC10のnumを取得する。第1の抽出部21Aは、処理命令P10から条件項目の項目名として符号化テーブルC20および符号化テーブルC10それぞれのShopIDを取得する。また、第1の抽出部21Aは、処理命令P10から条件項目の項目名として符号化テーブルC10のTimeStampを取得する。なお、処理命令P10は、集計項目の項目名を有していない。
そして、第1の抽出部21Aは、テーブル定義31から、取得したテーブル名のテーブルごとに、参照項目、集計項目および条件項目のうち存在する項目(カラム)の処理対象カラム情報を抽出する。第1の抽出部21Aは、テーブルごとの符号化テーブルC10,C20から、抽出した処理対象カラム情報に含まれるオフセット31cに位置する項目値を抽出する。ここでは、第1の抽出部21Aは、符号化テーブルC10から、num、TimeStampおよびShopIDそれぞれの処理対象カラム情報に含まれるオフセット31c(4、1、5)に位置する項目値を抽出する。一例として、1レコード目について、numの項目値として「40000000h」、TimeStampの項目値として「FF300103h」、ShopIDの項目値として「6000h」が抽出される。そして、第1の抽出部21Aは、符号化テーブルC10から抽出されたデータを符号化ファイルR10に書き込む。さらに、第1の抽出部21Aは、符号化テーブルC20から、ShopIDおよびShopNameそれぞれの処理対象カラム情報に含まれるオフセット31c(0、1)に位置する項目値を抽出する。一例として、1レコード目について、ShopIDの項目値として「6000h」、ShopNameの項目値として「F00012h」が抽出される。そして、第1の抽出部21Aは、符号化テーブルC20から抽出されたデータを符号化ファイルR20に書き込む。
そして、第2の抽出部41は、抽出条件を構成する項目「TimeStamp」がタイトル項目の場合であるので、当該項目の項目値が動的辞書33に登録済みであるか否かを判定する。第2の抽出部41は、抽出条件を構成する項目「TimeStamp」の項目値「2015/04/05 00:00:00」が動的辞書33に登録されていないと判定すると、動的辞書33から抽出条件に合致する文字列であって範囲指定の境界となる文字列を探索する。ここでは、範囲指定の境界となる文字列として「2015/04/03 11:05:00」が探索される。
そこで、第2の抽出部41は、抽出条件を構成する項目の項目値を探索文字列に対応する動的コードに代える。ここでは、第2の抽出部41は、抽出条件を構成する項目の項目値「2014/04/05 00:00:00」を動的辞書33に登録されている動的符号「FF300010Dh」に代える。
そして、第2の抽出部41は、動的辞書33を用いて抽出条件に合致するレコードを抽出する。ここでは、第2の抽出部41は、「TimeStamp」が動的符号「FF300010Dh」以下の動的符号を持つレコードを抽出する。ここでは、「TimeStamp」の動的符号が「FF300103h」および「FF30010Dh」を持つレコードが抽出される。抽出結果は、符号化テーブルR10´である。
なお、符号化テーブルC20には、抽出条件を構成する項目「TimeStamp」が存在しないので、第2の抽出部41は、符号化ファイルR20をそのまま符号化ファイルR20´に書き込む。
次に、編集部22は、符号化ファイルR10´,R20´を条件項目で条件化した結合条件で結合する。ここでは、編集部22は、符号化ファイルR10´,R20´を結合条件(店舗テーブル.ShopID=注文テーブル.ShopID)で結合する。そして、編集部22は、結合した結果を部分符号化ファイルB10に格納する。
[符号化処理の処理手順]
図13は、実施例2に係る符号化処理の処理手順を示すフローチャートである。なお、図13のフローチャートは、図7AのフローチャートにS53およびS54を追加したものである。したがって、以降では、同一の処理を、簡略して説明する。
図13に示すように、符号化部10Aは、前処理を実行する(ステップS51)。符号化部10Aは、符号化対象のテーブルを読み出す(ステップS52)。
符号化部10Aは、読み出したテーブルにタイトル項目が存在するか否かを判定する(ステップS53)。例えば、符号化部10Aは、テーブル定義31を参照し、該当するテーブルに対応する項目名31bの中に符号化種別31dがF0h以上の項目名が存在するか否かを判定する。読み出したテーブルにタイトル項目が存在しないと判定した場合には(ステップS53;No)、符号化部10Aは、ステップS55に移行する。
一方、読み出したテーブルにタイトル項目が存在すると判定した場合には(ステップS53;Yes)、符号化部10Aは、読み出したテーブルをタイトル項目の項目値でソートする(ステップS54)。そして、符号化部10Aは、ステップS55に移行する。
ステップS55において、符号化部10Aは、読み出したテーブルについて、カンマで区切られた文字列を処理対象として選択する(ステップS55)。符号化部10Aは、選択した処理対象の処理対象カラム情報を取得する(ステップS56)。
続いて、符号化部10Aは、処理対象を符号化する(ステップS57)。なお、処理対象の符号化処理の処理手順は、図7Bの説明と同様であるので、その説明を省略する。そして、符号化部10Aは、符号化された符号コードを符号化バッファに書き込む(ステップS58)。
そして、符号化部10Aは、テーブルの終点か否かを判定する(ステップS59)。テーブルの終点でないと判定した場合には(ステップS59;No)、符号化部10Aは、次の文字列の符号化をすべく、ステップS55に移行する。
一方、テーブルの終点であると判定した場合には(ステップS59;Yes)、符号化部10Aは、符号化バッファを符号化テーブルに書き込む(ステップS60)。符号化部10Aは、未処理のテーブルがあるか否かを判定する(ステップS61)。未処理のテーブルがあると判定した場合には(ステップS61;Yes)、符号化部10Aは、次のテーブルを読み出すべく、ステップS52に移行する。
一方、未処理のテーブルがないと判定した場合には(ステップS61;No)、符号化部10Aは、符号化処理を終了する。
[ETL処理の処理手順]
図14は、実施例2に係るETL処理の処理手順を示すフローチャートである。図14に示すように、ETL処理部20Aは、符号化テーブルに対する処理命令を受け付けたか否かを判定する(ステップS71)。処理命令を受け付けていないと判定した場合には(ステップS71;No)、ETL処理部20Aは、処理命令を受け付けるまで、判定処理を繰り返す。
一方、処理命令を受け付けたと判定した場合には(ステップS71;Yes)、ETL処理部20Aは、処理命令から、テーブル名、参照項目、抽出/結合条件の項目および集計項目を取得する(ステップS72)。
そして、ETL処理部20Aは、取得した項目のカラムに関するカラム情報をテーブル定義31から抽出する(ステップS73)。
そして、ETL処理部20Aは、取得した項目のカラム情報を用いて、取得した項目の項目値を対象テーブルの符号化テーブルから抽出する(ステップS74)。ETL処理部20Aは、対象テーブルごとに、抽出した項目値を符号化ファイルに書き込む。
続いて、ETL処理部20Aは、抽出条件の項目が数値型か否かを判定する(ステップS75)。抽出条件の項目が数値型であると判定した場合には(ステップS75;Yes)、ETL処理部20Aは、抽出条件の項目値を数値バイナリに変換し、変換後のデータを符号コードとして出力する(ステップS76)。そして、ETL処理部20Aは、符号化テーブルから該当レコードを抽出すべく、ステップS81に移行する。
一方、抽出条件の項目が数値型でないと判定した場合には(ステップS75;No)、ETL処理部20Aは、抽出条件の項目がタイトル項目であるか否かを判定する(ステップS77)。抽出条件の項目がタイトル項目であると判定した場合には(ステップS77;Yes)、ETL処理部20Aは、抽出条件の項目値が動的辞書33に登録済みであるか否かを判定する(ステップS78)。
抽出条件の項目値が動的辞書33に登録済みであると判定した場合には(ステップS78;Yes)、ETL処理部20Aは、動的辞書33に登録されている項目値に対応する符号コード(動的コード)を出力する(ステップS79)。そして、ETL処理部20Aは、ステップS81に移行する。
一方、抽出条件の項目値が動的辞書33に登録済みでないと判定した場合には(ステップS78;No)、ETL処理部20Aは、2分探索を用いて符号コードを探索し、該当する符号コードを出力する(ステップS80)。例えば、ETL処理部20Aは、動的辞書33から抽出条件に合致する文字列(項目値)であって範囲指定の境界となる項目値に対応する符号コードを探索する。そして、ETL処理部20Aは、ステップS81に移行する。
ステップS81において、ETL処理部20Aは、符号化ファイルから、項目値を符号化した抽出条件に合致するレコードを抽出する(ステップS81)。そして、ETL処理部20Aは、ステップS84に移行する。
ステップS77において、抽出条件の項目がタイトル項目でないと判定した場合には(ステップS77;No)、ETL処理部20Aは、抽出条件の項目に対応する、符号化テーブルの符号コードを部分復号化する(ステップS82)。そして、ETL処理部20Aは、符号化ファイルから、抽出条件に合致するレコードを抽出する(ステップS83)。そして、ETL処理部20Aは、ステップS84に移行する。
ステップS84において、ETL処理部20Aは、集計項目が抽出されたか否かを判定する(ステップS84)。集計項目が抽出されないと判定した場合には(ステップS84;No)、ETL処理部20Aは、ステップS88に移行する。
一方、集計項目が抽出されたと判定した場合には(ステップS84;Yes)、ETL処理部20Aは、集計に関わる参照項目の符号コードを部分復号化する(ステップS85)。ETL処理部20Aは、集約条件に基づいて、部分復号化された結果を示す項目値を集計する(ステップS86)。ETL処理部20Aは、集計結果を符号化する(ステップS87)。なお、処理対象の符号化処理の処理手順は、図7Bの説明と同様であるので、その説明を省略する。そして、ETL処理部20Aは、ステップS88に移行する。
ステップS88において、ETL処理部20Aは、処理命令の実行結果を出力する(ステップS88)。例えば、ETL処理部20Aは、抽出条件に合致した参照項目の符号コードを部分符号化ファイルに書き込む。加えて、ETL処理部20Aは、集計結果があれば、集計結果を他の参照項目の符号コードとともに部分符号化ファイルに書き込む。
[実施例2の効果]
このようにして、上記実施例2では、情報処理装置1は、デリミタで区切られたテーブルのデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する。情報処理装置1は、処理対象カラム情報を用いて、複数の符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出する。そして、情報処理装置1は、処理命令の条件であって範囲が指定された条件に対応した符号化データを部分符号化テーブルに書き込む。かかる構成によれば、情報処理装置1は、デリミタで区切られたテーブルのデータを符号化した符号化テーブルに対するデータの参照のうち範囲が指定された条件に対するデータの参照であっても、復号化処理を行わずに、データを参照できる。
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
例えば、実施例では、数値を示す項目の場合には、数値バイナリ変換を用いた符号化方法を適用すると説明した。しかしながら、数値を示す項目の場合であっても、動的辞書33を用いた符号化方法を適用しても良い。すなわち、符号化部10Aは、項目の符号化種別31dが02h〜03hである場合には、項目が数値であると判断し、動的辞書33を用いて、当該項目の項目値を符号化する。ここで、範囲指定を示す抽出条件に数値項目が含まれている場合には、第2の抽出部41は、符号化ファイルに存在するレコードの、抽出条件を構成する数値項目の符号コードを復号化してから、抽出条件に合致するレコードを抽出すれば良い。これにより、情報処理装置1は、テーブルを構成する項目の項目値を、静的辞書32および動的辞書33を用いて符号化することとなるので、統一した方式で符号化処理を行うことができる。
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[情報処理装置のハードウェア構成]
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図15は、コンピュータのハードウェア構成例を示す図である。コンピュータ300は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM303は、PROM(Programmable ROM)なども含む。ドライブ装置304は、記憶媒体305に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記憶媒体305は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ300は、複数種類の記憶媒体それぞれについて、ドライブ装置304及び記憶媒体305を設ける。
入力インターフェース306は、入力デバイス307と接続されており、入力デバイス307から受信した入力信号をプロセッサ301に伝達する回路である。出力インターフェース308は、出力デバイス309と接続されており、出力デバイス309に、プロセッサ301の指示に応じた出力を実行させる回路である。通信インターフェース310はネットワーク400を介した通信の制御を行なう回路である。通信インターフェース310は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース311は、ストレージエリアネットワークによりコンピュータ300と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース311は、例えばホストバスアダプタ(HBA)などである。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力デバイス307は、例えば、キーボードやコンピュータ300の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ300の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ300と一体になっていても良いし、コンピュータ300に含まれず、例えば、コンピュータ300に外部から接続する装置であっても良い。
例えば、プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って符号化部10や復号化部20の処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部30の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラム204、ミドルウェア203およびOS202など)やデータファイル(例えば、テーブル定義31、静的辞書32、動的辞書33など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図16を用いて説明する。
図16は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ300において、図16に示すハードウェア群(HW)201(301〜312)の制御を行なうOS(オペレーティング・システム)202が動作する。OS202に従った手順でプロセッサ301が動作して、ハードウェア群(HW)201の制御・管理が行なわれることにより、アプリケーションプログラム(AP)204やミドルウェア(MW)203に従った処理がハードウェア群201で実行される。さらに、コンピュータ300において、ミドルウェア(MW)203またはアプリケーションプログラム(AP)204が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、符号化機能が呼び出された場合に、ミドルウェア203またはアプリケーションプログラム204の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS202に基づいてハードウェア群201を制御して)符号化部10および復号化部20の機能が実現される。符号化機能および復号化機能は、アプリケーションプログラム204自体に含まれても良いし、アプリケーションプログラム204に従って呼び出されることで実行されるミドルウェア203の一部であっても良い。
図17は、実施形態のシステムにおける装置の構成例を示す。図17のシステムは、コンピュータ300a、コンピュータ300b、基地局500およびネットワーク400を含む。コンピュータ300aは、無線または有線の少なくとも一方により、コンピュータ300bと接続されたネットワーク400に接続している。
図2に示す符号化部10と復号化部20とは、図17に示すコンピュータ300aとコンピュータ300bとのいずれに含まれても良い。コンピュータ300bが符号化部10の機能を含み、コンピュータ300aが復号化部20の機能を含んでも良いし、コンピュータ300aが符号化部10の機能を含み、コンピュータ300bが復号化部20の機能を含んでも良い。また、コンピュータ300aとコンピュータ300bとの双方が、符号化部10の機能および復号化部20の機能を備えても良い。
図2に示す抽出部21および編集部22と部分復号化部23とは、図17に示すコンピュータ300aとコンピュータ300bとのいずれに含まれても良い。コンピュータ300bが抽出部21および編集部22の機能を含み、コンピュータ300aが部分復号化部23の機能を含んでも良いし、コンピュータ300aが抽出部21および編集部22の機能を含み、コンピュータ300bが部分復号化部23の機能を含んでも良い。また、コンピュータ300aとコンピュータ300bとの双方が、抽出部21および編集部22の機能および部分復号化部23の機能を備えても良い。
1 情報処理装置
10,10A 符号化部
20 復号化部
20A ETL処理部
21 抽出部
21A 第1の抽出部
22 編集部
23 部分復号化部
41 第2の抽出部
30 記憶部
31 テーブル定義
32 静的辞書
33 動的辞書

Claims (8)

  1. コンピュータに、
    デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、
    前記処理対象カラム情報を用いて、複数の前記符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する
    処理を実行させることを特徴とする符号化処理プログラム。
  2. 前記生成する処理は、前記処理対象カラム情報を用いて、複数の前記符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出し、前記処理命令の条件に対応した符号化データを含む前記部分符号化テーブルを生成する
    処理を実行させることを特徴とする請求項1に記載の符号化処理プログラム。
  3. 前記生成する処理は、前記処理対象カラム情報を用いて、複数の前記符号化テーブルのそれぞれから、処理対象のカラムに対応する符号化データを抽出し、抽出した符号化データから、前記処理命令の条件であって範囲が指定された条件に対応した符号化データを前記部分符号化テーブルに書き込む
    処理を実行させることを特徴とする請求項1に記載の符号化処理プログラム。
  4. デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化する符号化部と、
    前記符号化部によって符号化された符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出する抽出部と、
    前記抽出部によって抽出された前記処理対象カラム情報を用いて、複数の前記符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する生成部と、
    を有することを特徴とする符号化処理装置。
  5. コンピュータが、
    デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する処理命令に基づいて、処理対象のカラムに関する処理対象カラム情報を抽出し、
    前記処理対象カラム情報を用いて、複数の前記符号化テーブルから、処理対象のカラムに対応した部分符号化テーブルを生成する
    各処理を実行することを特徴とする符号化処理方法。
  6. コンピュータに、
    デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する所定の処理対象の復号化処理命令に基づいて、前記処理対象のカラムに関する処理対象カラム情報を抽出し、
    前記処理対象カラム情報を用いて、前記符号化テーブルから、処理対象のカラムに対応する符号を抽出し、抽出した符号を部分符号化用のオートマトンを用いて復号化する
    処理を実行させることを特徴とする復号化処理プログラム。
  7. デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する所定の処理対象の復号化処理命令に基づいて、前記処理対象のカラムに関する処理対象カラム情報を抽出する抽出部と、
    前記処理対象カラム情報を用いて、前記符号化テーブルから、処理対象のカラムに対応する符号を抽出し、抽出した符号を部分符号化用のオートマトンを用いて復号化する復号化部と、
    を有することを特徴とする復号化処理装置。
  8. コンピュータが、
    デリミタで区切られたテーブルのカラムが示すデータを各レコードのカラムごとに符号化した符号化テーブルに対する所定の処理対象の復号化処理命令に基づいて、前記処理対象のカラムに関する処理対象カラム情報を抽出し、
    前記処理対象カラム情報を用いて、前記符号化テーブルから、処理対象のカラムに対応する符号を抽出し、抽出した符号を部分符号化用のオートマトンを用いて復号化する
    処理を実行させることを特徴とする復号化処理方法。
JP2016083167A 2016-04-18 2016-04-18 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法 Expired - Fee Related JP6728926B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016083167A JP6728926B2 (ja) 2016-04-18 2016-04-18 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法
US15/489,206 US20170300542A1 (en) 2016-04-18 2017-04-17 Encoding processing device, encoding processing method, decoding processing device, decoding processing method, and recording medium
EP17166791.8A EP3236368A1 (en) 2016-04-18 2017-04-18 Encoding processing program, encoding processing device, encoding processing method, decoding processing program, decoding processing device, and decoding processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016083167A JP6728926B2 (ja) 2016-04-18 2016-04-18 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法

Publications (2)

Publication Number Publication Date
JP2017195447A true JP2017195447A (ja) 2017-10-26
JP6728926B2 JP6728926B2 (ja) 2020-07-22

Family

ID=58692308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016083167A Expired - Fee Related JP6728926B2 (ja) 2016-04-18 2016-04-18 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法

Country Status (3)

Country Link
US (1) US20170300542A1 (ja)
EP (1) EP3236368A1 (ja)
JP (1) JP6728926B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121861A (ja) * 2017-12-28 2019-07-22 富士通株式会社 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
US10878036B2 (en) * 2018-01-17 2020-12-29 Actian Corporation Maintaining character set compatibility in database systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101442A (ja) * 1998-09-28 2000-04-07 Fujitsu Ltd データ圧縮装置及び復元装置並びにその方法
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2001217720A (ja) * 2000-02-04 2001-08-10 Internatl Business Mach Corp <Ibm> データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置
JP2006251979A (ja) * 2005-03-09 2006-09-21 Matsushita Electric Ind Co Ltd 可変項目検索システム
JP2015075970A (ja) * 2013-10-09 2015-04-20 前田建設工業株式会社 表形式データ処理プログラム、方法、及び装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9165008B1 (en) * 2011-12-28 2015-10-20 Teradata Us, Inc. System and method for data compression using a dynamic compression dictionary

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101442A (ja) * 1998-09-28 2000-04-07 Fujitsu Ltd データ圧縮装置及び復元装置並びにその方法
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
JP2001217720A (ja) * 2000-02-04 2001-08-10 Internatl Business Mach Corp <Ibm> データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置
JP2006251979A (ja) * 2005-03-09 2006-09-21 Matsushita Electric Ind Co Ltd 可変項目検索システム
JP2015075970A (ja) * 2013-10-09 2015-04-20 前田建設工業株式会社 表形式データ処理プログラム、方法、及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019121861A (ja) * 2017-12-28 2019-07-22 富士通株式会社 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置
JP7159557B2 (ja) 2017-12-28 2022-10-25 富士通株式会社 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置

Also Published As

Publication number Publication date
EP3236368A1 (en) 2017-10-25
US20170300542A1 (en) 2017-10-19
JP6728926B2 (ja) 2020-07-22

Similar Documents

Publication Publication Date Title
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
JP6648620B2 (ja) 符号化プログラム、符号化装置および符号化方法
US10360183B2 (en) Encoding device, encoding method, decoding device, decoding method, and computer-readable recording medium
CN105846825A (zh) 压缩方法、解压缩方法、压缩装置以及解压缩装置
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US11182341B2 (en) Recording medium recording indexed data generation program, indexed data generation method and retrieval method
JP6728926B2 (ja) 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP2016134752A (ja) 処理プログラム、処理装置および処理方法
JP6834327B2 (ja) 符号化プログラム、符号化装置および符号化方法
JP2017194753A (ja) 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
CN106354746B (zh) 搜索方法和搜索设备
JP6805720B2 (ja) データ検索プログラム、データ検索装置およびデータ検索方法
JP7059516B2 (ja) 符号化プログラム、符号化装置および符号化方法
US11323132B2 (en) Encoding method and encoding apparatus
JP6511836B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置および伸長プログラム
US10997139B2 (en) Search apparatus and search method
US8463759B2 (en) Method and system for compressing data
JP6251437B1 (ja) 分類用符号生成ソフトウェアを記録した記録媒体
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method
JP6717153B2 (ja) インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US20190220502A1 (en) Validation device, validation method, and computer-readable recording medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200615

R150 Certificate of patent or registration of utility model

Ref document number: 6728926

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees