JP2010026884A - データ圧縮処理を伴うデータ管理方法 - Google Patents

データ圧縮処理を伴うデータ管理方法 Download PDF

Info

Publication number
JP2010026884A
JP2010026884A JP2008189277A JP2008189277A JP2010026884A JP 2010026884 A JP2010026884 A JP 2010026884A JP 2008189277 A JP2008189277 A JP 2008189277A JP 2008189277 A JP2008189277 A JP 2008189277A JP 2010026884 A JP2010026884 A JP 2010026884A
Authority
JP
Japan
Prior art keywords
compression
data
compressed
item
value
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
JP2008189277A
Other languages
English (en)
Other versions
JP5303213B2 (ja
Inventor
Daisuke Ito
大輔 伊藤
Shinji Fujiwara
真二 藤原
Koji Kimura
耕治 木村
Hideki Hayashi
秀樹 林
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008189277A priority Critical patent/JP5303213B2/ja
Publication of JP2010026884A publication Critical patent/JP2010026884A/ja
Application granted granted Critical
Publication of JP5303213B2 publication Critical patent/JP5303213B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 冗長性を含む大量なデータを圧縮して扱う場合にも高速に圧縮伸張できる圧縮方法を提供する。
【解決手段】 ユーザ表の列ごとに、ユーザ109による圧縮の有無の指定を受け付け、圧縮有りと指定された各列に関して、列名、表名、を圧縮値管理表106に保存し、前ユーザ表の各フィールドのデータのうち圧縮値管理表106に圧縮有りと指定された列のフィールドのデータのみ圧縮処理を施してストレージ103のユーザデータ領域104で管理する。
【選択図】図1

Description

本発明は、冗長要素を多く含む大量なデータを高速に圧縮伸張するデータ管理方法に関するものである。
まず以下の文中で用いる用語の定義を行う。
行、列、フィールド:図2に示すとおり、表201を構成する要素として行203、列204、フィールド202という用語を用いる。
第一正規形:RDBMSの正規化のレベルの1つ。行を構成するフィールドがスカラ値である、すなわち集合や配列を含まないものと定義される。
続いて背景技術の詳細を記す。
携帯機器の高機能化に伴い、扱うデータも大量になり、また検索パターンも多様化しており、機器組込み環境においてもDBMSが用いられるようになってきた。特に従来のサーバシステムで用いられてきたRDBMSは既に問合せ言語が標準化されていることからAPIの習得コストが低いとされ、注目されている。
機器組込み環境ではハードウエア低コスト化の要求が強く、サーバシステム環境よりもリソースの制約が厳しい。そのためRDBMSに対してもストレージ使用量とメモリ使用量は小さいほど良いという要求がある。しかし一方で機器組込み開発者はDBのライトユーザが多く、また更新不整合など考慮する必要もあまりないため第一正規形スキーマを用いた運用が多く、結果として冗長性が多い。そこでデータベースを圧縮する機能にニーズがある。
データベース圧縮の従来技術の多くは更新に比べ参照の頻度が高いデータウェアハウス向けの技術である。その中でも、行単位にLZ符号のような圧縮符号を適用するデータ圧縮技術が代表的であり、非特許文献1に開示される。この方式では圧縮伸張処理の際に余計なストレージI/Oが発生しないため高速である反面、元データが小さいため圧縮率も上がりにくい。さらに第一正規形スキーマに限らず、データベースの冗長性は行方向には少なく列方向に多い傾向があるため、行単位圧縮は余計に圧縮率が上がりにくい。
また、データベース圧縮の他の代表的な手法にcolumn-wise圧縮があり、同じく非特許文献1に開示される。これはデータベースの冗長性は列方向に出やすいことを考慮し、列方向にLZ符号のような圧縮手法を適用する技術である。このcolumn-wise圧縮の実装方式として提案されたものに、表全体を列ごとに分割して圧縮するものがあるが、大量のデータからなる表を圧縮する場合には圧縮率が良い半面、圧縮伸張処理の際には辞書を読み込むためのストレージI/Oが発生するため低速である。さらに削除 (delete) や更新 (update) を行う場合のコストが高く非常に低速になるという欠点がある。
これに対し非特許文献2に記載されたデータベース圧縮方法では、単一ページ内に含まれるフィールドが重複した場合にポインタで置き換えることによって圧縮を行う。この方法では、圧縮伸張の際に余計なストレージI/Oが発生しないため高速である。その反面、フィールドが完全に一致した場合にしか圧縮の対象とならないため、メモやコメントを保存する自由記述の文字列型に対して圧縮の効果を得にくい。
"Data Compression Support in Databases", Balakrishna R. Iyer, VLDB94 "Data Compression in Oracle", Meikel Poessv, VLDB2003
そこで、本発明では、冗長性を含む大量なデータを圧縮して扱う場合にも高速に圧縮伸張できる圧縮方法を提供することを課題とする。
本発明は、特に第一正規形スキーマのデータにおいて列方向に冗長性が多いことに着目し、冗長列をユーザ指定可能とする。
本明細書で開示する代表的な実施例におけるデータ管理方法の要点をまとめると、複数項目の値の組が繰り返し現れるデータに対し、ストレージ上の圧縮値管理表にもとづいたデータ圧縮処理を行って管理を行うデータ管理方法であって、前記データ中の項目ごとに、圧縮の有無のユーザによる指定を受け付け、圧縮有りと指定された各項目に関して、該項目の識別子及び該項目を含むデータの識別子を前記圧縮値管理表に保存し、前記データのうち、前記項目の識別子で特定される値にのみ圧縮処理を施して前記ストレージ上で管理するというものである。
リレーショナルデータベース分野の用語に言い換えると、管理対象は表であり、上記複数項目の値の組とは表を構成する行であり、その各項目は表を構成する列であり、各項目の値はフィールドである。すなわち、ユーザ表の列ごとに、ユーザによる圧縮の有無の指定を受け付け、圧縮有りと指定された各列に関して、列名、表名、を圧縮値管理表に保存し、前記ユーザ表の各フィールドのデータのうち前記圧縮値管理表に圧縮有りと指定された列のフィールドのデータのみ圧縮処理を施してストレージ上で管理する。
開示する別の代表的実施例におけるデータ管理方法では、さらに高速に圧縮伸張可能となるように圧縮単位を導入する。
本発明のデータ管理方式は、ユーザが指定した列のみ、圧縮単位ごとに列方向圧縮を行うため、演算量とストレージI/O回数が共に少なく、高速かつ高い圧縮率を実現できるという利点がある。
本実施例のコンピュータシステムでは表や構造体の集合といった、複数項目の値の組が繰り返し現れるデータを管理対象としてストレージ上で管理する。とくに、その各組の中でユーザが指定した1つまたは複数の項目の値にのみデータ圧縮処理を施してストレージに保存し、管理する。
図1は本実施例のコンピュータシステムの構成を示す。コンピュータシステム101はCPU112、主記憶装置113、及びストレージ103を主な構成要素とする。主記憶装置113の上には、図示したストレージ103、もしくは他のストレージ装置から読み出されたオペレーティングシステム111が主記憶装置113の上で展開される。さらにリレーショナルデータベース実行部102、及びAP実行部110が主記憶装置113の上で展開される。オペレーティングシステム111の制御のもとでCPU112がリレーショナルデータベース実行部、AP実行部それぞれの処理を実行し、これによりデータ管理の機能、アプリケーションの機能を果たす。
ストレージ103の実現例としてハードディスクドライブ、半導体メモリ、テープドライブなどが挙げられる。ストレージ103にはユーザデータ領域104と管理情報領域105が設けられる。管理情報領域104にはリレーショナルデータベース実行部102によるデータ管理に使用する管理情報が格納、管理される。ここでは管理情報は表形式で管理する。本実施例に特有なのは、管理情報領域104に格納される管理情報に、データ圧縮・伸張処理に用い圧縮地管理表106が含まれる点である。すなわちストレージ上に圧縮値管理表を持つ。圧縮値管理表106の詳細は後述する。ユーザデータ領域104には上記のデータ管理の管理対象であり、またデータ圧縮、伸張の対象である表が格納される。区別のためにこれらの管理対象の表をユーザ表と呼ぶ。
図2に一般的なユーザ表の構成を示す。ユーザ表201は複数の行203及び列204で構成され、ある行とある列で特定される要素をフィールド202と呼ぶ。
リレーショナルデータベース実行部108には問合せ処理部107と圧縮値定義部108が含まれる。問合せ処理部107はユーザ109からの問合せやデータ定義といった命令を受け付け、命令に従いデータ管理を実行する機能を果たす。また圧縮値定義部108は上記ストレージ104の管理情報領域105にて圧縮値に関する管理情報を管理する。圧縮値定義処理部108の詳細は後述する。
本実施例では、事前の準備としてユーザ表の構造を定義する際に圧縮の有無をユーザ109が列ごとに指定し、問合せ処理部107が解釈した後に圧縮値定義処理部108が受け取り、圧縮値管理表に保存する。すなわちユーザがデータの項目ごとに圧縮の有無を指定し、ユーザが指定した圧縮を行う項目(ここではユーザ表の列名)とその項目を含むデータの識別子(ここではユーザ表名)を圧縮値定義部が受け取り、圧縮値管理表に保存する。
ユーザ表の構造を定義する際の参考に、例えば、ユーザ表を管理するデータ管理プログラムとして広く用いられているリレーショナルデータベースプログラムにおいては、SQLの表構造定義文であるcreate table文や表構造変更文であるalter table文を用いてデータ構造の定義を行う。そのため本実施例では列ごとの圧縮の有無もcreate table文やalter table文で指定できるように文法を拡張する。図3にユーザ表とそれに対応するcreate table文と圧縮列管理表の例を示す。図3(a)に示すsongs表301はミュージックプレイヤーの楽曲情報を保存するユーザ表であり、通し番号を表すid列、歌手名を表すartist_name列、アルバム名を表すalbum_name列、リリース年を表すrelease列、アルバム内の曲順を表すtrack_num列、楽曲のジャンルを表すgenre列、楽曲名を表すsong_title列からなる。ここで、artist_name列とalbum_name列とrelease列を圧縮列と指定する場合の表構造定義に用いるcreate table文の拡張を図3(b)に示す。このcreate table文の拡張ではartist_name列とalbum_name列とrelease列を定義する際に、データ型定義に続いて圧縮列である事を示す “compress” 指定をしている。図3(c)に示す圧縮値管理表303では、圧縮して管理するユーザ表識別子と列識別子を管理する。すなわち圧縮値管理表ではデータ識別子と圧縮値識別子を管理する。本実施例ではユーザ表識別子として、ユーザ表の名前はユニークであるという前提を置き、ユーザ表の名前を用いる。また列識別子として、ユーザ表ごとに列名はユニークであるという前提を置き、列名を用いる。
以上のように本実施例では、ストレージ上で表を管理対象とするシステムでは、表を構成する列ごとにユーザが圧縮対象か否かを指定して圧縮値管理表に登録し、表データの保存に際して、圧縮ありと指定された列のフィールドのデータは指定された圧縮方法で圧縮して保存する。この方式は、上記の例のように表を管理対象として管理するシステムだけでなく、構造体の集合や配列、その他の、複数項目の値の組が繰り返し現れるデータを管理するシステムにも適用可能である。図4に、C言語の構造体の配列を拡張した例を示す。構造体宣言および構造体配列変数宣言401では、songs表301に相当する構造体配列変数songs[]およびsongs表の行に相当する構造体songを定義し、1,000個の構造体からなる集合を定義している。ただしsongs表301のid列は構造体配列変数songs[]の添え字に相当する。401で定義された構造体配列変数を管理する場合にも、SQLのcreate table文の拡張302を用いて定義した場合と同様の方法でデータを管理することが可能である。
実施例2では、列ごとに圧縮対列か否かを指定し、さらにその圧縮の圧縮単位もユーザが指定する。ストレージ上の管理対象は表に限らず、管理対象が複数項目の値の組の繰り返し現れるデータであるシステムに適用できることは実施例1と全く同様である。
図5に実施例2のデータ管理システムシステム構成を示す。
コンピュータシステム501はデータ管理プログラム502と表や表に関連する管理情報を保存するためのストレージ503を有する。AP実行部515とCPU517およびオペレーティングシステム516については実施例1のデータ管理システムにおけるAP実行部(図2の110)とCPU(図2の112)およびオペレーティングシステム(図2の111)とそれぞれ同様である。主記憶装置518の上に展開されるリレーショナルデータベース実行部502には、問合せ処理部507、圧縮値定義処理部508、I/O振分処理部509、非圧縮表向きinsert文処理部510、圧縮列を含む表向けinsert文処理部511、圧縮列を含む表向けselect文処理部519、非圧縮表向けselect文処理部520、圧縮列向けdelete文処理部513、および通常のdelete文処理部514が含まれる。ストレージ503の管理情報領域505に格納する圧縮値管理表506には、圧縮対象の列名に対応して圧縮単位が登録される。
本実施例では、ユーザ512が指定した圧縮対象である列の全フィールドを、ユーザ512が指定した複数の小区分に分けて圧縮する。この小区分のサイズを圧縮単位と呼び、圧縮の有無と圧縮の単位はデータ管理の事前の準備としてユーザ表の構造を定義する際にユーザ512が列ごとに指定する。ユーザ512よって列ごとに指定された圧縮の有無と圧縮単位は、問合せ処理部507が解釈した後に圧縮値定義処理部508が受け取り、圧縮値管理表506に保存する。すなわち、ユーザがデータに含まれる値ごとに圧縮の有無と圧縮単位を指定し、ユーザが指定した圧縮を行う項目(列名)とその項目を含むデータの識別子(表名)と圧縮単位とを圧縮値定義処理部が受け取り、圧縮値管理表に保存する。圧縮の単位の例としてデータのサイズやデータの行数、フィールド数、ストレージ上でのページ数といった単位が上げられる。本実施例ではページ数を用いる。また、圧縮単位がnページであり、あるページAのユーザデータ領域504の先頭ページ番号からのオフセットがaであるとすると、Aと同じ小区分に含まれるページのオフセットはn × (a div n) ≦ x <n × {(a div n) + 1}を満たす自然数xとする。
図6にユーザ表とそれに対応するcreate table文と圧縮列管理表の例を示す。図6(a)のsongs表601は図3に示す実施例1のユーザ表と同じミュージックプレイヤーの楽曲情報を保存するユーザ表である。すなわち表 601は通し番号を表すid列、歌手名を表すartist_name列、アルバム名を表すalbum_name列、リリース年を表すrelease列、アルバム内の曲順を表すtrack_num列、楽曲のジャンルを表すgenre列、楽曲名を表すsong_title列からなる。ここで、artist_name列とalbum_name列とrelease列を圧縮列と指定し、さらにartist_name列は2ページずつ、album_name列とrelease列を4ページずつ圧縮する場合の表構造定義に用いるcreate table文の拡張を602に示す。図6(b)に示すcreate table文の拡張ではartist_name列とalbum_name列とrelease列を定義する際に、データ型定義に続いて圧縮列である事を示す“compress”と圧縮単位である“2”および“4”を指定している。図6(c)に示す圧縮値管理表603では、圧縮して管理するユーザ表識別子と列識別子および圧縮単位を管理する。すなわち圧縮値管理表ではデータ識別子と圧縮値識別子と圧縮単位を指定する。本実施例ではユーザ表識別子として、ユーザ表の名前はユニークであるという前提を置き、ユーザ表の名前を用いる。また列識別子として、ユーザ表ごとに列名はユニークであるという前提を置き、列名を用いる。
本実施例において行の挿入を行う際には、SQLにおけるinsert文を用いる。ユーザ512が発行したinsert文は問合せ処理部507が受け取り処理を行う。問合せ処理部からのinsert文処理命令はI/O振分処理部509に渡される。
I/O振分処理部509がinsert文処理命令を実行する際の処理フローを図7に示す。処理開始(701)の後、圧縮値定義処理部508を参照し(702)、行の挿入を行う対象の表が圧縮列を含む表か否かを判断する(703)。行の挿入を行う対象の表が圧縮列を含む表である場合は圧縮列を含む表向けinsert文処理部511を呼び出す(704)。一方、挿入対象の表が圧縮列を含まない場合は非圧縮表向けinsert文処理部510を呼び出し(705)、処理を終了する(706)。
圧縮列を含む表向けinsert文処理部511は圧縮値定義処理部508を参照し、指定された圧縮単位に基づき要求されたフィールドを圧縮する。すなわち圧縮値管理表506に記録された定義に従い圧縮単位ごとに圧縮する。
圧縮方式としてハフマン符号に代表される辞書を別途保存する必要がある方式を用いた場合と、LZ符合に代表される辞書を別途保存する必要がない方式を用いた場合とでは、圧縮列を含む表向けinsert文処理部511の処理手順が異なる。図8は前者の圧縮方式の場合の処理手順を示す。まず行を挿入する表の複数の圧縮単位を順次検索するため注目する圧縮単位番号aを1とし(801)、その1番目の圧縮単位の先頭位置を取得する(802)。次にその圧縮単位の辞書を読み込む(803)。なお、代表的な例では、圧縮単位内のユーザ表のデータを格納するページの更に前の先頭ページを、上記辞書を格納するページとしている。次に、読み込んだ辞書を用いて挿入対象行のデータを圧縮する(804)。次に当該圧縮単位内の第1ページ目から、そのページを取得し(805、806)、取得したページに空エリアがあるかを判定する(807)。空エリアがなければ、圧縮単位内で未確認のページがまだあるかを判定し(809)、ページ数をインクリメントし(810)、空エリアがあるかの判定を繰り返す。空エリアがあれば、そのページに圧縮後のデータ、すなわち圧縮により得た圧縮列に対応するフィールドのデータと、非圧縮列に対応するフィールドの生のデータとを組みあわせた行全体のデータを書き込み(814)、処理を終了する。圧縮単位内の全ページを順次判定しても空エリアがなければ、つまりステップ809で空エリア未確認のページがもうなければ、表に未確認の圧縮単位があるかを判定し(812)、あれば圧縮単位番号aをインクリメントし、次の圧縮単位について上述の先頭位置取得(802)、辞書読み込み(803)、各ページの空エリアの確認(805〜810)を行う。このように、行を挿入可能なページを表データの先頭のページから順に、各圧縮単位にわたり探し、空エリアを発見したページに書き込みを行う。空エリアがあるページを発見しないままステップ812で未確認の圧縮単位がもうないと判定したときには領域不足により行の挿入に失敗したことを報告して処理を終了する。
以上のように図8に示した処理フローでは、insert文処理にあたり挿入可能なページを先頭表の先頭ページから順次探す手順をとるが、書き込み可能なページを別途管理する手段が用意されている場合には図8のループ処理を省くことが可能となる。
図9は辞書を別途保存する必要がない圧縮方式を用いる場合のinsert文処理の手順を示す。図9のフローにおいても、まず圧縮単位番号aを1として(901)、表の先頭の圧縮単位の先頭位置を取得する(902)。つぎに圧縮単位内の注目ページ番号bを1とし(903)、その注目ページを取得する(904)。ぺージ内の第1行のデータから、データ中の圧縮列のデータを伸張し、伸張したことを辞書に反映する(905、906)。注目ページ番号を順次インクリメントして(908)、この伸張、辞書への反映の処理を繰り返す。ステップ907でページ内の行の全ての伸張処理が終了したと判定すると、挿入対象行の圧縮列に対応するデータの圧縮処理を行い(909)、ページ内に圧縮後のデータを格納する空エリアがあるかを判定する(910)。空エリアがあれば、そのページに圧縮後のデータを書き込み(916)、行の挿入の処理を終了する。空エリアがなければ、注目ページ番号bをインクリメントし(912)、次のページについて上記各行の伸長処理、挿入対象行の圧縮処理を行う。ステップ910でページ内に空エリアがあればステップ916の圧縮後のデータの書き込みを行い、処理を終了する。もし圧縮単位内の全ページを順次判定しても空エリアがなければ、表中にまだ未確認の圧縮単位があるかを判定する(913)。表中に、未確認の圧縮単位があれば、圧縮単位番号aをインクリメントして(914)、次の圧縮単位につきステップ902〜912の処理を行う。このように行を挿入可能な空エリアをもつページが見つかるまで各圧縮単位の各ページを確認し、空エリアがあるページを発見しないままステップ913で未確認の圧縮単位がもうないと判定したときは、領域不足により行の挿入に失敗したことを報告して処理を終了する(915)。
非圧縮表向けinsert文処理部510は圧縮および伸張処理を行うことなく、挿入対象行のフィールドの挿入を行う。なお、非圧縮表向けinsert文処理部510の処理方式は公知の処理方式であるため、詳細は省く。
本実施例において表の全部若しくは一部を読出す際にはSQLにおけるselect文を用いる。ユーザ512が発行したselect文は問合せ処理部507が受け取り処理を行う。問合せ処理部からのselect文処理命令はI/O振分処理部509に渡される。I/O振分処理部509がselect文処理命令を実行する際の動作フローを図10に示す。Select文処理開始(1001)の後、圧縮値定義表508を参照し(1002)、読込み対象の表が圧縮列を含むかを判断する(1003)。圧縮列を含む表である場合は圧縮列を含む表向けselect文処理部519を呼び出し(1004)、処理を完了する(1006)。一方、圧縮列を含まない表が読み出し対象である場合は非圧縮表向けselect文処理部520を呼び出し(1005)、処理を完了する(1006)。
圧縮列を含む表向けselect文処理部519の処理フローを図11、図12に示す。図11は辞書を別途保存する必要がある圧縮方式を用いる場合の圧縮列を含む表向けselect文処理部519の処理フローである。まずユーザ表中の複数の圧縮単位を順次検索するために注目する圧縮単位番号aを1とし(1101)、その1番目の圧縮単位の先頭位置を取得する(1102)。次にその圧縮単位の辞書を読み込む(1103)。当該圧縮単位内の第1ページ目から、そのページを取得する(1104、1105)。取得したページ内の第1行のデータから順に圧縮データを伸張して(1106, 1107)、select 文の条件を満たすか否かを判定し(1108)、条件を満たせばその行の伸縮後のデータを出力する処理1109を行う。この処理後、行番号cをインクリメントして(1111)、各行について順次行う。ステップ1110でページ内に未検索の行がないと判定すると、ステップ1112を経てステップ1114でページ番号bをインクリメントし、次のページについてステップ1105〜1111を繰り返し実施し、以上の処理を、圧縮単位内の未検索ページがなくなるまで各ページについて行う。ステップ1112で圧縮単位内の未検索ページがないと判定すると、ステップ1114を経てステップ1115で圧縮単位番号aをインクリメントし、ユーザ表中の次の圧縮単位の検索を同様に行う。ステップ1114でユーザ表中に未検索の圧縮単位がないと判定するとselect文処理を終了する。図12は辞書を別途保存する必要がない圧縮方式を用いる場合のselect文処理の手順を示す。ユーザ表の複数の圧縮単位について、それぞれが包含する頁ごとに処理が繰り返される点は図11のフローと同様なので、ステップ1213からステップ1214を介してのフローの帰還、及びステップ1211からステップ1212を介してのフローの帰還については説明を略す。各ページについての処理は、まずページを取得し(1204)、頁内の第1行のデータからこの行を伸張し、伸張したことをその伸張時に作成した辞書に反映する(1205、1206)。次に当該行はselect文の条件を満足するかを判定し(1207)。判定がYes ならその行を出力する(1208)。判定がNoならそのままステップ1209に進み、ページ内に未検索の行があれば行番号をインクリメントし(1210)、ページの取得から再び上記の処理を行い、未検索のページがなくなるまで繰り返す。
非圧縮表向けselect文処理部520の処理方式については、詳細説明を省く。
ユーザ表から行の削除を行う際には、SQLにおけるdelete文を用いる。ユーザ512が発行したdelete文は問合せ処理部507が受け取り処理を行う。問合せ処理部507がdelete文を処理する際の動作フローを図13に示す。delete文処理開始1301の後、圧縮値定義表506を参照し(1302)、delete文の対象となる表が圧縮列を含むか判断する(1303)。すなわち問合せ処理部507が圧縮値定義表506を参照し、削除されるデータに圧縮値が含まれるか判断する。圧縮列を含む場合は圧縮列向けdelete文処理部513を呼び出し(904)、処理を完了する(906)。一方、圧縮列を含まない場合は通常のdelete文処理を呼び出し(1305)、処理を完了する。
ステップ1304で呼び出される圧縮列向けのdelete文処理について図14及び図15を参照して詳述する。図14は、例えばハフマン符号による圧縮に代表される、辞書を別保存する必要がある圧縮方式を用いた場合の、delete文処理部513で実行する圧縮列向けdelete文処理のフローを示す。この場合には、辞書の内容には変更を加えず、実際に行があった箇所を消去し辞書劣化フラグを立てる処理を実行する。図12のフローは、対象となるユーザ表は複数の圧縮単位を含み、その圧縮単位は複数頁を含むことを前提とする。まず、圧縮単位番号aを1とし(1401)、その圧縮単位の先頭位置を取得する(1402)。この例では圧縮単位の先頭位置にその圧縮単位の辞書が格納され、ステップ1403でこの辞書を読み込む。次に圧縮単位内のページ番号bを1とし(1404)、その頁を取得する(1405)。次に取得した頁内の行の番号を1として(1406)、この行を、先の辞書を用いて伸張する(1407)。つぎに当該行がdelete文の対象かどうかを判定し(1408)、yesなら当該行を消去する(1409)とともに、もし圧縮単位内で初の行の消去であれば、上記の辞書に劣化フラグをつける(1410)。当該行がdelete文の対象でなければそのまま1411へ進み、頁内に未処理の行があれば行番号をインクリメントし(1412)、ステップ1407〜1510を繰り返す。さらにステップ1413判定で圧縮単位内に未処理の頁があれば、頁番号をインクリメントし(1414)、その頁を取得して、その頁の各行ごとにステップ1407〜1410を繰り返す。以上の処理により、圧縮単位内のdelete文の対処である行はすべて消去され、その圧縮単位の辞書には劣化フラグがつく。この時の状態は図16(a)に示される。以上の処理は、未処理の圧縮単位があるか否かの判定(1415)および圧縮単位番号aのインクリメント(1416)を経た繰り返しにより、対象となるユーザ表の複数の圧縮単位の全てについて実行される。
圧縮方式としてLZ符号に代表される辞書を別保存する必要がない方式を用いた場合、delete文の対象である行に削除フラグを立て、実際には消去を行わない処理を採用できる。この方式は、例えば全ての行の先頭に削除フラグ用の領域を1bit持たせることで実現できる。図15に辞書を別保存する必要がない圧縮方式の場合の圧縮列向けdelete文処理のフローを示す。ユーザ表の複数の圧縮単位について、それぞれが包含する頁ごとに処理が繰り返される点は図14のフローと全く同様なので、ステップ1513からステップ1514を介してのフローの帰還、及びステップ1511からステップ1512を介してのフローの帰還については説明を略す。各頁についての処理は、まず頁を取得し(1504)、頁内の行の番号を1として(1505)、この行を伸張し、伸張したことをその伸張時に作成した辞書に反映する(1506)。次に当該行はdelete文の対象の行か否かを判定する(1507)。判定がYes ならその行が削除された行であることを示す削除フラグを付け(1508)、実際にはページから消去しないでステップ1509へ進む。判定がNoならそのままステップ1509に進み、ページ内に未処理の行があれば行番号をインクリメントし(1510)、ページの取得から再び上記の処理を行い、未処理のページがなくなるまで繰り返す。このdelete文処理を何回か行った後の状態は図17(a)に示される。
いずれの方式においてもdelete文実行に伴い適宜メンテナンス処理を行う必要がある。辞書を別保存する必要がある圧縮方式の場合の図11で説明したdelete文処理では、各圧縮単位内で行の消去が実行されと、図16(a)に示すよう各ページ内に空エリア1601ができ、表に新たな行の挿入要求があった場合に空エリアを使用可能となる。しかし圧縮単位内の圧縮データに関連して辞書保存ページ1602に保存する辞書には消去した行の圧縮に関するもう使用されることのない辞書データが残り、すなわち辞書が劣化することになる。そこで、例えばdelete文処理を特定回数だけ実行したとき、メンテナンス処理を起動する。メンテナンス処理では、各圧縮単位の辞書に劣化フラグ1603が付されているかを検索し、劣化フラグが付された圧縮単位の各ページに含まれる行を伸張するとともに劣化した辞書を破棄し、図16(b)に示すように各行のデータを前詰めに再整列し、再圧縮して各ページに書き込む。再圧縮の処理で生成したで辞書は辞書格納ページ1602にあらためて格納する。
辞書を別保存する必要のない圧縮方式の場合の図12で説明したdelete文処理では、行の削除を行ってもその行に図17(a)に示す削除フラグ1701がつくだけで行データは残される。したがって、そのままではdelete文処理を進めても空エリアができないので、空エリアの確保のためにはメンテナンス処理を行うのが良い。この場合のメンテナンス処理として、削除フラグ1701がついた行を含む圧縮単位を検索し、その圧縮単位内の各ページの削除フラグがついた行を消去し、図18(b)に示すように、各行のデータを前詰めに再整列し、再圧縮して書き込む、という手順を採用できる。
なお、本実施例で扱うデータ管理方式を更に拡張し、ユーザがデータに含まれる値ごとに圧縮の有無と圧縮単位と圧縮方式を指定し、圧縮値管理表ではデータ識別子と圧縮識別子と圧縮単位と圧縮方式を管理することで、列ごとに最適な圧縮方式を指定することも可能である。
図18に圧縮方式も指定する場合のユーザ表とそれに対応するcreate table文の拡張および圧縮列管理表の例を示す。図18(a)に示すsongs表1801はミュージックプレイヤーの楽曲情報を保存するユーザ表であり、通し番号を表すid列、歌手名を表すartist_name列、アルバム名を表すalbum_name列、リリース年を表すrelease列、アルバム内の曲順を表すtrack_num列、楽曲のジャンルを表すgenre列、楽曲名を表すsong_title列からなる。ここで、artist_name列とalbum_name列とrelease列を圧縮列と指定し、さらにartist_name列は2ページずつLZ符号で、album_name列とrelease列を4ページずつハフマン符号で圧縮する場合の表構造定義に用いるcreate table文の拡張を図18(b)に示す。このcreate table文の拡張ではartist_name列とalbum_name列とrelease列を定義する際に、データ型定義に続いて圧縮列である事を示す“compress”と圧縮単位である”2”および”4”と圧縮方式である”LZ”および”Huffman”を指定している。さらに図18(c)の圧縮列管理表1803ではデータ識別子と圧縮列識別子と圧縮単位と圧縮方式を管理する。すなわちユーザが指定した圧縮を行う値とその値を含むデータの識別子と圧縮単位と圧縮方式を圧縮値定義処理部が受け取り、圧縮値管理表に保存する。さらに図7の手順704における圧縮列を含む表向けinsert文処理の際に、insert文処理部511は圧縮値管理表を参照してそこに指定された圧縮単位と圧縮方式にしたがって要求されたフィールドの挿入のための伸張処理、圧縮処理をおこなう。同様に図10の手順1004における圧縮列を含む表向けselect文処理の際にも、select文処理部520は圧縮値管理表508を参照し、指定された圧縮単位と圧縮方式に基づき伸張処理をして要求されたフィールドを出力する。
データを圧縮することにより、ストレージ容量の制約の厳しい機器で利用できる。また、圧縮を行う列をユーザ指定とすることで演算量も削減でき、演算能力やメモリ制約の厳しい機器で利用できる。特に、演算能力とメモリ制約共に扱うデータ量とシステム規模の相対的な関係であり、ポータブル機器のみならず、大規模サーバにおいても適用可能である。
本発明のデータ圧縮処理を伴うデータ管理方法を実施する実施例1のコンピュータシステムのシステム構成図である。(実施例1) 本発明の実施例の管理対象である表の構成要素を示した説明図である。 上記実施例1におけるユーザ表とそれに対応するデータ定義文および圧縮列管理表を示した説明図である。 上記実施例1における構造体の配列を拡張した例を示した説明図である。 本発明のデータ圧縮処理を伴うデータ管理方法を実施する実施例2のコンピュータシステムのシステムである。 上記実施例2におけるユーザ表とそれに対応するデータ定義文および圧縮列管理表を示した説明図である。 上記実施例2のI/O振分処理部がinsert文処理命令を実行する際の処理フローを示すフローチャートである。 上記実施例2の圧縮列を含む表向けinsert文処理部が実行するinsert文処理の一例の手順を示すフローチャートである。 上記圧縮列を含む表向けinsert文処理部が実行するinsert文処理の他の例の手順を示すフローチャートである。 上記I/O振分処理部がselect文処理命令を実行する際の処理フローを示したフローチャートである。 上記実施例2の圧縮列を含む表向けselect文処理部が実行するselect文処理の一例の手順を示すフローチャートである。 上記圧縮列を含む表向けselect文処理部が実行するselect文処理の他の例の手順を示すフローチャートである。 上記実施例の問合せ処理部がdelete文を処理する際の処理フローを示したフローチャートである。 上記実施例2の圧縮列向けdelete文処理部が実行するdelete文処理の一例の手順を示すフローチャートである。 上記圧縮列向けdelete文処理部が実行するdelete文処理の他の例の手順を示すフローチャートである。 上記図14のdelete文処理部を行う場合に採用するメンテナンス処理の前および後の表データの状態を示す概念図である。 上記図15のdelete文処理部を行う場合に採用するメンテナンス処理の前および後の表データの状態を示す概念図である。 実施例2の変形例におけるユーザ表とそれに対応するデータ定義文および圧縮列管理表を示した説明図である。
符号の説明
101、501…コンピュータシステム、
102、502…リレーショナルデータベース実行部、
103、503…ストレージ、
104、504…ユーザデータ領域、
105、505…管理情報領域、
106、506、603、1803…圧縮値管理表、
107、507…問合せ処理部、
108、508…圧縮値定義処理部、
109、512…ユーザ、
110、515…AP実行部、
111、516…オペレ−ティングシステム、
112、517…CPU、
509…IO振り分け処理部、
510…非圧縮表向けinsert文処理部、
511…圧縮列を含む表向けinsert文処理部、
513…圧縮列向けdelete文処理部、
514…通常のdelete文処理部、
519…圧縮列を含む表向けselect文処理部、
520…非圧縮表向けselect文処理部。

Claims (9)

  1. 複数項目の値の組が繰り返し現れるデータに対し、ストレージ上の圧縮値管理表にもとづいたデータ圧縮処理を行って管理を行うデータ管理方法であって
    前記データ中の項目ごとに、圧縮の有無のユーザによる指定を受け付け、
    圧縮有りと指定された各項目に関して、該項目の識別子及び該項目を含むデータの識別子を前記圧縮値管理表に保存し、
    前記データのうち、前記項目の識別子で特定される値にのみ圧縮処理を施して前記ストレージ上で管理するデータ圧縮処理を伴うデータ管理方法。
  2. 複数項目の値の組が繰り返し現れるデータに対し、ストレージ上の圧縮値管理表にもとづいたデータ圧縮処理を行って管理を行うデータ管理方法であって
    前記データ中の項目ごとに、圧縮の有無及び圧縮単位のユーザによる指定を受け付け、
    圧縮有りと指定された各項目に関して、該項目の識別子、該項目を含むデータの識別子、及び圧縮単位を前記圧縮値管理表に保存し、
    前記データのうち、前記項目の識別子で特定されるデータのみ指定された圧縮単位の範囲内で圧縮処理を施して前記ストレージ上で管理するデータ圧縮処理を伴うデータ管理方法。
  3. 前記データに値の組を挿入する要求を受けた際に、前記圧縮値管理表を参照して前記値の組の各項目について圧縮有りの項目か否かを判定し、圧縮有りの場合は前記圧縮値管理表に保存された該項目の圧縮単位の範囲内の値を前記ストレージから読み込んでデータ圧縮処理を実行してその結果を挿入し、否の場合は要求された値のまま挿入することを特徴とする請求項2記載のデータ圧縮処理を伴うデータ管理方法。
  4. 前記データの全部若しくは一部を読み出す要求を受けた場合に、前記圧縮値管理表を参照して読み出し対象の値が圧縮有りの項目か否かを判定し、圧縮有りの場合は前記圧縮値管理表に保存された該項目の圧縮単位の範囲内の値を前記ストレージから読み込んでデータ伸張処理を行うことを特徴とする請求項2記載のデータ圧縮処理を伴うデータ管理方法。
  5. 前記データの全部若しくは一部を削除する要求を受けた場合に、前記圧縮値管理表を参照して削除が要求されたデータに圧縮対象項目の値が含まれるか否かを判定する手順、及び、圧縮対象項目の値が含まれる場合は、圧縮値に特有のデータ削除処理を行う手順を更に有する請求項2記載のデータ管理方法。
  6. 前記圧縮処理は圧縮時に圧縮単位ごとの辞書を作成して圧縮単位の先頭に該辞書を保存する圧縮方式であり、前記圧縮値に特有のデータ削除処理は、圧縮単位の先頭から、圧縮値を伸張し、削除対象データであれば消去する処理を繰り返す手順、当該圧縮単位の辞書に劣化フラグを付す手順を含むことを特徴とする請求項5記載のデータ管理方法。
  7. 前記圧縮処理は圧縮時に作成した辞書の保存の処理を伴わない圧縮方式であり、前記圧縮値に特有のデータ削除処理は、圧縮単位の先頭から、圧縮値を伸張し、削除対象データであれば当該データを前記ストレージから消去する代わりに当該データ削除フラグを付すことを繰り返す手順を含むことを特徴とする請求項5記載のデータ管理方法。
  8. 前記圧縮値管理表には圧縮有りと指定された各項目に関して該項目の識別子、該項目を含むデータの識別子、及び圧縮単位に加えて圧縮方法の指定を保存し、前記データのうち、前記項目の識別子で特定されるデータのみ指定された圧縮単位の範囲内で指定された圧縮方法で圧縮処理を施して前記ストレージ上で管理する請求項2記載のデータ圧縮処理を伴うデータ管理方法。
  9. ストレージ上で複数の頁にまたがるユーザ表を保存して管理するデータ圧縮を伴うデータ管理方法であり、
    前記ユーザ表の列ごとに、圧縮の有無、圧縮単位のユーザによる指定を受け付け、
    圧縮有りと指定された各列に関して、列名、前記ユーザ表の表名、及び圧縮単位を圧縮値管理表に保存し、
    前記ユーザ表の各フィールドのデータのうち前記圧縮値管理表に圧縮有りと指定されら列のフィールドのデータのみを指定された圧縮単位でカラムワイズ圧縮して管理することを特徴とするデータ圧縮処理を伴うデータ管理方法。
JP2008189277A 2008-07-23 2008-07-23 データ圧縮処理を伴うデータ管理方法 Expired - Fee Related JP5303213B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008189277A JP5303213B2 (ja) 2008-07-23 2008-07-23 データ圧縮処理を伴うデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008189277A JP5303213B2 (ja) 2008-07-23 2008-07-23 データ圧縮処理を伴うデータ管理方法

Publications (2)

Publication Number Publication Date
JP2010026884A true JP2010026884A (ja) 2010-02-04
JP5303213B2 JP5303213B2 (ja) 2013-10-02

Family

ID=41732644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008189277A Expired - Fee Related JP5303213B2 (ja) 2008-07-23 2008-07-23 データ圧縮処理を伴うデータ管理方法

Country Status (1)

Country Link
JP (1) JP5303213B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013101470A (ja) * 2011-11-08 2013-05-23 Toshiba Corp データベース圧縮装置
WO2013145599A1 (en) * 2012-03-27 2013-10-03 International Business Machines Corporation Multiplex classification for tabular data compression
WO2017154065A1 (ja) * 2016-03-07 2017-09-14 株式会社日立製作所 計算機及びデータベース管理方法
WO2018021094A1 (ja) * 2016-07-25 2018-02-01 株式会社高速屋 データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラム
JP2018023083A (ja) * 2017-01-20 2018-02-08 株式会社高速屋 データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314957A (ja) * 1995-05-18 1996-11-29 Mitsubishi Electric Corp データベースシステム
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314957A (ja) * 1995-05-18 1996-11-29 Mitsubishi Electric Corp データベースシステム
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200700661001; '対象ファイルを問わない新しいデータ圧縮技法が登場' 日経コンピュータ 第50号 , 19830822, p.51, 日経マグロウヒル社 *
JPN6012062938; '対象ファイルを問わない新しいデータ圧縮技法が登場' 日経コンピュータ 第50号 , 19830822, p.51, 日経マグロウヒル社 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013101470A (ja) * 2011-11-08 2013-05-23 Toshiba Corp データベース圧縮装置
GB2515428B (en) * 2012-03-27 2018-01-17 Ibm Multiplex classification for tabular data compression
US8639672B2 (en) 2012-03-27 2014-01-28 International Business Machines Corporation Multiplex classification for tabular data compression
US8639673B2 (en) 2012-03-27 2014-01-28 International Business Machines Corporation Multiplex classification for tabular data compression
GB2515428A (en) * 2012-03-27 2014-12-24 Ibm Multiplex classification for tabular data compression
WO2013145599A1 (en) * 2012-03-27 2013-10-03 International Business Machines Corporation Multiplex classification for tabular data compression
WO2017154065A1 (ja) * 2016-03-07 2017-09-14 株式会社日立製作所 計算機及びデータベース管理方法
JPWO2017154065A1 (ja) * 2016-03-07 2018-11-22 株式会社日立製作所 計算機及びデータベース管理方法
US10866941B2 (en) 2016-03-07 2020-12-15 Hitachi, Ltd. Computer and database management method
WO2018021094A1 (ja) * 2016-07-25 2018-02-01 株式会社高速屋 データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラム
JP2018022933A (ja) * 2016-07-25 2018-02-08 株式会社高速屋 データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラム
US10547324B2 (en) 2016-07-25 2020-01-28 KOUSOKUYA, Inc. Data compression coding method, apparatus therefor, and program therefor
EP3771104A1 (en) 2016-07-25 2021-01-27 Kousokuya, Inc. Data compression coding method, decoding method, apparatus for the methods, and program for the methods
JP2018023083A (ja) * 2017-01-20 2018-02-08 株式会社高速屋 データ圧縮符号化方法、復号化方法、その装置、及び、そのプログラム

Also Published As

Publication number Publication date
JP5303213B2 (ja) 2013-10-02

Similar Documents

Publication Publication Date Title
US7370068B1 (en) Sorting of records with duplicate removal in a database system
US11461304B2 (en) Signature-based cache optimization for data preparation
US6789094B2 (en) Method and apparatus for providing extended file attributes in an extended attribute namespace
WO2005086003A1 (ja) データベース・システム
US6879986B1 (en) Space management of an IMS database
US8108431B1 (en) Two-dimensional data storage system
WO2017151194A1 (en) Atomic updating of graph database index structures
KR20190134115A (ko) 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램
KR20070003577A (ko) 역 계층적 구조를 갖고 있는 파일 시스템
US10133761B2 (en) Metadump spatial database system
JP5303213B2 (ja) データ圧縮処理を伴うデータ管理方法
US10642815B2 (en) Step editor for data preparation
US6745198B1 (en) Parallel spatial join index
EP3362808B1 (en) Cache optimization for data preparation
JP2004524632A (ja) 記憶データを再編成するシステム及び方法
Chien et al. A comparative study of version management schemes for XML documents
US8126900B1 (en) Transforming a data type of a column in a table
Nørvåg Supporting temporal text-containment queries in temporal document databases
CN1018032B (zh) 对关系数据库的数据项(object)进行有效分析的系统和方法
Carter et al. Nanosecond indexing of graph data with hash maps and VLists
US8818953B2 (en) Method and apparatus for loading data into multi-table tablespace
US6760713B2 (en) Method, computer program product, and system for file and record selection utilizing a fuzzy data record pointer
US20210056090A1 (en) Cache optimization for data preparation
US11288447B2 (en) Step editor for data preparation
US20220335030A1 (en) Cache optimization for data preparation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

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: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130624

R151 Written notification of patent or utility model registration

Ref document number: 5303213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees