JP6004453B2 - 展開マップを用いた改良されたデータアクセスのパフォーマンス - Google Patents

展開マップを用いた改良されたデータアクセスのパフォーマンス Download PDF

Info

Publication number
JP6004453B2
JP6004453B2 JP2014169597A JP2014169597A JP6004453B2 JP 6004453 B2 JP6004453 B2 JP 6004453B2 JP 2014169597 A JP2014169597 A JP 2014169597A JP 2014169597 A JP2014169597 A JP 2014169597A JP 6004453 B2 JP6004453 B2 JP 6004453B2
Authority
JP
Japan
Prior art keywords
data
subset
compressed
row
computer program
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.)
Active
Application number
JP2014169597A
Other languages
English (en)
Other versions
JP2015060590A (ja
Inventor
ロバート、ウィリアム、ライル
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015060590A publication Critical patent/JP2015060590A/ja
Application granted granted Critical
Publication of JP6004453B2 publication Critical patent/JP6004453B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースシステムに関し、より詳細には、データベースシステムで利用される圧縮技術および展開技術に関する。データベースシステムは、大量のデータを管理し、一般にデータ圧縮を、データオブジェクトを格納するディスクおよび/または記憶装置の数を低減する手段として使用する。
例えば、ニューヨーク州のアーモンクに所在のインターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なDB2データベースシステムは、ディスク内のデータを透過的に圧縮する圧縮機能の組み合わせを使用するストレージの最適化機能を提供し、ディスク領域の必要量およびストレージインフラの必要量を低減する。ディスクストレージシステムは、データベースソリューションの最も高価な構成要素であることが多いため、ストレージサブシステムを僅かに縮小させるだけでも、データベースソリューション全体のコストをかなり削減することができる。DB2データベースシステムで利用されるデータ圧縮技術には、Row Compression、Adaptive Row CompressionおよびXML Compressionがある。
通常、種々の圧縮技術は、メモリ消費およびストレージ消費を充分に抑制する一方、データにアクセスする際に、中央処理装置(CPU)リソースを頻繁に使用する(すなわち、CPUの使用頻度が高い)。したがって、圧縮データの一部のみにアクセスする必要がある場合に、必要とされるCPUリソースの量を低減する技術は有用であろう。
本発明の一実施形態により、データベースシステムでデータを展開する技術を実行および使用するコンピュータプログラム製品を含む、方法および装置が提供される。圧縮されたデータセット内のデータサブセットに関連するクエリーが受信される。コストモデルを使用して1以上の展開ストラテジーが算出される。コストモデルは、見積もられたフィルターファクタを含む。コストの低い展開ストラテジーが、1以上の展開ストラテジーの評価結果に基づいて選択される。圧縮されているデータセット内で、要求されているデータサブセットを示す1以上のバイトの位置を特定する。選択された展開ストラテジーを用いて、データサブセットに対応する圧縮データの一部のみが展開されると共に、残りのデータセットは、圧縮された状態のままとなる。
本発明の1以上の実施形態の詳細は、添付図面および以下の記載に示す。本発明の他の特徴や利点は、以下の記載および図面並びに請求項から明らかとなるであろう。
1の実施形態に係るデータを展開するプロセス(100)を示すフローチャート。 1の実施形態で使用されるコンピュータアーキテクチャ(200)を示す図。
種々の図面における同様の参照記号は、同様の構成要素を示す。
上述したように、DB2データベース等の多くのデータベースシステムは一般に、或る行のいずれかの列にアクセスする必要がある場合、行全体を圧縮して展開する。しかしながら、テーブルに対してクエリーを実行する場合、行に含まれる複数列のサブセット(またはテーブルの1のページに含まれる複数行から成るサブセット)のみにアクセスする必要があることはよく知られている。本明細書で説明する様々な実施形態は、特定のクエリーに必要なデータを提供すべく、展開されるデータのいずれの部分を展開する必要があるか判断する方法を提供することにより、行の一部にのみアクセスする必要があるクエリーのパフォーマンスを大幅に改善する。
当業者には明らかであるが、本発明の態様は、システム、方法またはコンピュータプログラム製品として具体化することができる。したがって、本発明の態様は、完全なハードウェアの実施形態、(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)完全なソフトウェアの実施形態、または、本明細書で「回路」、「モジュール」または「システム」として参照されるソフトウェアとハードウェアを組み合わせた実施形態を採り得る。さらに、本発明の態様は、コンピュータ読取可能なプログラムコードを有する1以上のコンピュータ読取可能な媒体を備えるコンピュータプログラム製品の形態を採り得る。
1以上のコンピュータ読取可能な媒体の組み合わせを利用することができる。コンピュータ読取可能な媒体は、コンピュータ読取可能な信号媒体またはコンピュータ読取可能な記憶媒体とすることができる。コンピュータ読取可能な記憶媒体は、例えば、電子システム、電子装置或いは電子デバイス、磁気システム、磁気装置或いは磁気デバイス、光学システム、光学装置或いは光学デバイス、電磁気システム、電磁気装置或いは電磁気デバイス、赤外線システム、赤外線装置或いは赤外線デバイス、半導体システム、半導体装置或いは半導体デバイス、または、これらの好適な組み合わせとすることができるが、これらに限られない。コンピュータ読取可能な記憶媒体のさらに具体的な例(包括的でないリスト)は、1本以上のワイヤを備える電気接続、可搬型のコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用記憶装置(ROM)、消去可能なプログラム可能読取り専用記憶装置(EPROMまたはフラッシュメモリ)、光ファイバ、持ち運び可能なコンパクトディスク型の読取り専用記憶装置(CD−ROM)、光学式記憶装置、磁気記憶装置、またはこれらの好適な組み合わせを含む。本明細書では、コンピュータ読取可能な記憶媒体は、命令実行システム、命令実行装置、或いは命令実行デバイスによって使用されるプログラム、またはこれらと共に使用されるプログラムを収容または格納可能な有形の媒体とすることができる。
コンピュータ読取可能な信号媒体は、コンピュータ読取可能なプログラムコードを含む伝搬型のデータ信号であって、例えば、ベースバンド内のデータ信号や搬送波の一部であるデータ信号を含み得る。このような伝搬型の信号は、電磁気信号、光学信号、これらの好適な組み合わせを含む様々な形態をとり得るが、これらに限られない。コンピュータ読取可能な信号媒体は、コンピュータ読取可能な記憶媒体ではなく、命令実行システム、命令実行装置或いは命令実行デバイスによって使用されるプログラム、またはこれらのシステム、装置或いはデバイスと共に使用されるプログラムを通信、伝搬または転送可能な任意のコンピュータ媒体とすることができる。
コンピュータ読取可能な媒体に組み込まれるプログラムコードは、無線、有線、光ファイバーケーブル、赤外線等を含む、好適な手段を用いて伝送することができるが、これらに限られない。本発明の態様のためにオペレーションを実行するコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++等のオブジェクト指向のプログラミング言語や、「C」プログラミング言語または同様のプログラミング言語等の従来の手続き型のプログラミング言語を含む、1以上のプログラミング言語を組み合わせて記述することができる。プログラムコードは、スタンドアロンのソフトウェアパッケージとしてユーザのコンピュータ上で完全に或いは部分的に実行でき、ユーザのコンピュータ上で部分的に実行すると共にリモートコンピュータ上で部分的に実行でき、または、リモートコンピュータ或いはサーバ上で完全に実行できる。後者の場合では、リモートコンピュータは、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続でき、または(例えば、インターネットサービスプロバイダを利用したインターネットを介して)外部のコンピュータに接続することもできる。
本発明の態様は、本発明の実施形態に係る方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して、以下に説明される。フローチャート図および/またはブロック図の各ブロックと、フローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実行可能であることが理解できるであろう。これらのコンピュータプログラム命令は、マシンを構成する汎用コンピュータのプロセッサ、専用コンピュータのプロセッサ、または他のプログラム可能なデータ処理装置に提供することができ、コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置によって実行される当該コンピュータプログラム命令が、フローチャートおよび/またはブロック図に明記される機能や処理を実行する手段を生成する。
また、これらのコンピュータプログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに指示可能なコンピュータ読取可能な媒体に格納することができ、コンピュータ読取可能な媒体は、当該コンピュータ読取可能な媒体に格納された当該コンピュータプログラム命令が、フローチャートおよび/またはブロック図に明記される機能や処理を実行する命令を備える製品を提供するように機能する。
また、コンピュータプログラム命令は、コンピュータ、プログラム可能な他のデータ処理装置、または他のデバイスにロードして、コンピュータ、プログラム可能な他の装置または他のデバイスで一連の動作ステップを実行させることにより、コンピュータによって実行されるプロセスを提供することができ、コンピュータまたはプログラム可能な他の装置で実行される当該コンピュータプログラム命令が、フローチャートおよび/またはブロック図に明記される機能や処理を実行するプロセスを提供する。
図1に示すように、1の実施形態に係るデータを展開するプロセス100が、圧縮されたデータセット内のデータサブセットに関連するクエリーを受信することにより開始する(ステップ102)。通常、データベースシステムでは、行のいずれの列にアクセスする必要が有るかを示す情報を有するストラクチャーが構築される。例えば、DB2データベースシステムでは、特定のクエリーのために、いずれの列が述語(プレディケート)を評価する必要が有るのかを示し、また、行を限定するために、いずれの列が検索されて呼び出し元に出力される必要が有るのかを示すストラクチャーが存在する。クエリーの受信に応答して、データベースシステムは、これらのストラクチャーに問い合わせ、述語の評価段階およびリスト選択処理の双方に必要な行の部分(述語の条件に合致する行について返却する必要のある行)を正確に決定する。例えば、20の列C1〜C20を有するテーブルの場合、以下のクエリーが有り得る。
この場合、クエリーは、列C1にアクセスして述語を評価する必要があり、述語が真実である場合、列C1および列C17にアクセスする必要がある。説明のために、各列が10バイト長であり、これらの列が、C1,C2,C3〜C20の順に格納されている場合を仮定する。この場合、列C1は行のバイト位置1〜10を占有し、列C17は行のバイト位置161〜170を占有する。その結果、ストラクチャーを評価するコードは、行について述語を評価するために、行のバイト1〜10のみが必要であると決定する。さらに、上述したリスト選択処理のためにC1およびC17の双方が必要であるが、C1は、述語の評価のために予め展開されるため、実際に行が返却されるときには、C17のみを展開する必要がある。したがって、上述したクエリーのために、以下の展開ストラテジーが利用できる。
段階1の展開(すなわち、述語を評価するために必要な列の展開)
列C1(行のバイト1〜10)のみが必要とされる。
段階2の展開(すなわち、リスト選択処理に必要な残り全ての列の展開)
C1は既に展開されているため、列C17(行のバイト161〜170)のみが必要とされる。
当業者であれば理解できるように、列が必要とされる前に必要な列のみを展開可能な方法は多数存在し、上述した2段階の例は、例示的な実施形態に過ぎない。例えば、上述した方法の代わりに、段階1において、列C1およびC17の全てのバイトを展開してもよい。他の実施形態では、行の異なる位置を要求する、より多くの段階を追加することができ、すなわち、例えばグループ化(group by)処理の場合、追加された段階において、当該グループ化処理に必要な列を同様に展開してもよい。したがって、プロセス100は、1以上の展開ストラテジーを評価する(ステップ104)。図1に示す実施形態では、見積もられたフィルターファクタを有するコストモデルを使用し、(当該フィルターファクタが訂正された場合に)最適な展開方法を見つける。例えば、列C1を展開するのにn1サイクルが必要であり、列C17を展開するのにn17サイクルが必要であり、述語のフィルターファクタが0.25である場合(すなわち、行全体の4分の1が述語の条件に合致する場合)、各展開のコストは、n1+(n17×0.25)サイクルである。同様に、CPUがC1からC17までの全ての列を展開する時間がn1…n17であり、かつ、n1…n17がn1+(n17×0.25)サイクル未満である場合は、行全体を展開する方が理に適うであろう。したがって、展開ストラテジーを決定する際に、このようなコストモデル方法を利用することにより、行のアクセスに最適な展開ストラテジーを見つけることができる。当業者であれば理解できるように、このようなコストモデルは拡張可能であり、当該コストモデルを利用することにより、行/ストラテジーの異なる部分について、異なるソフトウェアおよび/またはハードウェアが展開する方法のコストを算出することができる。ステップ104の展開ストラテジーの評価に基づいて、低コストの展開ストラテジーが選択される(ステップ106)。この文脈では、「サイクル」の語が本実施形態で使われているが、必ずしも実際のサイクルを意味するものではないことに留意すべきである。「最善」の展開ストラテジーを選択するために、複数の展開方法を適切に比較することが可能な如何なる種類の「カウント」や「CPUユニット」を使用することができる。
最後に、選択された展開ストラテジーを用いて、実際に行にアクセスし、要求されているバイト・データの位置を特定し、当該バイト・データを展開する(ステップ108)。上述したクエリーの例では、データベースエンジンは、この時点で、述語を評価するために、圧縮された行のバイト1〜10にアクセスする必要があることを認識している。したがって、200バイトの行全体を展開する代わりに、最初の10バイトのみを展開して停止する展開ロジックが呼び出される。この後、述語を評価することができる。述語の評価が、選択された列を返却する必要がある旨を示す真(TRUE)である場合、データベースエンジンは、列C17に必要なバイトのみ(バイト161〜170)を展開しようと試みる。この例では、展開アルゴリズムは、圧縮データの「サブストリング化(substringing)」を扱うように拡張される。これを実現するために、圧縮データの各トークンについて、当該トークンによって表される正確なバイト数を決定するストラクチャーが構築される。DB2データベースシステムを含む多くのデータベースシステムは、現在のところ、Lempel−Ziv圧縮を使用しているが、当業者であれば理解できるように、他の多くの圧縮アルゴリズムを同様に処理することができる。例えば、Lempel−Ziv圧縮はトークンを使用するが、他の圧縮アルゴリズムは、可変長の列のストラクチャーを認識する他の種類のユニットまたは他のロジックであって、可変長の列が存在する場合に必要とされる一連のバイトを決定可能なユニットまたはロジックを使用することができる。
例えば、8のトークンを有する非常に小さな圧縮ディクショナリが存在し、各トークンが以下の長さを有すると仮定する。
さらに、以下の圧縮された一連のトークンが存在すると仮定する。
プロセスは、上記トークン長テーブルを用いてカウントし、行のバイト161〜170を得るために、いずれのトークンを展開する必要があるか判断することができる。上記情報が与えられた場合は、以下のように算出することができる。
したがって、圧縮されたストリングを「カウント」することにより、10番目の圧縮されたトークン「8」の長さが3バイトであることが明らかとなり、行のバイト159〜161をカバーする。選択リスト処理に必要な最初のバイトがバイト161であるため、展開処理は、10番目のトークンから開始する。そして、展開処理は、行のバイト170が展開されるまで、すなわち、後続のトークンであるトークン「5」が見つかるまで続く。したがって、トークン8および5のみ(または、代替的にこれらのトークンの必要な部分のみ)を展開することにより、行のC17にアクセスするための全てのデータが利用可能になる。一般的に、適切なオフセットを「カウント」するコストは、実際にバイトを展開するよりも非常に小さい。したがって、必要とされる行の部分のみを展開する方が非常に速い。
上述したプロセス(100)は一例に過ぎず、当業者にとって明らかな多くのバリエーションがあることに留意すべきである。
例えば、上述したコストモデル方法を使用することにより、いずれの展開ストラテジーを最適に使用する判断が可能になる。例えば、クエリーのために列C1およびC3のみを展開する必要がある場合、列C1およびC3のみを展開するコストと、列C1、C2およびC3を展開するコストとを比較するコスト見積もりを行うことができる。列C2が必要でない場合でも、連続する範囲全体を展開する方が、列C1およびC3のみを個別に展開してカウントするよりも速いことがある。同様に、列C3のみが必要な場合、列C1は行の先頭であるため、列C1〜C3を展開する方が、列C3のみを展開するよりも速いことがある。このように、コストモデルによって様々なサブストリングの展開方法を比較することが可能になり、最もコストの低い案が選択される。
さらに、必要とされる列の一部が可変長である場合や、同じ行内で様々なオフセットを有する列があることに留意すべきである。これらのケースでは、単一のバイトオフセットでは不十分である場合がある。可変長の列の長さは、様々な方法で格納することができる。例えば、DB2は、可変長のアイテムを格納する2つの異なる方法を使用する。一方の方法では、可変長の列が、その長さに応じて整列される。他方の方法では、マップが行と共に格納され、可変長の各列の先頭にオフセットを提供する。しかしながら、これらは単なる例に過ぎない。重要なのは、展開手段に対し、可変長の列のストラクチャーを発見させ、可変長の列が有る場合に、必要とされる一連のバイトを決定させるロジックが存在することである。オフセットが行の中間に格納されるか否か、オフセットが先頭に存在するか否か、またはVARCHARに先行する単一の長さが存在するか否かは問題ではない。様々なストラクチャーの展開マップを生成して提供することができ、本質的なポイントは、これらのいずれの方法でも、可変長の列が有る場合に、実際に必要なバイトを決定できることである。
例えば、オフセットを各VARCHARの最初の部分に格納するデータベースシステムの場合、それはしばしば「再配列行フォーマット(reordered row format)」と呼ばれる。以下に、DB2データベースシステム内の行のストラクチャー等の例示的な行のストラクチャーを示す。この場合、可変長の各列は、行内の固定位置に開始オフセットを有する。列C1、VC2、VC3を有するテーブルの場合、C1は、長さが10の固定長の文字列であり、VC2およびVC3は、最大長が100バイトの可変長の文字フィールドである。この場合、行は以下のようになる。
クエリーが列VC3のみへのアクセスを要求する場合、サブストリングの展開を利用して、(Ofs(VC3)として圧縮データに格納されている)VC3の開始オフセットのみを得ることができる。そして、展開処理は、VC3の先頭が検出されるまで「カウント」を続行し、列の最後が検出されるまで展開を続行する(この場合、最後の列については、圧縮データの最後まで展開処理が実行される)。サブストリングの展開では、カウント処理と展開処理を素早く切り替えることができるため、行内の所望のオフセットを素早く展開することができ、これらのオフセットを用いて、後続の展開のバイト範囲を指定する。例えば、DB2データシステムの現在の実装では、展開に必要なバイトの位置が、0で終わるアドレスの配列と共に与えられる。例えば、或る行がアドレスWAPtrのワークエリアに展開され、当該行の161から170のバイトを展開することが要求される場合、以下のような配列を生成することができる。
このような配列は、展開マップと呼ばれ、展開する必要のある行の部分を示す。アドレスの代わりにオフセットを展開マップに格納する実施形態も可能であるが、上述したアドレスをバッファに入れる方法は、特定のデータベースシステムの実装に効果的であろう。代替的に、(Ofs(VC3)と同様に)エントリの開始位置がオフセット14の圧縮データ内に格納される可変長のエントリに対するアクセスが要求される場合は、以下のような展開マップを生成することができる。
この場合、最初のオフセットは、このオフセットの2バイトのフィールドをWAPtrに追加すべき旨を示すフィールドによって印付けられ、展開マップの次のエントリに格納される。したがって、展開マップの次のエントリは、展開処理を開始すべき位置を示すオフセットで満たされる。VC3は行の最後の列であるため、「最後」の展開処理のオフセットが、行の最大長を示すmaxRowLenに設定され、全ての圧縮データが処理されたときに、展開処理が終了する。VC3に後続する他の可変長の列が存在する場合、これらの可変長の列のオフセットは、圧縮された行の終了位置を示す同様の間接演算子と共に使用してもよい。いくつかの代替例では、行の可変長部分全体を展開する方が早い場合があり、この代替例のコスト見積もりも算出されることに留意すべきである。例えば、行の終端部の全ての可変長の列を常に格納する実施形態では、展開マップを「間接参照(indirection)」することなく、行の最後尾のみが展開される。
可変長の列が長さに応じて整列されるイベントでは、可変長の列の長さを使用する間接参照による方法によって後続の展開処理の位置を調整することができる。例えば、第3の可変長の列が要求される場合、特定のオフセットの値を展開マップの後続のエントリに追加する間接参照による方法を利用することにより、先行する可変長のエントリの長さを考慮することができる。当業者であれば理解できるように、このような間接参照による方法は、可変長の列の様々なフォーマットに好適である。
さらに、いくつかの実施形態では、展開マップが多数のバイト範囲を格納できることに留意すべきである。例えば、述語を使用せずに、上記例から列C1およびC17を常に検索するクエリーの場合、以下のような展開マップを構築することができる。
この方法では、行全体を展開することなく、行の連続していない複数の部分を展開することができる。
上述した説明では、DB2データベースシステムを例として用いたが、上述した技術は、もちろん他の多くの例に適用可能であることに留意すべきである。例えば、圧縮されたネットワークストリームは、予測可能なオフセットが示すデータストリームの一部(すなわち、ヘッダまたはトレーラ)にのみアクセスすればよい。この場合、調べる必要のあるストリーム部分のみをカウントして展開することができる。このように、上述した汎用性のある技術を様々な分野に応用することができる。
さらに、上述した例では、行の先頭から行の最後までトークンやユニットをカウントして展開するのに適切なバイトを特定するデータ展開に着目しているが、これを逆にした同様の技術を利用できることに留意すべきである。すなわち、行の先頭から展開するのではなく、行の最後から展開することができる。これは特に、例えば、行の長さが200バイトであり、最後の20バイトのみが必要であることが分っている場合に有用である。このような場合、行の最後から展開することにより、トークンやユニットをカウントして展開すべきバイトを特定する必要がなくなり、展開処理をさらに効率的にすることができる。当業者であれば、これらの技術の様々なバリエーションおよび/または組み合わせを想到することができるであろう。
図2は、特定の実施形態で使用されるコンピュータアーキテクチャ(200)を示す。本実施形態では、コンピュータデバイスが、コンピュータアーキテクチャ(200)を有する。コンピュータアーキテクチャ(200)は、プログラムコードの格納および/または実行に適しており、システムバス(220)を介して直接的または間接的に記憶素子(204)に接続される少なくとも1のプロセッサ(202)を備える。記憶素子(204)には、実際にプログラムコードを実行する際に使用されるローカルメモリとして、大容量記憶装置と、実行時に大容量記憶装置からコードを読み出す回数を低減するために少なくともプログラムコードの一部を一時的に格納するキャッシュメモリとを含むことができる。記憶素子(204)は、オペレーティングシステム(205)と、1以上のコンピュータプログラム(206)とを有する。
(これらに限らないが、キーボードやディスプレイ、ポインティングデバイス等を含む)入力装置/出力装置(212,214)を、システムに直接接続し、または入出力(I/O)コントローラ(210)を介して接続することができる。
プライベートネットワークまたはパブリックネットワークを介して、データ処理システムを他のデータ処理システム、リモートプリンタまたは記憶装置に接続可能なネットワークアダプタ(208)をシステムに組み込むこともできる。モデム、ケーブルモデムおよびイーサネットカードは、現在利用可能なネットワークアダプタ(208)の種類の一部である。
コンピュータアーキテクチャ(200)は、記憶装置(216)(例えば、磁気ディスクドライブや光ディスクドライブ、テープドライブ等の不揮発記憶装置などの任意の種類の記憶装置)を接続することができる。記憶装置(216)には、内部の記憶装置、接続された記憶装置、またはネットワークを介してアクセス可能な記憶装置を含むことができる。記憶装置(216)内のコンピュータプログラム(206)は、本技術分野で知られている方法により、記憶素子(204)にロードして、プロセッサ(202)が実行することができる。
コンピュータアーキテクチャ(200)は、構成要素を図2に示すよりも少なくすることができ、また、図示していない構成要素を追加することができ、さらに、図2に示す構成要素および追加の構成要素を組み合わせることができる。コンピュータアーキテクチャ(200)は、メインフレーム、サーバ、パーソナルコンピュータ、ワークステーション、ラップトップコンピュータ、可搬型のコンピュータ、テレフォニーデバイス、ネットワークアプライアンス、仮想化デバイス、ストレージコントローラ等の本技術分野で知られている様々なコンピュータデバイスを含み得る。
上述した本発明の実施形態の説明は、図示および説明を目的としており、本発明の全ての実施形態を網羅するものではなく、また、本発明の実施形態を本明細書に開示されている態様に限定するものではない。上記の教示を考慮することにより、多くの変更例およびバリエーションが可能である。本発明の実施形態の範囲は、この詳細な説明に限定されるものではなく、本明細書に付加されている請求項によって規定されるものである。上述した仕様、例およびデータは、本発明の実施形態の構成の製造および使用を完全に説明する。本発明の主旨や意図から外れることなく、多くの実施形態を構成することが可能であるため、本発明の実施形態は、下記請求項または従属項、これらに均等な範囲に属する。
図に示すフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータプログラム製品の実施形態のアーキテクチャ、機能および処理を示す。この点において、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実現する1以上の実行可能な命令を有するモジュール、セグメント、またはコードの一部を表す。また、代替的な実施形態では、ブロック内に記載されている機能は、図に示す順序と異なる順序で実行できることに留意すべきである。例えば、図1に示す連続する2つのブロックは、実際には、ほぼ同時に実行する場合があり、また、関連する機能に応じて、これらのブロックを逆の順序で実行する場合もある。また、ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組み合わせは、特定の機能や動作を実行する専用のハードウェアに基づくシステムや専用のハードウェアおよびコンピュータ命令の組み合わせによって実行することができる。
本明細書で使用される用語は、特定の実施形態のみを説明する目的であり、本発明を限定することを意図するものではない。本明細書で使用するように、単数表現「1(a)」、「1(an)」および「その(the)」は、文脈で明示的に除外しない限り、複数表現とすることもできる。さらに、「備える」および/または「備えている」の語は、本明細書で使用する場合、前述した機能、整数、ステップ、動作、要素および/または構成要素の存在を意味するが、1以上の他の機能、整数、ステップ、動作、要素、構成要素および/またはこれらの組み合わせの存在や追加を排除するものではないことが理解されるであろう。
下記請求項に記載されている全ての手段、または機能要素を伴うステップに対応するストラクチャーや材料、動作、または同等の手段やステップは、他の請求項で明確に要求されている要素と組み合わせて機能を実行する如何なるストラクチャー、材料または動作を含む。本発明の説明は、図示および説明を目的とするものであり、本発明を網羅するものではなく、本明細書で開示されている態様に本発明を限定するものでもない。本発明の意図および主旨から逸脱しない多くの変更例やバリエーションは、当業者に明らかであろう。本発明の実施形態は、本発明の原理および実用的な応用を最もよく説明すべく、また、検討される特定の使用に適した種々の修正を伴う様々な実施形態のために、当業者が本発明を理解できるようにすべく、選択および説明された。
200:コンピュータアーキテクチャ
202:プロセッサ
204:記憶素子
205:オペレーティングシステム
206:コンピュータプログラム
208:ネットワークアダプタ
210:I/Oコントローラ
212:入力装置
214:出力装置
216:記憶装置
220:システムバス

Claims (20)

  1. データベースシステム内のデータを展開するためにコンピュータが実行する方法であって、
    圧縮されているデータセット内のデータサブセットに関連するクエリーを受信するステップと、
    見積もられたフィルターファクタを有するコストモデルを使用して、1以上の展開ストラテジーを評価するステップと、
    1以上の展開ストラテジーの評価結果に基づいて、コストの低い展開ストラテジーを選択するステップと、
    圧縮されているデータセット内の要求されているデータサブセットを表す1以上のバイトの位置を特定するステップと、
    選択された展開ストラテジーを用いて、データサブセットに対応する圧縮されているデータの一部のみを展開し、残りのデータセットを圧縮された状態のままにするステップと
    を含む、方法。
  2. 前記データサブセットは、
    1のデータベーステーブルの1の行に含まれる複数列のサブセット、
    前記データベーステーブル内の複数列または複数バイトのサブセット、
    前記データベーステーブルの1のページ内の複数列のサブセット
    のうちの1つを含む、請求項1に記載の方法。
  3. 前記展開ストラテジーは、2以上の展開段階を含む、請求項1または2に記載の方法。
  4. 1以上の展開ストラテジーを評価するステップは、
    1の行内の列のサブセットのみを展開するためのコストを算出するステップと、
    算出したコストと前記行内の全ての列を展開するコストとを比較するステップと
    を含む、請求項1〜3のいずれか1項に記載の方法。
  5. 前記圧縮されているデータセット内の要求されているデータサブセットを示す1以上のバイトの位置を特定するステップは、
    圧縮されているデータの特定の数のバイトを示すユニットを決定するステップと、
    前記圧縮されているデータセット内の要求されているデータサブセットを示す1以上のバイトを取得するために、いずれのユニットを展開する必要があるか決定するステップと
    を含む、請求項1〜4のいずれか1項に記載の方法。
  6. 前記方法は、
    各ユニットの開始位置に対するオフセットを表す各行のマップを格納するステップをさらに含む、請求項5に記載の方法。
  7. 前記マップは、前記データベースシステムのバッファメモリに配列として格納されることを特徴とする、請求項6に記載の方法。
  8. 各可変長の列が、可変長の列の長さを示す数に応じて整列されることを特徴とする、請求項5〜7のいずれか1項に記載の方法。
  9. 前記展開は、行の先頭から開始することを特徴とする、請求項1〜8のいずれか1項に記載の方法。
  10. 前記展開は、行の最後から開始することを特徴とする、請求項1〜8のいずれか1項に記載の方法。
  11. データベースシステム内のデータを展開するコンピュータプログラムであって、前記コンピュータプログラムは、プログラムコードを有するコンピュータ読取可能な記憶媒体を備え、前記プログラムコードが、プロセッサによって実行されることにより、前記プロセッサが、
    圧縮されているデータセット内のデータサブセットに関連するクエリーを受信するステップと、
    見積もられたフィルターファクタを有するコストモデルを使用して、1以上の展開ストラテジーを評価するステップと、
    1以上の展開ストラテジーの評価結果に基づいて、コストの低い展開ストラテジーを選択するステップと、
    圧縮されているデータセット内の要求されているデータサブセットを表す1以上のバイトの位置を特定するステップと、
    選択された展開ストラテジーを用いて、データサブセットに対応する圧縮されているデータの一部のみを展開し、残りのデータセットを圧縮された状態のままにするステップと
    を実行する、コンピュータプログラム。
  12. 前記データサブセットは、
    1のデータベーステーブルの1の行に含まれる複数列のサブセット、
    前記データベーステーブル内の複数列または複数バイトのサブセット、
    前記データベーステーブルの1のページ内の複数列のサブセット
    のうちの1つを含む、請求項11に記載のコンピュータプログラム。
  13. 前記展開ストラテジーは、2以上の展開段階を含む、請求項11または12に記載のコンピュータプログラ
  14. 1以上の展開ストラテジーを評価するステップは、
    1の行内の列のサブセットのみを展開するためのコストを算出するステップと、
    算出したコストと前記行内の全ての列を展開するコストとを比較するステップと
    を含む、請求項11〜13のいずれか1項に記載のコンピュータプログラム。
  15. 前記圧縮されているデータセット内の要求されているデータサブセットを示す1以上のバイトの位置を特定するステップは、前記プロセッサが、
    圧縮されているデータの特定の数のバイトを示すユニットを決定するステップと、
    前記圧縮されているデータセット内の要求されているデータサブセットを示す1以上のバイトを取得するために、いずれのユニットを展開する必要があるか決定するステップと
    を含む、請求項11〜14のいずれか1項に記載のコンピュータプログラム。
  16. 前記プロセッサに対し、各ユニットの開始位置に対するオフセットを表す各行のマップを格納するステップを実行させるプログラムコードをさらに備える、請求項15に記載のコンピュータプログラム。
  17. 前記マップは、前記データベースシステムのバッファメモリに配列として格納されることを特徴とする、請求項16に記載のコンピュータプログラム。
  18. 各可変長の列が、可変長の列の長さを示す数に応じて整列されることを特徴とする、請求項15〜17のいずれか1項に記載のコンピュータプログラム。
  19. 前記展開は、行の先頭から開始することを特徴とする、請求項11〜18のいずれか1項に記載のコンピュータプログラム。
  20. 前記展開は、行の最後から開始することを特徴とする、請求項11〜18のいずれか1項に記載のコンピュータプログラム。
JP2014169597A 2013-09-19 2014-08-22 展開マップを用いた改良されたデータアクセスのパフォーマンス Active JP6004453B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/032,122 US9753983B2 (en) 2013-09-19 2013-09-19 Data access using decompression maps
US14/032122 2013-09-19
US14/307,838 US9753984B2 (en) 2013-09-19 2014-06-18 Data access using decompression maps
US14/307838 2014-06-18

Publications (2)

Publication Number Publication Date
JP2015060590A JP2015060590A (ja) 2015-03-30
JP6004453B2 true JP6004453B2 (ja) 2016-10-05

Family

ID=52668946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014169597A Active JP6004453B2 (ja) 2013-09-19 2014-08-22 展開マップを用いた改良されたデータアクセスのパフォーマンス

Country Status (3)

Country Link
US (4) US9753983B2 (ja)
JP (1) JP6004453B2 (ja)
CN (1) CN104462176B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10432217B2 (en) 2016-06-28 2019-10-01 International Business Machines Corporation Page filtering via compression dictionary filtering

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223399B2 (en) 2015-11-03 2019-03-05 International Business Machines Corporation Global filter factor estimation
US10877668B2 (en) 2018-12-05 2020-12-29 Intel Corporation Storage node offload of residual part of a portion of compressed and distributed data to a second storage node for decompression
US20190196907A1 (en) * 2019-03-05 2019-06-27 Intel Corporation Compression techniques for distributed data
US12118041B2 (en) * 2019-10-13 2024-10-15 Thoughtspot, Inc. Query execution on compressed in-memory data
US11971856B2 (en) * 2020-01-31 2024-04-30 Snowflake Inc. Efficient database query evaluation
US11558067B2 (en) * 2020-05-19 2023-01-17 Sap Se Data compression techniques
CN111723053A (zh) * 2020-06-24 2020-09-29 北京航天数据股份有限公司 一种数据的压缩方法及装置、解压方法及装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442350A (en) 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6606040B2 (en) 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
US6614368B1 (en) 2002-01-16 2003-09-02 Unisys Corporation Data compression method and apparatus utilizing cascaded character tables
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
US20050210023A1 (en) 2004-03-18 2005-09-22 Renato Barrera Query optimizer using implied predicates
US7526607B1 (en) 2004-09-23 2009-04-28 Juniper Networks, Inc. Network acceleration and long-distance pattern detection using improved caching and disk mapping
US20060098031A1 (en) * 2004-10-26 2006-05-11 Lai Jimmy K L System and method for effectively performing image rotation procedures in a compressed domain
CN100343851C (zh) * 2004-11-03 2007-10-17 北京神舟航天软件技术有限公司 数据库压缩及解压缩方法
CN1904882A (zh) * 2005-07-26 2007-01-31 北京九州汇宝软件有限公司 数据库近线数据的压缩方法
WO2008105406A1 (ja) 2007-02-27 2008-09-04 Nec Corporation データ収集システム、データ収集方法、およびデータ収集プログラム
US10430415B2 (en) 2008-12-23 2019-10-01 International Business Machines Corporation Performing predicate-based data compression
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
JP2010250449A (ja) 2009-04-13 2010-11-04 Canon Inc 情報処理装置、情報処理方法
US8645337B2 (en) * 2009-04-30 2014-02-04 Oracle International Corporation Storing compression units in relational tables
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
US7868789B1 (en) 2009-06-28 2011-01-11 Sap Ag Dictionary-based order-preserving string compression for main memory column stores
KR101049699B1 (ko) 2009-07-17 2011-07-15 (주)이스트소프트 데이터의 압축방법
US8832142B2 (en) 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8417727B2 (en) * 2010-06-14 2013-04-09 Infobright Inc. System and method for storing data in a relational database
US20110320446A1 (en) * 2010-06-25 2011-12-29 Microsoft Corporation Pushing Search Query Constraints Into Information Retrieval Processing
US8676834B2 (en) 2011-02-16 2014-03-18 International Business Machines Corporation Set-level comparisons in dynamically formed groups
US9824138B2 (en) 2011-03-25 2017-11-21 Orbis Technologies, Inc. Systems and methods for three-term semantic search
US9009124B2 (en) * 2011-06-17 2015-04-14 Microsoft Technology Licensing, Llc Compression aware physical database design
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
CN102917020B (zh) * 2011-09-24 2016-02-17 国网电力科学研究院 一种基于数据包的移动终端与业务系统数据同步的方法
US8838551B2 (en) 2011-10-21 2014-09-16 International Business Machines Corporation Multi-level database compression
JP5831298B2 (ja) * 2012-03-06 2015-12-09 富士通株式会社 プログラム、情報処理装置およびインデックス生成方法
US9355111B2 (en) 2014-04-30 2016-05-31 Microsoft Technology Licensing, Llc Hierarchical index based compression

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10432217B2 (en) 2016-06-28 2019-10-01 International Business Machines Corporation Page filtering via compression dictionary filtering
US10439638B2 (en) 2016-06-28 2019-10-08 International Business Machines Corporation Page filtering via compression dictionary filtering
US10903851B2 (en) 2016-06-28 2021-01-26 International Business Machines Corporation Page filtering via compression dictionary filtering
US10903850B2 (en) 2016-06-28 2021-01-26 International Business Machines Corporation Page filtering via compression dictionary filtering

Also Published As

Publication number Publication date
US10437826B2 (en) 2019-10-08
US9753983B2 (en) 2017-09-05
US20170255679A1 (en) 2017-09-07
US10437827B2 (en) 2019-10-08
US9753984B2 (en) 2017-09-05
US20150081650A1 (en) 2015-03-19
CN104462176B (zh) 2018-05-11
JP2015060590A (ja) 2015-03-30
CN104462176A (zh) 2015-03-25
US20170255678A1 (en) 2017-09-07
US20150081651A1 (en) 2015-03-19

Similar Documents

Publication Publication Date Title
JP6004453B2 (ja) 展開マップを用いた改良されたデータアクセスのパフォーマンス
US10789252B2 (en) Efficient evaluation of aggregate functions
US8977626B2 (en) Indexing and searching a data collection
US11461321B2 (en) Technology to reduce cost of concatenation for hash array
WO2018040270A1 (zh) 在Windows系统中加载Linux系统ELF文件的方法及装置
US20190095486A1 (en) Group determination based on multi-table dictionary codes
US11036517B2 (en) Database management system performing column operations using a set of SIMD processor instructions selected based on performance
JP6726690B2 (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
TW202006565A (zh) 鏈結串列搜索裝置及方法
US20150212944A1 (en) Method and Apparatus for Pushing Memory Data
US8782375B2 (en) Hash-based managing of storage identifiers
WO2021120713A1 (zh) 一种数据处理方法、解码电路及处理器
Damme et al. A benchmark framework for data compression techniques
CN114518841A (zh) 存储器中处理器和使用存储器中处理器输出指令的方法
CN113342813B (zh) 键值数据处理方法、装置、计算机设备及可读存储介质
US9697899B1 (en) Parallel deflate decoding method and apparatus
US11226740B2 (en) Selectively performing inline compression based on data entropy
WO2015172718A1 (zh) 在存储器中进行多访问的方法、装置和存储系统
JP2023540456A (ja) ガベージ・コレクションのための3色ビットマップ・アレイ
CN109802686A (zh) 加速压缩方法以及加速压缩装置
JP4941355B2 (ja) 滞留データ測定システム、方法、及び、プログラム
JP2014503916A (ja) ユニバーサルプラグアンドプレイ検索条件の変換
US11593010B2 (en) Systems and methods for block-data clustering-based deduplication
KR102017135B1 (ko) 멀티코어 캐시를 이용한 해싱 처리 장치 및 그 방법
US11593311B2 (en) Compression system with longest match processing for generating compressed data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160128

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160426

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160831

R150 Certificate of patent or registration of utility model

Ref document number: 6004453

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150