JP6362316B2 - バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品 - Google Patents

バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品 Download PDF

Info

Publication number
JP6362316B2
JP6362316B2 JP2013215799A JP2013215799A JP6362316B2 JP 6362316 B2 JP6362316 B2 JP 6362316B2 JP 2013215799 A JP2013215799 A JP 2013215799A JP 2013215799 A JP2013215799 A JP 2013215799A JP 6362316 B2 JP6362316 B2 JP 6362316B2
Authority
JP
Japan
Prior art keywords
memory
data
reference value
disk
memory storage
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
JP2013215799A
Other languages
English (en)
Other versions
JP2014099163A (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 JP2014099163A publication Critical patent/JP2014099163A/ja
Application granted granted Critical
Publication of JP6362316B2 publication Critical patent/JP6362316B2/ja
Active 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/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • 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/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computational Linguistics (AREA)

Description

本開示は、一般にデータベースの検索およびストレージの分野に関し、さらに具体的には、バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いたハイブリッド・テーブル実装に関する。
大規模データベースの多くは主としてディスクに格納される。これらディスク・ベースのデータベースは、多くの場合、パフォーマンスを向上するために、新しくアクセスされるデータを読み出すためのバッファを用いる。ディスク・ベースのデータベースは、多くの場合、システムのスペースを最適化しパフォーマンスを向上するために、バッファ・スペースを共用する。しかしながら、このバッファのプーリングは、データを送信または受信する際にパフォーマンスのボトルネックを発生させ、多くの場合、これらはディスク入力/出力(I/O:input−output)への要求事項に起因する。
かかるボトルネックを低減し、パフォーマンス問題を回避するため、時としてインメモリ・データベースが使われる。インメモリ・データベースでは、データの主たる記憶場所は、物理または常在メモリの中にある。ほとんどのインメモリ・データベースは、メモリに最適化されたデータ構造体とアクセス方法とによって特徴付けられる。指定されたデータ全体を、ディスク・ベースに頼ることなく、インメモリでソートし、格納し、読み出すことによってパフォーマンスが大きく向上する。インメモリ・データベースを使用することによって、コード・パス中にもたらされる上記のディスクI/Oボトルネックに対処せずに、アクセス要求を実行することが可能になる。
しかしながら、インメモリ・データベース・スキームの使用は、インメモリ・データベースのデータ・ユニット当たりのストレージ・コストがディスク・メモリ・スキームよりも高くなるなど、多くのトレードオフを有する。これは、コストの低いハード・ディスクで、より多くのメモリの代替が可能なことによる。さらに、インメモリ・データベース・スキームに用いられるランダム・アクセス・メモリ(RAM:random access memory)チップは、小型ハード・ドライブの記録密度に達し得ない。インメモリ・データベースに関する別の問題は、一部のアプリケーションにおいて、スペース上の制約から、大規模データベースに対するマイニングは、インメモリ・ストレージの中では行えないことである。一つの対処策は、「d(ディスク)」および「m(メモリ)」双方の型のデータベースを用いる、データベースのハイブリッド検索インデックスを使用することである。
諸実施形態は、データ・マネジメントのための方法、システム、およびコンピュータ・プログラム製品を含む。一つの実施形態において、データベースに対する検索インデックスが生成され、該検索インデックスは、データを第一メモリまたは第二メモリ中のストレージ場所にそれぞれ関連付ける第一または第二型の参照値を有する。データ読み出し要求に応じて、この参照値を使って第一または第二メモリのデータへのアクセスが行われる。第一メモリと第二メモリとの間で、データの移行が行われた場合、検索インデックスの参照値は再計算され変更される。
本開示の技法を介してさらなる特徴および利点が実現される。本明細書で、本開示の他の実施形態および態様が詳細に説明される。本開示の利点および特徴についてより良く理解するために、説明および図面を参照されたい。
発明と見なされる主題は、具体的に指摘され、本明細書に添付の特許請求の範囲で明確に請求されている。本開示の前述および他の特徴および利点は、添付の図面と併せ以下の詳細な説明を理解することによって明らかになろう。
ある実施形態によるフローチャート図である。 ある実施形態による、データへのメモリ・アクセスおよびバッファを表すブロック図を示す。
データベースのハイブリッド検索インデキシングは、フレキシビリティを具えている。ハイブリッド検索インデックスのデータベースは、インメモリおよびディスク・ベース・データベースの両方を使用する。この2つの型のデータ記憶場所の区分はテーブル・レベルで行われる。テーブルは、そのテーブルの全内容がメモリ中に格納されている場合はインメモリ・テーブル(mテーブル)として設定することができ、あるいは、データが主としてディスクに格納されている場合はテーブルをディスク・ベース(dテーブル)とすることもできる。インメモリ・ストレージおよびディスク・ストレージの両方を使用することによって、パフォーマンスとコストとの間のバランスを達成することができる。
ほとんどのデータベースにおいて、データ読み出しのためにテーブル群がセットアップされ使用される。一つのテーブルは、水平方向の行および垂直方向の列に編成されたデータ・エレメントまたは値のセットであって、行と列との交差個所に複数のセルを有する。慣例的に、テーブルは指定された数の列を有するが、行の数は任意である。各行は、一意的キー・インデックスとして識別された特定の列サブセット中に現れる値によって識別される。データ読み出しオペレーションの速度を向上させるために、データベース・インデックスが使われる。これらインデックスは、データベース・テーブルの一つ以上の列を使って生成でき、迅速なランダム・ルックアップおよび順序付けられたレコードへの効率的アクセスの両方に対するベースを提供する。
ハイブリッド検索インデキシングを用いる際に、単一の設定に2つの異なるデータベースの型を使うこの二分法は、これらのデータベースが相異なる要件を必要とするので、これも難題をもたらす。考えられる対処策の一つに、新規インデックスを(別個のm部分およびd部分のインデックスの上に)交互に重ねるスキームを採ることがある。しかし、この対処策も、データにアクセスする際に、2つの別個のテーブルのm部分とd部分との間での連続的な切り替えを強いるので非効率的となり得る。これは、リソース消費的にも時間消費的にもなり得る。さらに、かかるインデックスは、ほとんどのメモリで利用可能なストレージに対しては過大なものとなり得る、フットプリント要求を有する可能性がある。
図1は、リソースおよび検索時間を最適化するハイブリッド・データベースが用いられている一つの実施形態のフローチャート実装を示す。図1に示されるように、例えば一つの実施形態では、ディスク・ストレージ・メモリおよびインメモリなど、2つの型のメモリが使われているが、参照値とバッファ・プールと使用の組み合わせによって、ディスク・ストレージまたはインメモリ・ストレージ中のデータのストレージの識別が可能なので、恒常的な切り替えは必要がない。図2を参照することによって、バッファ・プールへの、そしてディスクもしくはインメモリ・ストレージまたはその両方へのアクセスをより良く理解することができよう。
図2は、図1のフローチャートに従って使用可能な、一つの実施形態によるブロック図を示す。図2において、ストレージ・データベースへのメモリ・アクセスは、インメモリまたは常在メモリ・ストレージ240およびディスク・メモリ・ストレージ230と処理通信をしているバッファ220の使用を介して最適化される。図2に示された実施形態において、インメモリまたは常在メモリは検索エンジン210を介してバッファ220と処理通信しているが、別の実施形態では、直接の処理アクセスを設けることもできる。なお、常在ストレージ、物理ストレージ、およびインメモリ・ストレージは、互換可能に用いられ、同じ型のメモリ・ストレージを意味する。一つの実施形態において、検索エンジン210を介して両方のメモリ・ストレージへのメモリ・アクセスを実現することができ、該エンジンは一つ以上のプロセッサを用いて実装することが可能である。検索エンジン210を用いるデジタル・デバイスは、当業者ならよく理解できるように、例えば、以下に限らないが、携帯デバイス、パソコン、またはサーバなど、さまざまなデジタル・デバイスを表すことができ、さらに、ディスプレイ、プリンタ、または他のコンポーネントを含み得、またはそれらと処理通信状態であり得る。他の実施形態において、当業者ならよく理解できるように、バッファ220およびディスク・メモリ・ストレージ230並びにインメモリ・ストレージ240は、単一のデバイスの一部とすることができ、別個の検索エンジン210の有無にかかわらず、直接プロセッサまたはコンピュータによるものなど、これらへの直接のアクセスを遂行することができる。
慣例的に、バッファは、データが一つの場所から別の場所に移動される際に、一時的にそのデータを保持するために使われる、物理メモリ・ストレージの或る領域である。このように、バッファは、ディスク・ストレージからのアクセス・データについての情報を保持できるが、これでは、ディスク・ストレージ・データの限られた量だけがバッファリング可能である。図2では、バッファ220はバッファ・プールであり、一つの実施形態において、これにはバッファ・プール・マネージャを含めることができる。その結果、当業者ならよく理解しているように、バッファ・プールを、メモリ常駐データに対する常在ストレージとして使いながら、通常の方法でディスク常駐型データをバッファリングすることによって、データベースへの最適化されたアクセスが実現される。
図1および2に関連させて説明した最適化アクセスは、当業者には既知の多くの型の検索インデックス構造体による使用が可能である。この一例として、一組のリンク・ノード群を使って階層ツリーをシミュレートするツリー構造体があろう。一つのノードは、値または状態を包含でき、または別個のデータ構造体を代表でき、さらにはそれ自体をツリーとすることもできる。ツリー中の各ノードは、ゼロ個以上の子ノードを有し、これらはツリー中でそのノードの下にある。子を持つノードは、その子の親ノード(または先行ノード(ancestor node)、または上位ノード(superior))と呼ばれる。ノードは親を一つだけ有する。中間ノード(internal node)(内部ノード(inner node)または分岐ノード(branch node)としても知られる)は、子ノードを有する、ツリーの任意のノードである。同様に、外側ノード(outer node)、葉ノード(leaf node)、または終端ノード(terminal node)としても知られる、外部ノード(external node)は、子ノードを持たない、ツリーの任意のノードである。同様に、バイナリまたはBツリー構造を使ったツリー構造体にも、図1および2に関連して説明した最適化アクセスを併せ用いることができる。バイナリ・ツリー(Bツリー)データ構造体は、ソートされたデータを保持し、検索、シーケンシャル・アクセス、挿入、および削除を対数時間で可能にする。Bツリーは、多くの場合、2より多い子を有し、大きなデータ・ブロックを読み取り、書き込みするシステムに向けて最適化されている。
分かり易くするため、図1のフローチャート実施形態は、葉ノードを有するツリー構造体を示しているが、前述のように、別の実施形態では他の検索構造体を使用することができる。再度図1を参照すると、データにアクセスすることが必要なとき、検索は、まずそのデータに関連付けられたデータベースを見出すことから開始される。一つの実施形態において、これは、データベース検索インデックスの中で、行および関連するキーなど、そのインデックス中の所在場所を識別することによって開始することができる。
再度図1を参照すると、一つの実施形態では、次いで、検索インデックス・テーブルがセットアップされ、データ行(ブロック110)が該テーブルのm部分中にあることが判明した場合、ポインタ(前記インデックス・ツリーの葉ノード中に格納されている)を介して当該ページへのアクセスが行われ、前記データがテーブルのd部分に見出された場合は、バッファ・プール・マネージャを呼び出し、ディスク・アドレスを解決し、ページのバッファへのロードを開始することによってアクセスが行われる。この概念を、図1のフローチャートのブロックをさらに詳細に検証しながら以下に説明する。
ブロック110から開始され、この事例の検索インデックス・テーブルは、特定のキーを有する特定の行を検索することによって、この事例におけるエントリを見出そうとし、一例として、キー=x(例えば、数字または文字のストリング)が選択される。ブロック120に示されるように、この検索は、該インデックス構造体の葉レベルまで行われる。ブロック125に示されるように、次いで、キーに対する参照内容が検定され、参照内容がページ・ポインタかまたはページのディスク・アドレスかが判定される。参照内容がページ・ポインタの場合、そのページ・ポインタを使って、インメモリ・ストレージ(図2の240)中にあるm部分ページへのアクセス130が行われる。次いで、ブロック160において、検索で使われたキーと一致するデータを包含する行が、アクセスされたm部分ページから読み出される。また一方、参照内容(x)125がページのディスク・アドレス127の場合、そのディスク・アドレスを解決140するためさらなる処理を遂行することができる。さらに、ブロック150において、ページのディスク・アドレスが検定され、参照されたページがバッファ・プールの中に存在しているかどうかが判定される。しかして、150において、「バッファ・プール・ミス」がなければ(すなわち、当該データがバッファ・プール中に存在する)、157に示されるように、バッファ・プールからページのディスク・アドレスに対応するd部分ページへのアクセスが行われる。他方、150でバッファ・プール・ミスがあった場合、このときは155に示されるように、ディスク・メモリ・ストレージ230(図2)の参照されたページへのアクセスが行われる。一つの実施形態において、このとき、バッファ・プール・マネージャが呼び出され、参照されたページを包含するデータのチャンクが、ディスク・メモリ・ストレージからバッファ・プールの中に転送される。160に示されるように、いずれの場合においても、次いで、検索に使われたキーに一致するデータを包含する行がアクセスされたd部分ページから取得される。
図2に関連して説明した最適化アクセスは、大きなメモリ・フットプリントの必要性を必然化しない。慣例的に、mテーブル・インデックスはデンス(dense(密))であり、これは、データベースが、データ・ファイル中のレコード毎にキーとポインタとのペアを有するファイルが存在するように構築されることを意味する。言い換えれば、このファイル中のあらゆるキーは、ソートされたデータ・ファイル中のレコードに対する特定のポインタに関連付けられる。重複キーを有するクラスタ化インデックスでは、デンス・インデックスはそのキーを有する第一レコードをポイントする。ほとんどの場合、インデックス中には、各行に対する一意的なキーおよび参照内容がある。これに反して、dテーブル・インデックスは、多くの場合スパース(sparse(疎))であり、データ・ファイル中のブロック毎にキーとポインタとのペアを有するファイルが設けられるように構築される。このファイル中のあらゆるキーは、ソートされたデータ・ファイル中のブロックに対する特定のポインタに関連付けられる。スパース・インデックスにおいては、キー値のある範囲が単一のデータ・ページにマップされる。これは、キー値がクラスタ化されている(近隣の値が同一のページに配置されている)ので可能である。
結果的に、スパースなデータベースを持つことには、フットプリントのサイズに関してはるかに多くの利点がある。というのは、ハイブリッド・テーブルの全ての行のデンス・インデキシングは、過大なスペースを必要とし、単一のハイブリッド・テーブルを維持するための難題となり得るからである。さらに、単一のハイブリッド・テーブルの使用において、処理のためd部分データ・ブロックをメモリ中に効率的にロードするために、一般的なページのバッファ・プール対処法をなお保持する必要がある。別の課題は、「m」部分と「d」部分との間でのデータの容易な移行を促進することであった。しかしながら、メモリ・インデックスとしてのm部分へのアクセスに効率的であり、スパース・インデックスを含むことによってスペースを節約する、単一テーブル・インデックスではあるが、m部分とd部分との間でのデータの移行がなおリソース消費的であり得るので、十分なものではない。この原因は、かかる移行には、m部分からd部分へ物理的に転送されるデータのコピーが必要とされることである。データ移行の必要性は、通常、データの経時的処理をもたらし、これは、高い頻度では使われず、より低速の媒体に移行すべきより古いデータを処理することを意味する。
図2に関連して説明した最適化アクセスにおいて、スパース・インデックスを使うことが可能で、単に、参照内容の型を変更し参照値を再計算することによって、m部分とd部分との間でデータを移行することができる。ページの内容を変更する必要はない。一つの実施形態において、この移行は明示的に行うことができ、またはこれに換えて、LRU(least recently used(最長時間未使用法))待ち行列のようなページ置き換えメカニズムに関連付けることも可能である。最近使用されていないm部分ページは、d部分の変更ページに変えることができ、これは移行を効率的に実施させる。このやり方は、m部分とd部分と間での容易なデータ移行を提供する。加えて、mテーブルの行へのアクセスの効率は維持され、テーブルの行は、インメモリ・インデックスおよびメモリ・ポインタを介してアクセスされる。この事例では、ディスクのページ・アドレスを解決するためにバッファ・プール・マネージャを呼び出す必要があるので、m部分の行へのアクセスはd部分の行へのアクセスよりも効率的であり得る。バッファ・プール・マネージャが、ディスクのページ・アドレスを変換してページ・ヒットおよびページ・ミスを生じ、それらに基づき適切に動作できるようにすることによって、d部分の大容量が維持される。これは、前述のように、特に、データがメモリ自体に収まらず、相異なる型の別個のテーブル中に分割しなければならない場合など、メモリに収めるのに大きすぎ、柔軟性がなく、検索にコストのかかるインデックス・テーブルを使用することに関連する多くの問題に対処する。
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本開示を限定することは意図されていない。本明細書で用いられる、単数形「ある(“a”、“an”)」、および「該(“the”)」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む(“comprise”)」もしくは「含んでいる(“comprising”)」またはその両方は、述べられた機能、完全体、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の機能、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはその群、またはこれらの組み合わせの存在または追加を排除するものではない。
添付の特許請求の範囲中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を遂行するための、一切の構造、材料または動作を包含することが意図されている。本開示の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本開示の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本開示の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態に関して、本開示を理解できるように選択し説明されたものである。
さらに、当業者ならよく理解しているように、本開示の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本開示の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウエア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、本明細書では全て一般的に「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本開示の態様は、具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体(群)中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって、あるいはこれらに関連させて使用するためのプログラムを包含または格納できる任意の有形媒体とすることができる。
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体中に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本開示の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うこともできる。
本開示の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本開示の態様を上記で説明してきた。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/動作群を実装するための手段を生成するようにすることができる。
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能/動作を実装する命令群を包含する製造品を生成するようにすることができる。
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、当該コンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを生成し、当該コンピュータ上または他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
図中のフローチャートおよびブロック図は、本開示のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、規定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能によって実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する、専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
210 検索エンジン
220 バッファ
230 ディスク・メモリ・ストレージ
240 インメモリ・ストレージ

Claims (17)

  1. 一つ以上のプロセッサを用いて実装される検索エンジンが、データベースに対する検索インデックスを生成するステップであって、前記検索インデックスは、データを第一メモリまたは第二メモリ中のストレージ場所にそれぞれ関連付ける第一型の参照値または第二型の参照値を有する、前記生成するステップと、
    前記検索エンジンが、データ読み出し要求に応じ、前記参照値を使って、前記第一メモリまたは前記第二メモリのデータにアクセスするステップと、
    前記検索エンジンが、前記検索インデックスの参照内容の型を変更し参照値を再計算することによって、前記第一メモリと第二メモリとの間でデータを移行するステップと、
    を含む、データ・マネジメントの方法。
  2. 前記第一メモリがインメモリ・ストレージであり、前記第二メモリがディスク・メモリ・ストレージである、請求項1に記載の方法。
  3. 前記データ読み出し要求の対象である特定のデータのアドレスが前記ディスク・メモリ・ストレージのアドレスであって、前記特定のデータがバッファ・プールにおいてアクセス可能であると判定された場合、前記第二型の前記参照値を使って、前記バッファ・プールの前記特定のデータにアクセスするステップをさらに含む、請求項2に記載の方法。
  4. 前記検索インデックスがツリー構造のインデックスである、請求項3に記載の方法。
  5. 前記ツリーが葉ノードを有する、請求項4に記載の方法。
  6. 前記第一型の前記参照値はインメモリ・ストレージへのページ・ポインタであり、前記第二型の前記参照値はページのディスク・アドレスである、請求項5に記載の方法。
  7. 与えられた前記参照値による前記ページ・ポインタまたは前記ページのディスク・アドレスを用いて、データ・アクセスが提供される、請求項6に記載の方法。
  8. インメモリ中のメモリ・データに対する前記葉ノードのインデキシング参照値は、前記バッファ・プール中のページへのポインタであり、ディスク・データに対する前記葉ノードのインデキシング参照値は、ディスク・アドレスである、請求項5に記載の方法。
  9. 前記検索インデックスが、バイナリ(Bツリー)インデックス構造体である、請求項5に記載の方法。
  10. 前記検索インデックスは複数の行および列を有し、前記行は関連付けられたキーを有する、請求項6に記載の方法。
  11. 前記キーの順序付けが、前記行の順序付けに対応する、請求項10に記載の方法。
  12. データ・マネジメントのためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、コンピュータに、データベースに対する検索インデックスを生成するステップであって、前記検索インデックスは、データを第一メモリまたは第二メモリ中のストレージ場所にそれぞれ関連付ける第一型の参照値または第二型の参照値を有する、前記生成するステップと、
    データ読み出し要求に応じ、前記参照値を使って、前記第一メモリまたは前記第二メモリのデータにアクセスするステップと、
    前記検索インデックスの参照内容の型を変更し参照値を再計算することによって、前記第一メモリと第二メモリとの間でデータを移行するステップと、
    を実行させる、コンピュータ・プログラム。
  13. 前記検索インデックスは複数の行および列を有し、前記インデックスは各行に対応する関連付けられたキーを有する、請求項12に記載のコンピュータ・プログラム。
  14. インデキシングの粒度はページであり、前記検索インデックスは、追加のオンページ・アクセスを持つことができるようにされた、請求項13に記載のコンピュータ・プログラム。
  15. 前記第一メモリがインメモリ・ストレージであり、前記第二メモリがディスク・メモリ・ストレージである、請求項14に記載のコンピュータ・プログラム。
  16. 前記検索インデックスが、スパース・インデックスであり、ディスク・ページとメモリ・ページとは、内容を除いて構造が同一である、請求項14に記載のコンピュータ・プログラム。
  17. インメモリ・ストレージと、
    前記インメモリ・ストレージと処理通信をしているディスク・メモリ・ストレージと、
    前記インメモリ・ストレージおよび前記ディスク・メモリ・ストレージと処理通信をしているバッファであって、前記バッファはバッファ・プールを取り扱うためのバッファ・プール・マネージャを含む、前記バッファと、
    データ検索インデックス構造体を管理するための少なくとも一つのプロセッサを有するデータベース検索エンジンであって、前記検索インデックスはデータを前記インメモリ・ストレージおよび前記ディスク・メモリ・ストレージに関連付ける第一型の参照値または第二型の参照値を有する、前記検索エンジンと、
    を含むシステムであって、
    前記第一型の参照値は、前記バッファ・プール中の、インメモリ・ストレージへのページ・ポインタであり、前記第二型の参照値は、前記バッファ・プールによって処理されるページのディスク・アドレスであり、
    前記検索エンジンは、前記検索インデックスの参照内容の型を変更し参照値を再計算することによって、前記インメモリ・ストレージと前記ディスク・メモリ・ストレージとの間でデータを移行する、システム。
JP2013215799A 2012-11-13 2013-10-16 バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品 Active JP6362316B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/675634 2012-11-13
US13/675,634 US10114908B2 (en) 2012-11-13 2012-11-13 Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data

Publications (2)

Publication Number Publication Date
JP2014099163A JP2014099163A (ja) 2014-05-29
JP6362316B2 true JP6362316B2 (ja) 2018-07-25

Family

ID=50682727

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013215799A Active JP6362316B2 (ja) 2012-11-13 2013-10-16 バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品

Country Status (3)

Country Link
US (1) US10114908B2 (ja)
JP (1) JP6362316B2 (ja)
CN (1) CN103810237B (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582588B2 (en) 2012-06-07 2017-02-28 Google Inc. Methods and systems for providing custom crawl-time metadata
US9189518B2 (en) * 2012-10-19 2015-11-17 International Business Machines Corporation Gathering index statistics using sampling
ES2924347T3 (es) * 2015-03-26 2022-10-06 Nagravision Sa Método y sistema para buscar al menos un dato específico en una unidad de usuario
CN109299113B (zh) * 2015-06-08 2021-03-30 南京航空航天大学 具有存储感知的混合索引的范围查询方法
KR102525295B1 (ko) * 2016-01-06 2023-04-25 삼성전자주식회사 데이터 관리 방법 및 장치
JP2018018133A (ja) * 2016-07-25 2018-02-01 富士通株式会社 情報処理装置、ストリームストレージ制御プログラム、及びインデックスデータ参照方法
CN106484790B (zh) * 2016-09-20 2021-03-26 上海万格生物科技有限公司 一种信息系统的样本库信息管理方法及装置
WO2018067471A1 (en) 2016-10-03 2018-04-12 Ocient Llc Payload store and index store in highly parallel database management system
US10747738B2 (en) 2016-12-14 2020-08-18 Ocient, Inc. Efficient database management system and method for prioritizing analytical calculations on datasets
WO2018112074A1 (en) 2016-12-14 2018-06-21 Ocient Llc System and method for utilizing a designated leader within a database management system
WO2018187229A1 (en) * 2017-04-03 2018-10-11 Ocient, Inc Database management system using hybrid indexing list and hierarchical query processing architecture
US11269842B2 (en) * 2017-05-09 2022-03-08 Accenture Global Solutions Limited Data storage layer index for efficient information retrieval
US10747765B2 (en) 2017-05-30 2020-08-18 Ocient Inc. System and method for optimizing large database management systems with multiple optimizers
ES2977411T3 (es) * 2017-08-29 2024-08-23 Repsol Sa Método implementado por ordenador para manipular un modelo numérico de un dominio en 3D
US11182125B2 (en) 2017-09-07 2021-11-23 Ocient Inc. Computing device sort function
US10776165B2 (en) * 2018-05-15 2020-09-15 Sap Se Optimized database resource handling
US11886436B2 (en) 2018-10-15 2024-01-30 Ocient Inc. Segmenting a partition of a data set based on a data storage coding scheme
US11709835B2 (en) 2018-10-15 2023-07-25 Ocient Holdings LLC Re-ordered processing of read requests
US12050580B2 (en) 2018-10-15 2024-07-30 Ocient Inc. Data segment storing in a database system
US11880368B2 (en) 2018-10-15 2024-01-23 Ocient Holdings LLC Compressing data sets for storage in a database system
US11256696B2 (en) 2018-10-15 2022-02-22 Ocient Holdings LLC Data set compression within a database system
CN109407985B (zh) * 2018-10-15 2022-02-18 郑州云海信息技术有限公司 一种数据管理的方法以及相关装置
US11249916B2 (en) 2018-10-15 2022-02-15 Ocient Holdings LLC Single producer single consumer buffering in database systems
US11360953B2 (en) * 2019-07-26 2022-06-14 Hitachi Vantara Llc Techniques for database entries de-duplication
JP7237782B2 (ja) 2019-09-13 2023-03-13 キオクシア株式会社 ストレージシステム及びその制御方法
US11093500B2 (en) 2019-10-28 2021-08-17 Ocient Holdings LLC Enforcement of minimum query cost rules required for access to a database system
US11106679B2 (en) 2019-10-30 2021-08-31 Ocient Holdings LLC Enforcement of sets of query rules for access to data supplied by a plurality of data providers
US11609911B2 (en) 2019-12-19 2023-03-21 Ocient Holdings LLC Selecting a normalized form for conversion of a query expression
US11853364B2 (en) 2020-01-31 2023-12-26 Ocient Holdings LLC Level-based queries in a database system and methods for use therewith
US11061910B1 (en) 2020-01-31 2021-07-13 Ocient Holdings LLC Servicing concurrent queries via virtual segment recovery
US11238041B2 (en) 2020-03-25 2022-02-01 Ocient Holdings LLC Facilitating query executions via dynamic data block routing
US11599463B2 (en) 2020-03-25 2023-03-07 Ocient Holdings LLC Servicing queries during data ingress
US11580102B2 (en) 2020-04-02 2023-02-14 Ocient Holdings LLC Implementing linear algebra functions via decentralized execution of query operator flows
US11294916B2 (en) 2020-05-20 2022-04-05 Ocient Holdings LLC Facilitating query executions via multiple modes of resultant correctness
CN111597403B (zh) * 2020-05-21 2023-06-27 抖音视界有限公司 一种构建图索引的方法、装置、电子设备及存储介质
CN111708958B (zh) * 2020-06-12 2024-04-12 中国工商银行股份有限公司 一种多键值缓存存储方法、装置及系统
CN111831655B (zh) * 2020-06-24 2024-04-09 北京字节跳动网络技术有限公司 一种数据处理的方法、装置、介质和电子设备
US11775529B2 (en) 2020-07-06 2023-10-03 Ocient Holdings LLC Recursive functionality in relational database systems
US11321288B2 (en) 2020-08-05 2022-05-03 Ocient Holdings LLC Record deduplication in database systems
US11880716B2 (en) 2020-08-05 2024-01-23 Ocient Holdings LLC Parallelized segment generation via key-based subdivision in database systems
US11755589B2 (en) 2020-08-05 2023-09-12 Ocient Holdings LLC Delaying segment generation in database systems
US11822532B2 (en) 2020-10-14 2023-11-21 Ocient Holdings LLC Per-segment secondary indexing in database systems
US11507578B2 (en) 2020-10-19 2022-11-22 Ocient Holdings LLC Delaying exceptions in query execution
US11675757B2 (en) 2020-10-29 2023-06-13 Ocient Holdings LLC Maintaining row durability data in database systems
US11297123B1 (en) 2020-12-11 2022-04-05 Ocient Holdings LLC Fault-tolerant data stream processing
US11314743B1 (en) 2020-12-29 2022-04-26 Ocient Holdings LLC Storing records via multiple field-based storage mechanisms
CN113515508B (zh) * 2021-04-01 2022-08-02 广州云硕科技发展有限公司 一种用于智能机器人的信息采集方法及系统
US11645273B2 (en) 2021-05-28 2023-05-09 Ocient Holdings LLC Query execution utilizing probabilistic indexing
US11874765B2 (en) 2021-05-28 2024-01-16 International Business Machines Corporation Buffer pool management
US11803544B2 (en) 2021-10-06 2023-10-31 Ocient Holdings LLC Missing data-based indexing in database systems
US11983172B2 (en) 2021-12-07 2024-05-14 Ocient Holdings LLC Generation of a predictive model for selection of batch sizes in performing data format conversion
US12072887B1 (en) 2023-05-01 2024-08-27 Ocient Holdings LLC Optimizing an operator flow for performing filtering based on new columns values via a database system
CN117235078B (zh) * 2023-11-15 2024-01-30 湖南速子文化科技有限公司 一种高速处理海量数据的方法、系统、装置及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2708657B2 (ja) 1992-02-18 1998-02-04 富士通株式会社 スプリット制御方法
US6708178B1 (en) * 2001-06-04 2004-03-16 Oracle International Corporation Supporting B+tree indexes on primary B+tree structures with large primary keys
US7113953B2 (en) 2003-06-30 2006-09-26 International Business Machines Corporation System and method for efficiently writing data from an in-memory database to a disk database
JP4739786B2 (ja) 2005-03-28 2011-08-03 株式会社日立製作所 データの再配置方法
US7870122B2 (en) 2007-04-23 2011-01-11 Microsoft Corporation Self-tuning index for flash-based databases
US8151084B2 (en) 2008-01-23 2012-04-03 Oracle America, Inc. Using address and non-address information for improved index generation for cache memories
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
US20110113208A1 (en) 2008-05-01 2011-05-12 Norman Paul Jouppi Storing checkpoint data in non-volatile memory
US8572085B2 (en) * 2008-05-19 2013-10-29 Technion Research & Development Foundation Limited Apparatus and method for incremental physical data clustering
US8397051B2 (en) 2009-02-23 2013-03-12 Autonomy, Inc. Hybrid hash tables
US8180763B2 (en) * 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
JP5256173B2 (ja) 2009-11-18 2013-08-07 株式会社日立製作所 データベース管理方法、データベース管理システム及びデータベース管理プログラム
US9235531B2 (en) * 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8433684B2 (en) 2010-03-30 2013-04-30 Sybase, Inc. Managing data backup of an in-memory database in a database management system
US9251214B2 (en) 2010-04-08 2016-02-02 Microsoft Technology Licensing, Llc In-memory database system
US10430298B2 (en) 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9495398B2 (en) 2011-02-18 2016-11-15 International Business Machines Corporation Index for hybrid database

Also Published As

Publication number Publication date
US10114908B2 (en) 2018-10-30
CN103810237A (zh) 2014-05-21
CN103810237B (zh) 2017-03-01
JP2014099163A (ja) 2014-05-29
US20140136510A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
JP6362316B2 (ja) バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品
US9977802B2 (en) Large string access and storage
KR101938953B1 (ko) 빅 데이터 질의 엔진을 위한 플래시 최적화된 열 데이터 배치 및 데이터 액세스 처리 알고리즘
US9805079B2 (en) Executing constant time relational queries against structured and semi-structured data
US10831736B2 (en) Fast multi-tier indexing supporting dynamic update
US8868926B2 (en) Cryptographic hash database
WO2018064962A1 (zh) 数据存储方法、电子设备和计算机非易失性存储介质
US9311252B2 (en) Hierarchical storage for LSM-based NoSQL stores
TWI603211B (zh) Construction of inverted index system based on Lucene, data processing method and device
US20180239788A1 (en) Paged column dictionary
US9292554B2 (en) Thin database indexing
US20120215752A1 (en) Index for hybrid database
US10521117B2 (en) Unified table delta dictionary memory size and load time optimization
JP6670097B2 (ja) 関係型データベース表の列横断的検索
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
JP6006740B2 (ja) インデックス管理装置
US9292553B2 (en) Queries for thin database indexing
EP3696688B1 (en) Locking based on categorical memory allocation
US20210286793A1 (en) Indexing stored data objects using probabilistic filters
Omar et al. A scalable array storage for efficient maintenance of future data
Pagh Basic external memory data structures
Byun et al. A column-aware index management using flash memory for read-intensive databases
US20170337003A1 (en) System and Method for Concurrent Indexing and Searching of Data in Working Memory
US11010101B1 (en) Object storage subsystems
TWI475419B (zh) 用於在儲存系統上存取檔案的方法和系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180626

R150 Certificate of patent or registration of utility model

Ref document number: 6362316

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150