JP7410181B2 - ハイブリッド・インデックス作成方法、システム、プログラム - Google Patents

ハイブリッド・インデックス作成方法、システム、プログラム Download PDF

Info

Publication number
JP7410181B2
JP7410181B2 JP2021569234A JP2021569234A JP7410181B2 JP 7410181 B2 JP7410181 B2 JP 7410181B2 JP 2021569234 A JP2021569234 A JP 2021569234A JP 2021569234 A JP2021569234 A JP 2021569234A JP 7410181 B2 JP7410181 B2 JP 7410181B2
Authority
JP
Japan
Prior art keywords
index
run
index run
data
level
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
JP2021569234A
Other languages
English (en)
Other versions
JPWO2020234719A5 (ja
JP2022534215A (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 JP2022534215A publication Critical patent/JP2022534215A/ja
Publication of JPWO2020234719A5 publication Critical patent/JPWO2020234719A5/ja
Application granted granted Critical
Publication of JP7410181B2 publication Critical patent/JP7410181B2/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • 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/221Column-oriented storage; 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence

Description

本発明は、一般に、コンピュータ技術に関連しており、より詳細には、マルチマスタ・ハイブリッド・トランザクション/分析処理システムにおける大規模データセットの発達のためのインデックス作成に関連している。
リアルタイム分析(例えば、リスク分析、オンライン推奨、および不正検出など)の需要は、新しいデータに対して高速な同時トランザクション(例えば、オンライン・トランザクション処理(OLTP:Online Transaction Processing ))および大規模な分析照会(例えば、オンライン分析処理(OLAP:Online Analytical Processing))の両方を処理するためのデータ管理システムを要求する。OLTPアプリケーションは、高速にデータを取り込むことを容易にし、データをディスクまたは共有ストレージに持続させ、OLAPアプリケーションは、新たに取り込まれたデータに対する、洞察を即座に導き出すための分析照会の同時の実行を容易にする。リアルタイム分析の必要性は、ハイブリッド・トランザクションおよび分析処理(HTAP:Hybrid Transactional and Analytical Processing)システムの出現を促した。HTAPシステムは、単一のシステムにおいて、OLTPおよびOLAPの両方の照会をサポートし、したがって、新たに取り込まれたデータに対するリアルタイム分析を可能にする。HTAPシステムでは、高速トランザクション処理およびリアルタイム分析での効率的な点検索および範囲照会をサポートするために、きめの細かいインデックス作成が必須である。
本発明の1つまたは複数の実施形態によれば、コンピュータ実装方法が、第1のゾーンがトランザクション処理用に編成されたデータを有し、第2のゾーンが分析処理用に編成されたデータを有する、複数のゾーンのデータ・ストレージ・システムにハイブリッド・インデックスを作成することを含む。ハイブリッド・インデックスにおける各インデックス・エントリは、等価列をさらに含むインデックス・キーを少なくとも含む。インデックス・エントリは、インデックス・エントリに対応するデータが挿入された時間のタイムスタンプを示す開始タイムスタンプ列をさらに含む。インデックス・エントリは、階層型ストレージ内のインデックス・エントリの位置を示すタプル・シーケンス番号列をさらに含む。本方法は、ハイブリッド・インデックスに含められるインデックス・ランを構築することをさらに含む。インデックス・ランは、複数のインデックス・エントリを含む。インデックス・ランを構築することは、第1のゾーンからデータ・ブロックをスキャンすることによって、インデックス・ランに作成する列を決定することを含み、これらのデータ・ブロックはインデックス・ランに関連付けられる。インデックス・ランを構築することは、ハイブリッド・インデックスに含められるインデックス・エントリのタプル・シーケンス番号の値を計算することをさらに含む。タプル・シーケンス番号の値は、タプル・シーケンス番号列に格納される。インデックス・ランを構築することは、インデックス・ランに含められる列を使用して、既定の順序に従ってインデックス・エントリを並べ替えることをさらに含む。
1つまたは複数の例では、インデックス・ランを構築することは、インデックス・ランのヘッダーを作成することと、このヘッダーを指し示すようにインデックス・ラン・ポインタの値を設定することとをさらに含む。ヘッダーは、インデックス・ラン・ポインタの現在の値に設定されたポインタを含む。1つまたは複数の例では、インデックス・ラン内に格納されたデータ要素の概要が、ヘッダー内に格納される。さらに、1つまたは複数の例では、インデックス・ランを構築することは、インデックス・ランのオフセット配列を計算することを含む。オフセット配列は、ヘッダーに格納される。オフセット配列は、ハッシュ値の最上位nビットを、インデックス・ラン内のインデックス・エントリのオフセットにマッピングする。
1つまたは複数の例では、インデックス・エントリは、ソート列をインデックス・キーにさらに含む。
1つまたは複数の例では、各インデックス・ランにレベル番号が割り当てられ、レベル番号は、インデックス・ランを構築するために使用されるデータのソースを示す。1つまたは複数の例では、レベル番号は、インデックス・ランに関連付けられたデータが格納されるゾーンをさらに示し、このゾーンは、複数のゾーンのデータ・ストレージ・システム内の複数のゾーンのうちの1つである。1つまたは複数の例では、各レベルからの1つまたは複数のインデックス・ランを維持するために、分離したスレッドが割り当てられる。
さらに、本発明の1つまたは複数の実施形態によれば、コンピュータ実装方法は、第1のインデックス・ランおよび第2のインデックス・ランという2つのインデックス・ランを、階層型データ・ストレージを使用してデータが格納されるデータベース内でマージすることの要求の受信に応答して、第1のインデックス・ランからの列および第2のインデックス・ランからの列を含むための第3のインデックス・ランを作成することを含む。本方法は、マージ・ソートを使用して、第1のインデックス・ランからの列および第2のインデックス・ランからの列をグローバルに並べ替えることをさらに含む。本方法は、第3のインデックス・ランが非永続的レベルに属するということの決定に基づいて、第3のインデックス・ランをキャッシュ・ストレージのみに格納することをさらに含む。本方法は、第3のインデックス・ランが永続的レベルに属し、第3のインデックス・ランのレベル番号がパージ・レベルを下回るということの決定に基づいて、第3のインデックス・ランをキャッシュ・ストレージおよび共有ストレージに格納することをさらに含む。本方法は、第3のインデックス・ランが永続的レベルに属し、第3のインデックス・ランのレベル番号がパージ・レベル以上であるということの決定に基づいて、第3のインデックス・ランを共有ストレージのみに格納することをさらに含む。
1つまたは複数の例では、本方法は、データベース内のインデックス・ランのリストを更新することをさらに含む。リストを更新することは、第1のインデックス・ランのアドレスを指し示す第4のインデックス・ランのポインタを変更することであって、このポインタが第3のインデックス・ランのアドレスに変更される、変更することと、第1のインデックス・ランおよび第2のインデックス・ランを削除することとを含む。さらに、1つまたは複数の例では、第1のインデックス・ランおよび第2のインデックス・ランは、第1のインデックス・ランおよび第2のインデックス・ランが、永続的レベルに属するインデックス・ランにマージされた後に、削除される。
前述した特徴は、実装の種類の中でも特に、少なくともシステム、コンピュータ・プログラム製品、および機械によっても提供される。
その他の技術的特徴および利点が、本発明の技術によって実現される。本発明の実施形態および態様は、本明細書において詳細に説明され、請求される対象の一部と見なされる。さらに良く理解するために、詳細な説明および図面を参照すること。
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
本発明の一実施形態に従ってクラウド・コンピューティング環境を示す図である。 本発明の一実施形態に従って抽象モデル・レイヤを示す図である。 HTAPに基づくシステムにおけるデータ・ライフ・サイクルを示す図である。 本発明の1つまたは複数の実施形態に従って、ハイブリッド・インデックスの代表的図を示す図である。 本発明の1つまたは複数の実施形態に従って、一例示的なインデックス・ランを示す図である。 本発明の1つまたは複数の実施形態に従って、インデックスの維持のための一例示的なランの割当てを示す図である。 本発明の1つまたは複数の実施形態に従って、インデックス・ランを構築するための一例示的な方法のフローチャートを示す図である。 本発明の1つまたは複数の実施形態に従って、インデックス・ランをパージするための一例示的な方法のフローチャートを示す図である。 一例示的なシナリオにおいて、本発明の1つまたは複数の実施形態に従って、パージ動作の視覚的説明を示す図である。 本発明の1つまたは複数の実施形態に従って、インデックス・マージ動作のための一例示的な方法のフローチャートを示す図である。 一例示的なシナリオにおいて、本発明の1つまたは複数の実施形態に従って、インデックス・マージ動作の視覚的説明を示す図である。 一例示的なシナリオにおいて、本発明の1つまたは複数の実施形態に従って、インデックス・マージ動作の視覚的説明を示す図である。 本発明の1つまたは複数の実施形態に従って、インデックス発達動作を実行する一例示的な方法のフローチャートを示す図である。 本発明の1つまたは複数の実施形態に従って、インデックの発達の一例示的なシナリオを示す図である。 本発明の1つまたは複数の実施形態に従って、インデックス維持動作のための疑似コードを提供する図である。 本発明の1つまたは複数の実施形態に従って、ラン・リストを回復する疑似コードを示す図である。 本発明の1つまたは複数の実施形態に従って、単一のインデックス・ランに対して範囲スキャン照会を実行するための一例示的な方法のフローチャートを示す図である。
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
添付の図および開示された実施形態に関する以下の詳細な説明では、図に示されたさまざまな要素が、2桁または3桁の参照番号付きで提供されている。わずかな例外を除いて、各参照番号の左端の数字は、その要素が最初に示された図に対応している。
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案される。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合のいずれかを指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれる。
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、もしくは「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、その他の要素を含むことができる。
さらに、「例示的」という用語は、本明細書では「一例、一事例、または一実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含んでいると理解されてよい。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含んでいると理解されてよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。
簡潔さの目的で、本発明の態様の作成および使用に関連する従来技術は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
前述したように、HTAPシステムは、単一のシステムにおいて、OLTPおよびOLAPの両方の照会をサポートし、したがって、新たに取り込まれたデータに対するリアルタイム分析を可能にする。HTAPシステムでは、高速トランザクション処理およびリアルタイム分析での効率的な点検索および範囲照会をサポートするために、きめの細かいインデックス作成が必須である。しかし、HTAPシステムにおいて大量のデータのインデックスを作成することは、共有ストレージおよびデータの発達に直面する課題に少なくとも起因して、非常に困難である。
第一に、大規模なHTAPの場合、少なくとも、動作可能なワークロードに対する分析照会の干渉を防ぐことに関する制限のため、メモリのみの解決策は不十分である。その結果、ほとんどのHTAPシステムは、分散ファイル・システムを含む、高可用性フォールト・トレラント共有ストレージにデータを持続させる。しかし、これらの共有ストレージの選択肢のほとんどは、ランダム・アクセスおよびインプレース更新に適していない。例えば、HDFSは、追加専用の動作のみをサポートして、ブロックレベルの転送を最適化し、オブジェクト・ストレージは、オブジェクト内のランダム・アクセスを許可せず、オブジェクトの更新を全く許可しない。共有ストレージに固有の特性に対応するために、インデックス操作(例えば、挿入、更新、および削除)は、インプレース更新を伴わない連続的I/Oを使用する必要がある。
さらに、インデックス検索のためにネットワークを介してリモートの共有ストレージにアクセスすることは、例えばHTTPを経由してREST APIを介してオブジェクト・ストレージにアクセスするため、コストがかかる。その結果、HTAPでのインデックス作成方法は、分散クラスタ環境内のストレージ階層を、キャッシュに完全に利用しなければならない。特に、既存の解決策は、最新のハードウェアにおいて、大きいメモリおよび半導体ドライブ(SSD:solid state drives)を利用することができる。しかし、HTAPシステムにおける大規模なデータに起因して、あまり頻繁にアクセスされないエントリを共有ストレージに残したまま、インデックスの最も頻繁にアクセスされる部分のみがローカルにキャッシュされる。インデックス検索を容易にするために、効果的なキャッシュ・メカニズムを開発する必要がある。
さらに、データの発達に関しては、HTAPシステムがトランザクション・ワークロードと分析ワークロードの両方を効率的にサポートする必要があるため、データは異なる編成で格納されることが多く、通常、ある編成は、より最近のデータに対するトランザクションに適しており、ある編成は、より古いデータに対する分析に適している。ここで「編成」とは、格納されたデータのセクションのことを指し、このセクションは時間に基づいて決定される。各セクションは、異なるデータ構造を使用して格納されてよい。そのような「編成」は、データが、古くなるにつれて、処理の結果に基づいて処理されて格納されるようになるため、使用される。例えば、最後の秒(または、任意のその他の期間)からのトランザクション・データは、分析照会に関してまだ完全に分析されていないことがあるが、トランザクション・データは、分析されて格納されるときに、そのような分析照会を実行するために編成される。本文書は、これらの時間的に分離されたデータを、データの異なる「ゾーン」と呼ぶ。システム内でデータが古くなるにつれて、データは、トランザクションに適したゾーンから分析に適したゾーンに発達する。あるゾーンから別のゾーンへのデータの発達は、データの異なるゾーンに関連付けられたスキーマに従ってデータを再編成することを含むことができる。1つまたは複数の例では、データの異なるゾーンは、RAM、およびSSDなどの、異なる種類のストレージ・デバイスに格納される。
そのようなゾーンは、種々の方法で実装される。例えば、本発明の1つまたは複数の実施形態では、疎結合されたHTAPの解決策は、動作可能なワークロードのための非リレーショナル・ストアを採用し、データを非リレーショナル・ストアから共有ストレージ上の列状形式のファイルに定期的にコピーし、分散データベース・エンジンがそれらのデータを効率的に照会できるようにする。1つまたは複数の例では、データは、読取りに対して最適化されたメイン・ストアおよび書込みに対して最適化されたデルタ・ストアに編成される。書込みは、行優先のデルタ・ストアに最初にバッファされ、分析照会を容易にするために列状のメイン・ストアにさらに変換される。
HTAPを使用する1つまたは複数の例示的なシステムでは、トランザクションは、最初に書込みをトランザクション・ログに追加し、その後、このトランザクション・ログが列状のデータ・ブロックにグルーミングされる。グルーミングされたデータは、照会に最適なデータのバージョンおよびデータの分割を作成することによって、分析に適した編成に、さらに定期的に後でグルーミングされる。これらのHTAPシステムにおける異なるゾーンにわたるデータの発達は、絶えず進行し、インデックスを構築して維持することに、大きな課題をもたらす。
複数のゾーンのHTAPシステムでの既存のインデックス作成の解決策は、トランザクションに適したゾーンのみおよび疎結合されたHTAPの解決策でのインデックスをサポートするか、または異なるゾーンでの別々のインデックスをサポートする。
したがって、そのような技術的課題に対処するために、本発明の1つまたは複数の実施形態は、複数のバージョンおよび複数のゾーンのログ構造化マージに似た(LSM(log-structured-merged)に似た)インデックスを提供する。そのようなインデックス作成は、リアルタイム分析などのために(特に、真のHTAPのシナリオでのトランザクションの一部である分析照会のために)、履歴データを効率的に照会するのを容易にする。その結果、履歴データは、そのようなインデックスの対象になる必要がある。さらに、異なるゾーンに別々のインデックスを含むことは、データの分割された見方を公開し、複数のゾーンにわたるインデックス照会結果を結合するための余分な作業を必要とする。特に、HTAPデータの絶えず発達する性質に伴って、最終結果において重複するデータまたは欠落しているデータがないことが保証される必要がある。本明細書において本発明の1つまたは複数の実施形態によって説明されるインデックス作成は、HTAPシステム内の異なるゾーンにわたって、一貫性のある統一されたインデックスを提供する。
本明細書における本発明の1つまたは複数の実施形態は、大規模なHTAPシステムとの関連において説明され、このHTAPシステムは、複雑な分析および列状データ処理を活用して、高速なトランザクションおよび分析を同時に可能にする。しかし、本発明の1つまたは複数の実施形態がそのような一実装に限定されないということ、および本明細書に記載された特徴が、異なる種類のHTAPシステムおよびデータ処理を使用する他の状況においても適用可能であるということが、理解される。
以下では、背景技術が簡単に説明され、その後、本発明の1つまたは複数の実施形態によって使用されるハイブリッド・インデックス作成の特定の特徴が説明される。本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびパーソナル・デジタル・アシスタントなど)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。種々の物理的および仮想的リソースが、要求に従って動的に割当ておよび再割当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御している。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、ここでは、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御しており、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御している。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。このクラウド・インフラストラクチャは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
ここで図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、PDA(personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を備える。ノード10は、互いに通信し得る。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図1に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能的抽象レイヤのセットが示されている。図2に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うと共に、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびソース・コード・バージョン管理96が挙げられる。これらが単なる例であり、他の実施形態では、各レイヤが異なるサービスを含むことができるということが理解される。
1つまたは複数の例では、HTAPシステムは、複数の疎結合されたプロセスを含むマルチマスタHTAPシステムとして実装されてよい。さらに、1つまたは複数の例では、新しいデータに対する弱い形態のスナップショット分離および同時分析照会(concurrent analytical queries)と共に、例えば、その効果へのアプリケーション・プログラミング・インターフェイスを使用して、高速トランザクションがサポートされる。
図3は、HTAPに基づくシステムにおけるデータ・ライフ・サイクルを示している。図に示されており、さらに説明されるように、データは、HTAPシステムであるシステム100内の複数のゾーンにわたって発達する。システム100は、複数のプロセッサを含むことができる処理ユニット190を含んでいる。1つまたは複数の例では、複数のプロセッサは、分散コンピューティング・システムの異なるコンピュータ・サーバの一部である。コンピュータ・サーバは、「ノード」とも呼ばれる。システム100は、さまざまな種類の非一過性メモリ・デバイスも含んでいる。処理ユニット190によるメモリの使用は、メモリ・デバイスの種類に従って変化する。
システム100内のテーブルは、ユーザによって提供されたシャーディング・キーを(主キーのサブセットとして)使用して「シャーディング」される。データベース・コンピューティングでは、「シャーディング」は、複数のデータベースにわたってデータをセグメント化することによって、データベースのスケーリングを容易にする技術である。テーブル・シャードが複数のノードに複製され、ここでは、1つの複製がシャード・リーダー(shard-leader)として機能するが、残りの複製はスレーブである。挿入されたレコードが、シャーディング・キーによって異なるシャードにルーティングされる。シャードのいずれかの複製が、データを取り込むことができる。
データの取込みの一部として、トランザクションは、最初に、書込みをメモリ内のトランザクション・ログ・バッファ101に追加する。システム100内の各シャードは、リーダーの複製上で実行される指定されたグルーマーを有する。グルーマーは、処理ユニット190内のプロセッサのうちの1つまたは複数(特に、リーダーの複製に割り当てられたプロセッサ)によって実行されるプロセスである。
グルーマーは、時間的順序で、シャードの複製からのトランザクション・ログ・バッファ101からのトランザクション・ログを定期的に(例えば、毎秒、5秒ごと、などに)マージし、レコードごとに単調増加開始タイムスタンプ(開始TS)を設定し、列状形式のデータ・ファイル(ブロックとも呼ばれる)を共有ストレージ160ならびにローカル・キャッシュ155に作成する。共有ストレージ160は、一般に、アクセスがより遅く(待ち時間がより長く)、ローカル・キャッシュ155を使用する動機を与える。例えば、共有ストレージ160は、ハード・ディスク・ドライブ、磁気テープ、分散ファイル・システム、およびクラウド・ストレージなどであることができるが、ローカル・キャッシュ155は、半導体ドライブ、および不揮発性メモリ(NVM:non-volatile memory)デバイスなどであることができる。ローカル・キャッシュ155は不揮発性にされているため、本発明の1つまたは複数の実施形態によって生成されたハイブリッド・インデックスのキャッシュされたコンポーネント172が永続的であることができる。ハイブリッド・インデックスは、グルーミングされたインデックス173および後でグルーミングされたインデックス174の組合せであり、キャッシュされたコンポーネント172は、ローカル・キャッシュ155にキャッシュされたハイブリッド・インデックスの一部である。キャッシュされたコンポーネント172を持続させることのさまざまな利点は、システム100が故障して再起動する必要がある場合/ときに使用するために、キャッシュされたコンポーネント172がシステム100で容易に使用可能になることを含む。キャッシュされたコンポーネント172をこの方法で持続させることによって、インデックス作成プロセスを再実行する必要がなくなる。
各グルーミングされたブロックは、グルーミングされたブロックIDと呼ばれる単調増加IDによって、一意に識別される。システム100内のトランザクションのコミット時間は、グルーミング時間に効果的に延期される。ポストグルーマー(post-groomer)と呼ばれる別の分離したプロセスが、グルーミングされたゾーン(103)内に存在する新たにグルーミングされたブロックに対して、後のグルーミング動作を定期的に(例えば、10分ごと、15分ごと、30分ごとなどに)実行して、データをより分析に適するようにし、データをグルーミングされたゾーン(103)から編成された(または後でグルーミングされた)ゾーン(104)に移動して変換する。後のグルーミング動作は、グルーミングされたゾーン(103)からの新たにグルーミングされたデータに対して、バージョン管理のために更新されたレコードの終了タイムスタンプを設定すること、照会に対して最適化されたユーザによって定義されたパーティション・キー(通常は、シャーディング・キーと異なる)に基づいてデータを分割すること、および最新データに対する照会を容易にするために、最新バージョンを過去のバージョンから分離することなどの、一連のタスクを実行する。後のグルーミング動作は、単調に増加する後のグルーミング・シーケンス番号、この動作で発達させられたグルーミングされたゾーン(103)からのグルーミングされたブロックのIDの範囲、および後でグルーミングされたゾーン(104)内の生成されたブロックのリストを含んでいるファイル・リストを公開する。システム100は、グルーミングされたゾーン(103)への高速な取込みをサポートするように、分離したグルーミングされたゾーン(103)および後でグルーミングされたゾーン(104)内でデータを編成する。一方、グルーミングされたゾーン(103)内のデータは、データの一部が、使用されていないデータを最適化するために計算リソースを使用するのを防ぐために必要とされるまで、そのデータの部分の最適化を遅延させる最適化方針を使用して、バックグラウンドでポストグルーマーによって分析照会に対して最適化される。
鮮度の要件に依って、照会は、後でグルーミングされたゾーン(104)内のデータおよびグルーミングされたゾーン(103)内のデータに一緒にアクセスする必要があることがある。しかし、トランザクション・ログ・バッファ(101)内のデータは、コミットされていないデータを含んでいるため、照会によってアクセスされない。点検索およびトランザクション処理を容易にするために、目標は、図1に示されているように、グルーミングされたゾーン(103)内のデータおよび後でグルーミングされたゾーン(104)内のデータの両方に対してインデックスを構築することである。
したがって、ハイブリッド・インデックスは、バックグラウンドでデータがあるゾーンから別のゾーンに継続的に発達するときに照会するための統一された見方を提供する。データがグルーミングされたゾーン(103)から後でグルーミングされたゾーン(104)に発達するときに、グルーミングされたインデックス173および後でグルーミングされたインデックス174を更新することによって、ハイブリッド・インデックスも更新される。ハイブリッド・インデックス(図3のブロック172、173、174の組合せ)は、ログ構造化マージ・ツリー(LSMツリー)に基づく。
LSMツリーに関する背景として、LSMツリーは、大量の取込みに対して最適化された永続的インデックス構造である。ランダムなI/Oを必要とする可能性があるエントリのインプレース更新の代わりに、LSMツリーのバッチは、データをメモリに挿入し、メモリが満杯であるときに、連続的I/Oを使用してデータをディスクにフラッシュする。各フラッシュ動作は、新しいランを作成する。LSMツリーのランは、変更不可能である。変更(挿入、更新、および削除)は、新しいエントリをメモリに挿入することによって処理される。挿入または更新は、同じキーを含む新しいエントリを単に挿入するが、削除は、キーが削除されたことを示すツームストーン・エントリを配置する。照会は、複数のランからの同一のキーを含むエントリを調整する必要があり、ここでは、より新しい(すなわち、より最近の)ランからのエントリは、より古いランからのエントリをオーバーライドする。「ラン」は、本明細書において使用されるとき、Bツリー、検索を誘導するためにメモリ内に格納されたページ・ポインタのリストを含む並べ替えられた配列、または任意のその他のそのようなデータ構造などを使用して、さまざまな方法で構造化される。
ランの数を少なく維持して、照会の性能を改善するために、ランは、定期的により大きいランにマージされる。一般に、実際に一般的に使用されるマージ・プロセスは、レベリングおよび階層化を含む。以下で簡単に説明するが、本発明の1つまたは複数の実施形態では、任意のその他のマージ・プロセスが使用され得るということが理解される。レベリングおよび階層化方式では、ランがレベルに編成され、ここでは、新しいランが最低のレベル0に追加され、複数のランが、徐々により高いレベルにマージされる。レベリング・ポリシーは、各レベルで1つのランのみに制限することによって、インデックス検索に対して最適化する。レベルLでのランは、レベルL+1でのランと直ちにマージされる。しかし、階層化ポリシーは、レベルLにおいて多くてN個のランを許可し、これらのランは、レベルL+1での新しいランに一緒にマージされ、検索コストを犠牲にして償却挿入コスト(amortized insert cost)を削減する。
既存の技術では、LSMに似たインデックス作成が使用されてきたが、複数のレベルのストレージ階層を使用してインデックスを作成し、データを発達させることの技術的課題は対処されておらず、それらの技術的課題が、本発明の1つまたは複数の実施形態によって対処されている。
図4は、本発明の1つまたは複数の実施形態に従って、ハイブリッド・インデックスの代表的図を示している。ハイブリッド・インデックス200は、ラン250が複数のゾーン(103、104)にわたって各レベルに編成される、LSMに似たインデックスである。ハイブリッド・インデックス200は、ハイブリッド・インデックス200に含まれているデータの概要などのハイブリッド・インデックス200のメタデータを含む、ヘッダー・ブロック402も含んでいる。さらに、インデックス・ラン250は、複数のレベル(例えば、レベル0~5)に編成される。1つまたは複数の例では、データの古さに依って、各レベルが存在しなくてよいということに注意するべきである。例えば、図4では、データがレベル0、レベル1、およびレベル6に編成されている。他の例では、インデックス・ラン250は、異なる数のレベル(例えば、0~4レベル)、または異なるレベル(レベル0、1、2、および3)、あるいはその両方に編成されてよい。データの取込みが、新しいインデックス・ラン250を作成する。各インデックス・ラン250は、並べ替えられた行(すなわち、インデックス・エントリ)のリストを含む。さらに説明されるように、リーダ(readers)に対して非ブロッキングであるバックグラウンドのインデックス維持動作を使用して、ハイブリッド・インデックス200が維持される。インデックス維持動作は、次のレベルで新しいインデックス・ラン250を生成するマージ動作と、空間管理用のインデックスのパージおよびガベージ・コレクションと、データが発達した、またはあるゾーンから別のゾーンに更新された後に実行されるインデックス発達動作とを含む。
ハイブリッド・インデックス200は、本明細書において説明されるように、単一のラン形式(250)および複数のラン構造で、それぞれ使用される。ここで、インデックス・ラン250(三角形で表されている)は、グルーミングされたブロックのグループからのデータのインデックス作成済みエントリを含んでいるインデックス作成済みファイルである。ブロックIDの範囲は、(図4で三角形として示されている)各インデックス・ラン内に示されている。
図4に示されているように、ハイブリッド・インデックス200は複数のラン250を含むことができ、ここでは、レベル0~5(レベル2~5は図示されていない)がグルーミングされたゾーン103用に構成されているが、レベル6~9(レベル7~9は図示されていない)が後でグルーミングされたゾーン104用に構成されている。明確にするために、各ラン250は、対応するグルーミングされたブロックIDの範囲でラベル付けされている。この示された例では、23~24および21~22でラベル付けされたグルーミングされたランはレベル0に属するが、16~20および11~15でラベル付けされたランはレベル1に属する。6~10および0~5でラベル付けされた後でグルーミングされたランは、レベル6に属する。
インデックス・ラン250は、インデックス・キーおよび0個以上のインクルード列220を含んでいる。インデックス・キー210は、0個以上の等価列212(等価述語に使用される)および0個以上のソート列214(範囲述語に使用される)を含む複合キーとして定義される。インクルード列220は、インデックスのみのアクセスを有効にすることによって、照会処理を容易にするために、インデックス・ラン250に含まれる列である。ハイブリッド・インデックス200は、インデックス・キー210で指定される少なくとも1つの等価列212またはソート列214を含んでいる。
等価列212が指定された場合、インデックス照会を加速するために、等価列の値のハッシュ値もインデックス・ラン250に格納される。インデックス・ラン250は、このようにして、ハッシュと範囲インデックスの組合せになる。一例示的なモノのインターネット(IoT:Internet of Things)アプリケーションでは、デバイスIDが等価列212にされるが、メッセージ番号(msg)がソート列214にされる。特殊な一事例として、等価列212を除外して、ハイブリッド・インデックス200を範囲インデックスにする。上記の例では、取り込まれているレコードが、データ要素の中でも特に、少なくともデバイスID、msg、およびメッセージを含むことができる。
1つまたは複数の例では、インデックス・キーはテーブルの主キーであり、すなわち、ハイブリッド・インデックス200は一次インデックスである。
インデックス・ランは、行のテーブルと論理的に見なされる。上記のインデックスの定義で指定された列に加えて、このテーブルは、開始TS列230およびタプル・シーケンス番号(TSN:tuple sequence number)列235という2つの追加の列を含んでいる。開始TS列230は、レコードが挿入されるときのタイムスタンプを示す。システム100内の開始TSは、グルーミング動作によって生成される。TSN列235は、インデックス作成済みのレコードの正確な位置を指定する。1つまたは複数の例では、システム100内のTSNは、64ビット整数であることができ、ここでは、高位のビットがブロックIDを示すが、低位のビットがそのブロック内のレコード・オフセットを指定する。
それに応じて、インデックス・ラン内の各行は、ハッシュ列225、等価列212、ソート列214、開始TS230、インクルード列220、およびTSN235を含む。1つまたは複数の例では、インデックス・ラン内の行は、ハッシュ列225と、等価列212と、ソート列214と、開始TS230の降順とによって順序付けられる。
特殊な一事例として、等価列212が指定されない場合、ハッシュ列225がインデックス・ランから省略される。降順での開始TS列230は、より最近のバージョンのアクセスを容易にする。すべての順序付け列(すなわち、ハッシュ列225、等価列212、ソート列214、および開始TS230)は、インデックス照会を処理するときにメモリ比較動作を使用することによってキーを比較できるように、辞書順で比較可能な形式で格納される。
インデックス・ランは、ヘッダー・ブロックに加えて、1つまたは複数の固定濃度のデータ・ブロック(最後のデータ・ブロックを除く)として、物理的に格納される。ヘッダー・ブロックは、データ・ブロックの数、このランが属するマージ・レベル、およびこのランが対応するグルーミングされたブロックIDの範囲などの、インデックス・ランのメタデータ情報を含む。
インデックス照会中に無関係なランを取り除くために、本発明の1つまたは複数の実施形態では、概要がヘッダー・ブロックに格納される。この概要は、このランに格納された各キー列の範囲を含む。あるキー列の入力値が、概要によって指定された範囲と重複しない場合、インデックス照会によってランがスキップされる。
ハイブリッド・インデックス200の定義において等価列212が指定された場合、ヘッダー・ブロックは、インデックス照会を容易にするための2個の整数のオフセット配列を含む。オフセット配列は、ハッシュ値の最上位nビットの値をインデックス・ラン内のオフセットにマッピングする。インデックス照会を処理するときに、二分探索用のよりコンパクトな開始オフセットおよび終了オフセットを提供し、アクセスされるブロックの数を効果的に制限するために、オフセット配列が使用される。
図5は、本発明の1つまたは複数の実施形態に従って、一例示的なインデックス・ランを示している。示された例示的なシナリオでは、デバイスID(図5では「デバイス」としてラベル付けされている)が等価列212であり、msgがソート列214であると考える。簡単にするために、インデックス・ラン内の他の列は示されておらず、ハッシュ値が1バイトのみを必要とすると仮定する。テーブルaは、このラン内のインデックス・エントリを示しており、ここでは、ハッシュ値が2進数形式で示されており、テーブルbは、ハッシュ値の最上位3ビットと共にオフセット配列を示している。このインデックス・ラン250の物理的レイアウトがテーブルcに示されており、ここでは、インデックス・ラン250は、1つのヘッダー・ブロック402および2つのデータ・ブロック504を含んでいる。
本発明の1つまたは複数の実施形態によれば、ハイブリッド・インデックス200は、複数のレベルに編成された複数のランを含むことができる。下位のレベル(例えば、レベル0)でのランは、より最近のデータに対応し、ランの総数を制限するために、より高いレベルに定期的にマージされる。しかし、HTAPシステム内のデータは、本明細書において説明されているように、通常、複数のゾーン(103、104)に編成され、データはあるゾーンから別のゾーンに徐々に発達する。HTAPシステムにおけるそのような複数のゾーンのデータ編成を考慮するために、ハイブリッド・インデックス200は、それに応じて、レベルを複数のゾーンに分離する。1つまたは複数の例では、ハイブリッド・インデックス200は、2つのゾーン(グルーミングされたゾーン(103)用に1つおよび後でグルーミングされたゾーン(104)用に1つ)を含む。各ゾーン内で、ランは、自分の作成時間に基づいてリンク・リストに一緒に連結され、ここでは、ヘッダー402が最新のランを指し示す。ランは、同じゾーンのみにマージされる。すなわち、グルーミングされたゾーン103内のランを、後でグルーミングされたゾーン104内の新しいランにマージすることはできない。代わりに、ランは、システム内のデータが時間と共に発達するにつれて、インデックス発達動作を介して別のゾーンに定期的に発達する。インデックス維持動作(例えば、マージおよび発達)の詳細が、本明細書においてさらに説明される。
1つまたは複数の例では、下位のレベルのランが、通常小さく、頻繁にマージされるため、ユーザは、1つまたは複数の下位のレベルを非永続的として設定し、多すぎる小さいファイルを共有ストレージに書き込むのを防ぐことができる。非永続的レベルでのランは、メモリ150およびSSDキャッシュ155内のみに存在するが、共有ストレージ160内で永続的にならず、これによってマージ性能を大幅に改善することができる。しかし、復元可能性のために、システムのクラッシュ/故障の後に、システムがインデックス・ランを再構築する必要がないように、レベル0を永続的として設定する必要がある。
図6は、本発明の1つまたは複数の実施形態に従って、インデックスの維持のための一例示的なランの割当てを示している。この例では、各ラン250が、ランが属しているレベルでラベル付けされている。インデックス維持によって引き起こされる同時のインデックス変更を最小限に抑えるために、各レベルが専用のインデックス維持スレッド610に割り当てられる。各スレッド610は、そのスレッド610に割り当てられたラン250のみに対して、インデックス維持動作を定期的に実行する。これによって、インデックス・ラン250が一度に1つのスレッド610のみによって変更され得ることを保証し、同時のインデックス変更間のロックおよび競合を最小限に抑える。インデックス維持動作は、インデックスの構築動作、パージ動作、マージ動作、および発達動作を含む。インデックス維持は、インデックス照会およびその他のインデックス変更と同時に実行される。インデックス照会の最大の同時性を実現するために、ロックの代わりに、アトミックなポインタの交換が使用される。すべてのインデックス維持動作は、各インデックス変更(すなわち、ポインタの交換)がインデックスの有効な状態をもたらすような動作である。その結果、インデックス照会は非ブロッキングであり、ロックを引き起こさない。
さらに、図6に示されているように、スレッド610の割当てが1つのラン250だけシフトされ、すなわち、レベルLのスレッド610は、レベルLでの最初のラン以外のすべてのランに加えて、レベルL+1での最初のランを処理する。
図7は、本発明の1つまたは複数の実施形態に従って、インデックス・ランを構築するための一例示的な方法のフローチャートを示している。インデックス維持は、グルーミングされたデータがインデックスから照会され得るように、グルーミングされたゾーン103内のデータ・ブロックに対して新しいインデックス・ラン250を作成するインデックス構築動作を含む。702で、インデックス・ラン250を構築するために、グルーミングされたゾーン103内のグルーミングされたブロックがスキャンされ、どの列(すなわち、等価列212、ソート列214、およびインクルード列220)がインデックス・ラン250に含められるかを決定する。さらに、704で、TSN235が計算される。その上さらに、706で、等価列212(もしあれば)のハッシュ値225が計算される。
さらに、708で、ハッシュ値225、ソート列214、等価列212の昇順、および開始TS230の降順に、インデックス・エントリが並べ替えられる。708で、並べ替えられたエントリが、インデックス・データ・ブロックに連続的に書き込まれる。さらに、オフセット配列510が実質的に同時に計算される。
710で、他の必要なフィールドと共にオフセット配列510を書き出すことを含めて、すべてのエントリが書き出された後に、ヘッダー・ブロック402が作成される。712で、作成されたヘッダー402を指し示すように新しいインデックス・ラン250を設定し、ヘッダー402を新しいインデックス・ラン250として再設定することによって、新しいインデックス・ラン250がグルーミングされたラン・リストに追加される。同時のリーダの正しさを保証するために、ポインタ交換の順序が重要であるということに注意する。
図8は、本発明の1つまたは複数の実施形態に従って、インデックス・ランをパージするための一例示的な方法のフローチャートを示している。インデックス維持は、キャッシュ空間を解放するために一部のインデックス・エントリをキャッシュ155から削除する、インデックス・パージ動作を含む。通常、大規模なHTAPシステムは、メモリ150、キャッシュ155、および共有ストレージ160と共に、多層ストレージ階層(図3)を含む。SSDであることができるキャッシュ155は、インデックス照会を加速するために、共有ストレージ160のキャッシュ層として機能する。一般に、インデックス・ラン250は、共有ストレージ160がバックアップに使用されるように、SSDキャッシュ155に収まる。しかし、SSDキャッシュ155が満杯である場合、インデックスのパージが、一部のインデックス・エントリをSSDキャッシュ155から削除して、キャッシュ空間を解放する。1つまたは複数の例では、最近のデータは、より頻繁にアクセスされると仮定される。したがって、インデックス200が増大するにつれて、古いラン(すなわち、高レベルでのラン)がSSDキャッシュ155からパージされ、キャッシュ空間を解放する。
インデックス・パージ動作は、図6を参照して上で説明されたインデックス維持スレッド610によって処理される。ランが適切な順序でパージされる(すなわち、より古いランが最初にパージされる)のを保証するために、現在のパージ・レベルが追跡される。現在のパージ・レベルは、パージされたランとキャッシュされたランを分離する。言い換えると、パージ・レベルを超えるすべてのラン250がパージされるが、パージ・レベルを下回るすべてのラン250がキャッシュされる。
現在のパージ・レベルのスレッドのみが、インデックス・ラン250をパージすることを許可される。802、804で、SSDキャッシュ空間が満杯である場合、現在のパージ・レベルに関連付けられたこのスレッド610が、データ・ブロックをSSDキャッシュ155から削除することによって、自分に割り当てられたラン250をパージする。割り当てられたすべてのランがパージされた場合、スレッド610はパージ・レベルをデクリメントし、所有権を次の下位のレベルのスレッドに移す(806)。
図9は、一例示的なシナリオにおいて、本発明の1つまたは複数の実施形態に従って、パージ動作の視覚的説明を示している。示されたシナリオでは、ブロックID0~18および19~36のインデックス・ラン250が、キャッシュ155から削除され、それに応じて、共有ストレージ160のみに格納される。
これに対して、808で、SSDキャッシュ155が空き領域を含む場合、最近のラン250が(パージの逆方向に)SSDキャッシュ155に読み込まれ、インデックス照会を加速する。読込みの場合、現在のパージ・レベルに割り当てられたスレッド610が、データ・ブロックを共有ストレージ160からSSDキャッシュ155にキャッシュすることによって、対応するラン250を現在のパージ・レベルから読み込む(810)。さらに、812、814で、割り当てられたすべてのランがキャッシュされたときに、スレッド610がパージ・レベルをインクリメントし、所有権を次の上位のレベルのスレッドに移す。
インデックス維持動作は、インデックスのマージをさらに含む。インデックス・ラン250は、ラン250の数を制限して照会の性能を改善するために定期的にマージされ、より大きいインデックス・ラン250を形成する。本明細書において前に述べたように、マージは、各レベルで1つのインデックス・ラン250のみに制限することによってインデックス照会に対して最適化するレベリング・ポリシーを使用して実行される。この場合、第1のインデックス・ラン250のサイズが既定のしきい値を超えたときに、レベルLでの第1のインデックス・ラン250が、次のレベル(L+1)での第2のインデックス・ラン250とマージされる。したがって、第1のインデックス・ラン250は、満杯になって次のレベルにマージされる前に、複数回マージされる。これに対して、階層化ポリシーは、各レベルで複数のインデックス・ラン250を許可することによって、書込みの増幅に対して最適化する。この場合、レベルLでのインデックス・ランが、レベルL+1での新しいインデックス・ランにマージされる。本発明の1つまたは複数の実施形態は、レベリング・マージ技術と階層化マージ技術を組み合わせるハイブリッド・マージを使用することによって、書込みの増幅と照会の性能との間のトレードオフのバランスを調整する。階層化ポリシーと同様に、本発明者らは、各レベルで複数のインデックス・ラン250を許可する。一方、レベリング・ポリシーと同様に、レベルLでのランのマージは、レベルL+1での新しいランを常に作成するとは限らない。レベルL+1での最初のランが(構成可能なパラメータとして)十分に大きくない場合、このランは、レベルLでのランと一緒にマージされる。そうでない場合、レベルLでのランは、レベルL+1での新しいランにマージされる。したがって、図6に示されているように、レベルLのインデックス維持スレッドは、レベルLでの最初のインデックス・ラン250以外のすべてのインデックス・ラン250に加えて、レベルL+1での最初のインデックス・ラン250に対して責任を負い、これは1つのランのシフトの割当てを引き起こす。
図10は、本発明の1つまたは複数の実施形態に従って、インデックス・マージ動作のための一例示的な方法のフローチャートを示している。最初に、この方法は、902で、マージされる第1のインデックス・ランおよび第2のインデックス・ランの列をスキャンすることによって、マージされたインデックス・ランになる新しいインデックス・ラン250に作成する列を決定することを含む。グルーミングされたゾーン103内のグルーミングされたブロックからインデックス・ラン250を作成することと比較した場合、マージ動作中に新しいインデックス・ラン250を形成することには、マージされている各インデックス・ラン内のエントリがすでに並べ替えられているという違いがある。したがって、マージの場合、904で、マージされている2つのインデックス・ラン250をグローバルに並べ替えるために、マージ・ソートを実行する必要がある。
新しいランの書込みのターゲットは、ハイブリッド・インデックス200の現在のインデックスのパージ・レベルおよび非永続的レベルによって決まる。特に、906、908で、新しいラン250が非永続的レベルに属している場合、このランは、SSDキャッシュ155のみに書き込まれる。そうでなく、906、910、および912で、ランのマージされたレベルが現在のインデックスのパージ・レベルを下回っている場合、新しいインデックス・ラン250が、SSDキャッシュ155と共有ストレージ160の両方に書き込まれ、それによって、インデックスのマージ後のキャッシュ・ミスを緩和する。最後に、906、910、および908で、新しいインデックス・ラン250が永続的であり、現在のインデックスのパージ・レベルを超えている場合、このインデックス・ランは、共有ストレージ160のみに書き込まれる。
次に、新しいインデックス・ラン250が、ラン・リスト内のマージされたインデックス・ランを置き換える。特に、914で、新しいインデックス・ラン250は、最後にマージされたランによってもともと指し示されていたインデックス・ラン250を指し示すように設定され、その後、最初にマージされたランの前のインデックス・ランが、新しいインデックス・ラン250を指し示すように設定される。2つのポインタが読み取られて設定され、これらの動作がアトミックでなく、次のレベルのスレッドによってポインタが同時に変更される可能性があるため、ランの置換えの正しさを保証するように、ラン・リストに対するロックが必要である。しかし、ロックのオーバーヘッドは、発生する頻度が低い(例えば、毎秒または毎分発生する)インデックス維持動作のみに影響を与えるため、無視することができ、これらのロックは、どのインデックス照会もブロックしない。
さらに、916で、最後のリーダが存在するときに、マージされたラン250が削除される。しかし、非永続的レベルの前の第1のレベルでのインデックス・ランは、マージされた後に直ちに削除されることができない。これは、そうしないと、システムがクラッシュしたときに、インデックス・ランが失われる可能性があるからである。代わりにこれらのランは、非永続的レベルの後の第1のレベルにマージされた後にのみ、追跡されて削除される。例えば、非永続的レベルがレベル1~2として構成されたと仮定する。すなわち、レベル0でのランがレベル1にマージされた場合、復元可能性のために、それらのランは直ちに削除されることができない。システムは、これらのランを追跡し、これらのランが、共有ストレージ160上で再び永続的になるレベル3にマージされた場合にのみ、これらのランを削除する。
インデックス維持は、データがグルーミングされたゾーン103内のブロックから後でグルーミングされたゾーン104内のブロックに発達させられるときに、インデックスを発達させることも含む。前に説明したように、ポストグルーマーは、グルーミングされたゾーン103内のデータ・ブロックを後でグルーミングされたゾーン104に定期的に移動し、それらのデータ・ブロックに、廃止され、最終的に削除されるとしてマークを付ける。それに応じて、廃止されたグルーミングされたブロックが参照されなくなるように、インデックス・エントリも、グルーミングされたラン・リストから、後でグルーミングされたラン・リストに発達させられる必要がある。しかし、インデックスの発達は、少なくとも次の課題に起因して、困難である。
まず、1つまたは複数のHTAPシステムにおいて、別々のプロセスによってデータの発達が処理される。例えば、ポストグルーマーは、インデックス作成プロセスとは異なるノード上で実行される分離したプロセスである。したがって、1つの課題は、インデックス発達動作中の複数のプロセス間の通信および協調を最小限に抑えることである。さらに、インデックス発達動作自体が、複数の変更をインデックスに適用し(例えば、新しいランを後でグルーミングされたラン・リストに追加し、グルーミングされたラン・リスト内の古いランを除去し)、これが、インデックス照会で非ブロッキングを実現することに別の課題をもたらす。
図13は、本発明の1つまたは複数の実施形態に従って、インデックス発達動作を実行する一例示的な方法のフローチャートを示している。別々のプロセスによって処理されているデータの発達に対処するために、本発明の1つまたは複数の実施形態におけるインデックス発達動作は、どのような協調もなく、インデックス作成プロセスによって非同期的に実行される。各後のグルーミング動作の後に、ポストグルーマーは、この動作の後のグルーミング・シーケンス番号(PSN:post groom sequence number)を公開し、持続させる。PSNは、後のグルーミング手順の各ランを一意に識別するための増加するシーケンス番号である。その一方で、インデックス作成プロセスは、インデックスが作成された最大の後のグルーミング・シーケンス番号(すなわち、インデックス作成済みのPSN)を追跡し、最新のPSNをポーリングし続ける。1002、1010、および1020で、インデックス作成済みのPSNがPSNよりも小さい場合、インデックス作成プロセスは、インデックス作成済みのPSN+1のインデックス発達動作を実行して、適切な順序でのインデックスの発達を保証し、動作が終了したときに、インデックス作成済みのPSNをインクリメントする。後のグルーミング動作が、新しいデータを何も生成せずに、データをあるゾーンから別のゾーンに移動するだけであるため、非同期のインデックスの発達がインデックス照会に影響を与えないということに、注意するべきである。照会の場合、グルーミングされたゾーン103からのレコードにアクセスすること、または後でグルーミングされたゾーン104からのレコードにアクセスすることに、違いはない。
グルーミングされたラン・リスト内の古いランを除去し、インデックス照会で非ブロッキングを実現するために、本発明の1つまたは複数の実施形態は、インデックス発達動作を一連のアトミックな下位の動作に分解する。各下位の動作は、インデックスの状態のアトミックな変更である。すべての下位の動作が正しいインデックスの状態をもたらし、したがって、インデックス照会での非ブロッキングおよびロックなしを実現するということが、さらに保証される。例えば、特定の後のグルーミング・シーケンス番号のインデックス発達動作は、次のように実行される。まず、この後のグルーミング動作によって生成されたデータ・ブロックのインデックス・ラン250が構築され、その後、後でグルーミングされたラン・リストに追加される(1012)。ランのヘッダー・ブロックが、このランが対応するグルーミングされたブロックIDの範囲をまだ含んでいるということに、注意するべきである。次に、1014で、後でグルーミングされたラン・リスト内のランの対象になる最大のグルーミングされたブロックIDが更新される。この時点で、この更新された値以下である終了グルーミング・ブロックID(end groom block ID)を含むグルーミングされたラン・リスト内のすべてのランは、これらのラン内のエントリがすでに、後でグルーミングされたリストの対象になっているため、自動的に廃止され、インデックス照会によって無視される。最後に、1016で、各インデックス維持スレッドによって、グルーミングされたラン・リスト内の廃止されたランに対してガベージ・コレクションが実行される。1つまたは複数の例では、ガベージ・コレクションは、グルーミングされたリスト内のランの数が既定のしきい値を超えた後に実行される。他のインデックス維持動作を実行する前に、最初にスレッドが、廃止されたランをラン・リストから削除し、これらのランに対する他のインデックス維持動作との同時の変更を防ぐ。
上記の各ステップは、ハイブリッド・インデックス200に対して1つの変更のみを行うため、アトミックである。上記のステップのうちの任意の2つの間で、ハイブリッド・インデックス200は、重複するエントリを含んでいる可能性があり、すなわち、グルーミングされたランおよび後でグルーミングされたランの両方によって、同じバージョンを有するレコードにインデックスが作成されることがある。さらに、後のグルーミング動作によって利用されるグルーミングされたゾーン103内のグルーミングされたブロックが、インデックス・ラン250の境界に完全に一致しないことがあるため、インデックス発達動作の最後のステップの後でさえ、ハイブリッド・インデックス200が重複をまだ含んでいる可能性がある。しかし、重複はインデックス照会にとって有害ではない。重複は、照合キーごとに1つのバージョンのみが返されることを保証するために、照会処理の動作中に削除されるが、重複を含んでいる残りの部分は破棄される。本明細書では、照会処理の詳細がさらに説明される。
図11および図12は、一例示的なシナリオにおいて、本発明の1つまたは複数の実施形態に従って、インデックス・マージ動作の視覚的説明を示している。ここで、マージされるインデックス・ラン250は、ブロックID67~70および71~72、ブロックID55~60および61~66、ならびにブロックID0~18および19~36のインデックス・ランである。図11は、マージされたインデックス・ラン250の作成を示している。図12は、マージされたインデックス・ラン250が作成された後にアトミックなポインタの更新が実行される、マージ動作の第2の段階を示している。さらに、新たに作成されたインデックス・ランに現在マージされている前のインデックス・ランに対して、ガベージ・コレクションが実行される。図に示されているように、レベルのいずれかにおいて、マージ動作が実行されることができ、さらに、マージされたランが、マージされたインデックス・ランを作成するためにマージされたインデックス・ラン250と異なるレベルに割り当てられることができる。
図14は、本発明の1つまたは複数の実施形態に従って、インデックの発達の一例示的なシナリオを示している。示された特定の例は、グルーミングされたブロック11~18が後でグルーミングされた後の、結果のインデックスを示しており、ここでは、元のインデックスが図4に示されている。ここで、新たに後でグルーミングされたデータに関して、ブロックID11~18の新しいインデックス・ラン1110が作成されている。ブロックID11~15のラン1 250は、そのエントリが新しいインデックス・ラン1110の対象に完全になっているため、その後の照会によって無視される。インデックス維持スレッド610が次回起動するときに、インデックス維持スレッド610によって、ラン1 250に対してさらにガベージ・コレクションが実行される。さらに、ブロックID16~20のインデックス・ラン2 250が、新しいインデックス・ラン1110と重複するエントリをまだ含んでいるということに注意するべきである。これらの重複は、照会処理中に削除される。
図15は、本発明の1つまたは複数の実施形態に従って、インデックス維持動作用の疑似コードを提供している。前に述べたように、インデックス維持スレッド610によってインデックス維持動作が実行され、各スレッドが、特定のレベルからのインデックス・ラン250のリストに割り当てられる。スレッド610は、最初に、割り当てられたインデックス・ラン250のいずれかが別のゾーンに発達した場合、割り当てられたインデックス・ラン250に対してガベージ・コレクションを実行する。その後、現在のパージ・レベルが割り当てられたレベルに等しい場合、スレッドは、現在のキャッシュ空間に基づいてインデックス・ランをパージするか、または読み込む。最後に、このレベルでのランの数が事前に定義されたしきい値を超えた場合、スレッド610は、割り当てられたインデックス・ラン250をマージする。
本発明の1つまたは複数の実施形態では、グルーミング動作または後のグルーミング動作の後の新しいインデックス・ランの構築は、インデックス維持スレッド610によって処理されない。代わりに、グルーミングされたゾーン103内のデータに対する新しいインデックス・ラン250の構築は、グルーマー・スレッドによって処理されるグルーミング動作の一部である。後でグルーミングされたゾーン104内のデータにインデックスを作成することは、新しい後のグルーミング動作が実行されているかどうかを確認するために最新のPSNを定期的に読み取る、インデックス作成プロセスの専用のスレッドによって実行される。
本明細書において説明されているように、本発明の1つまたは複数の実施形態に従うハイブリッド・インデックス200は、システムの故障などの場合に、インデックス作成を再び実行する必要なくシステムの効率的な回復を容易にする、永続的インデックスである。これは、非永続的レベルでのインデックス・ラン250を除くすべてのインデックス・ラン250が、共有ストレージ160内で安全に永続的になるためである。各インデックス・ラン250が構築されてハイブリッド・インデックス200に追加された後に、グルーミングされた/後でグルーミングされたラン・リストの最大のグルーミングされたブロックIDが更新され、永続的になる。しかし、インデックス作成プロセスがクラッシュし、ローカル・ノード内のすべてのデータ構造を失う可能性がある。したがって、ハイブリッド・インデックス200を回復するために、共有ストレージ160に格納されたインデックス・ラン250に基づいてラン・リストを再構築し、もしあれば、不要データおよび不完全なランを除去する必要がある。
図16は、本発明の1つまたは複数の実施形態に従って、ラン・リストを回復する疑似コードを示している。この例では、関数RecoverRunListが、そのラン・リストの最大のグルーミングされたブロックID(maxID)および最小のグルーミングされたブロックID(minID)を入力として受け取る。この関数は、maxIDから開始し、終了ブロックIDがmaxIDである最高レベルでのランを検出する。次に、この関数は、maxIDをこのランの開始ブロックIDから1を引いた値として設定することによって、後方に検索する。このプロセスは、maxIDがminID未満になるまで反復される。
2つのラン・リストを回復するために、適切なmaxIDおよびminIDを使用してRecoverRunList関数が呼び出される。どちらのリストの場合も、maxIDは、永続的である対応する最大のグルーミングされたブロックIDとして設定される。しかし、グルーミングされたラン・リストのminIDは、後でグルーミングされたラン・リストの最大のグルーミングされたブロックIDに1を加えた値として設定される。これは、この値を下回るすべてのインデックス・エントリが、後でグルーミングされたラン・リストにすでに発達させられているからである。一方、グルーミングされたブロックIDが0から開始すると仮定して、後でグルーミングされたラン・リストのminIDは、単に0として設定される。2つのラン・リストが回復された後に、すべての使用されていないラン・ブロック・ファイルは、マージされたランまたは不完全なランのいずれかに対応するため、単に削除される。
ラン・リストが回復された後に、インデックスは、インデックス照会を処理する準備ができている。インデックス作成済みのPSNが現在のPSN未満である場合、前に説明したように、インデックス作成済みのPSNが最終的に追い付くまで、インデックス発達動作が非同期的に実行される。
この方法で作成されて維持されるハイブリッド・インデックス200は、既存の技術と比較して、効率的な方法で照会を処理することを容易にし、本明細書において説明されているように、複数のゾーンの照会を容易にする。ハイブリッド・インデックス200が複数のバージョンのインデックスであるため、照会は、照会タイムスタンプ(query timestamp)(照会TS)を指定する必要があり、照合キーごとの最新のバージョン(すなわち、開始TS≦照会TSになるような最大の開始TS 230を含むバージョン)のみが返される。
一般に、2種類のインデックス照会がサポートされる。1つ目は、すべての等価列212(もしあれば)の値およびソート列214の境界を指定し、各照合キーの最新のバージョンを返す、範囲スキャン照会である。2つ目は、インデックス・キー(すなわち、主キー)全体を指定し、多くても1つの一致するレコードが返される、点検索照会である。
インデックス照会を処理するために、ラン・リストを反復し、ランの概要をチェックすることによって、候補ランが最初に収集される。インデックス・ラン250は、照会で指定されたようなすべての列値が概要の列の範囲を満たす場合にのみ、候補と見なされる。すべてのインデックス・ラン250がSSDキャッシュ155から読み取られるということにも注意する。照会がパージされたランにアクセスする必要がある場合、インデックス・ランが、最初にブロックごとに共有ストレージ160からSSDキャッシュ155に転送され、すなわち、ラン・データ・ブロック402全体が同時に転送され、その後のアクセスを容易にする。照会が終了した後に、キャッシュされたデータ・ブロックが解放され、キャッシュの置換えの場合、さらに削除される。
図17は、本発明の1つまたは複数の実施形態に従って、単一のインデックス・ランに対して範囲スキャン照会を実行するための一例示的な方法のフローチャートを示している。1402で、受信された照会に対して、単一のランの検索が、そのインデックス・ラン250内の照合キーごとに、最新のバージョンを返す。1408で、単一のラン内の第1の照合キーの位置が最初に特定される。インデックス・ラン250が並べ替えられた行のテーブルであるため、本発明の1つまたは複数の実施形態では、連結された下限(すなわち、ハッシュ値、等価列値、およびソート列値の下限)と共に、二分探索が使用される。1404、1406で、オフセット配列が使用可能である場合、ハッシュ値の最上位nビット(iとして示される)を計算し、オフセット配列内のi番目の値およびi+1番目の値を取得することによって、初期検索範囲を絞り込むことができる。
第1の照合キーが決定された後に、連結された上限(すなわち、ハッシュ値、等価列値、およびソート列値の上限の連結)に達するまで、インデックス・エントリが反復される。1410で、反復中に、タイムスタンプ述語(timestamp predicate)(開始TS≦照会TS)を満たさないエントリが除去される。1412で、残りのエントリについて、インデックス・キーと、開始TSの降順とでエントリが並べ替えられているため、キーごとに、最大の開始TSを含むエントリが返される。
デバイスが等価列212であるが、msgがソート列214である図5の例示的なランについて再び検討する。デバイス=4、msgの境界が[1,3]、照会TS=100である、範囲スキャン照会について考える。ここで、オフセット配列510から初期検索範囲(すなわち、2~6)を取得するために、ハッシュ(4)=1001 0001の最上位3ビット(すなわち、100)が使用される。この例では、入力下限(1001 0001、4、1)を使用する二分探索の後の第1の照合キーは、エントリ2である。次に、インデックス・エントリが、エントリ2から開始して反復される。エントリ2は、キー(4,1)の最新のバージョンであるため返され、一方、エントリ3は、エントリ2のより古いバージョンであるため、除去される。しかし、エントリ4は、その開始TS102が照会TSを超えているため、除去される。この反復は、入力上限(1001 0001、4、3)を超えているエントリ5で停止される。
したがって、単一ラン・インデックスを使用して、範囲スキャン照会で、一致するエントリが効率的に識別される。
複数ラン・インデックスの場合、前述したように一致するエントリを識別するために、各ランが独立してスキャンされる。さらに、各インデックス・ランを独立して検索した後に、照合キーごとに最新のバージョンのみが返されることを保証するように、複数のランから返された結果が調整される。例えば、2つの方法が調整に使用される。
第1のセットに基づく方法では、最新のインデックス・ラン250から最古のランまで連続的に検索が実行され、照会にすでに返されているキーに関してキーのセットが維持される。以前にキーが返されなかった(すなわち、セット内にない)場合、キーがセットに追加され、対応するエントリが照会に返され、そうでない場合、より新しいランからのより最近のバージョンがすでに返されているため、エントリが無視される。
代替として、優先度キューの方法では、複数のインデックス・ランが一緒に検索され、キーのグローバルな順序付けを維持するために、各インデックス・ラン250から返された結果が優先度キューに供給される。キーが順序付けられた後に、各キーの最新のバージョンが選択され、中間結果を記憶せずに残りのバージョンが破棄される。
点検索照会は、範囲スキャン照会の特殊な一事例と見なすことができ、ここでは、多くても1つのエントリが返されるように、主キー全体が指定される。特殊な最適化として、最新のランから最古のランまで連続的に検索が実行され、一致が検出された後に、早期に停止される。したがって、単一のランを検索するために使用される方法(図17)が使用され、ソート列値の下限および上限が同じである。
大規模な一括した点検索の場合、すなわち、二次インデックスから一次インデックスへのアクセス経路として、各点検索を直接評価する代わりに、ハッシュ値225、等価列値212、およびソート列値214によって、最初に入力キーが並べ替えられる。さらに、各入力キーは、この入力がこれまで検出されたことがあるかどうかを示すブール値に関連付けられる。次に、並べ替えられた入力キーは、各ラン・ブロックが多くても1回アクセスされるように、すべてのブール値が真に設定されるまで、最新のランから最古のランまで一度に1つのランについて、各インデックス・ランに対して連続的に検索される。
したがって、本発明の1つまたは複数の実施形態は、ハイブリッド・インデックス構造によるHTAPシステムの性能の改善を促進する。本明細書に記載されたハイブリッド・インデックスは、回復/再起動が容易な分散された複数バージョン、複数ゾーンのログ構造化インデックスを提供する。インデックスの部分が、ストレージ階層内で移動するのが容易であり、素早い回復をさらに促進する。本明細書に記載されたインデックスの構造によれば、情報がメモリ内で保持されず、インデックスのレベルが、永続的または非永続的のいずれかになることができる。レベルが非永続的である場合、それらの内容は、前の最後の永続的レベルまたはコミットされたログから回復可能である。
さらに、本明細書に記載されたハイブリッド・インデックス構造は、分散された複数バージョンのログ構造化インデックスから、データの正しいバージョンを効率的に返すことを容易にする。大規模なハイブリッド・トランザクション/分析処理システムは、通常はトランザクション/挿入/更新/削除に適したゾーンであるデータ・ゾーン内のより最近のデータ、および分析/スキャンに適したゾーン内のより古いデータを含む、複数のゾーンにわたって、データを異なって編成する。分析に適したゾーンが複数存在することもある。システム内でデータが古くなるにつれて、データは、あるゾーンから別のゾーンに発達する。キー/タプルの正しいバージョンを検索して返すために、優先度キューが使用され、キーのグローバルな順序付けを維持するために、(同じデータ・ゾーンまたは異なるデータ・ゾーンのいずれかからの)複数のインデックス・ランが同時に検索される。キーが順序付けられた後に、各キーの最新のバージョンが選択されることができ、中間結果を記憶する必要なしに、残りのバージョンが破棄されることができる。
本発明の1つまたは複数の実施形態は、データの2つのゾーンを含むHTAPシステムを使用して説明されているが、本明細書に記載された特徴が、複数のゾーンのデータ編成を含む他のHTAPシステムをサポートするためにも使用され得るということに、注意するべきである。複数のゾーンをサポートするために、本明細書において提示されたような2つのゾーンの代わりに、ハイブリッド・インデックスが複数のラン・リストを使用して構造化され、複数のラン・リストの各々はデータの1つのゾーンに対応する。データがあるゾーンから別のゾーンに発達するときに、対応するインデックス・エントリも、インデックス発達動作を介して、あるラン・リストから別のラン・リストに発達させられる。
したがって、本発明の1つまたは複数の実施形態は、トランザクション処理と分析の両方に対して最適化され得るLSMツリーを利用して回復可能なインデックス構造を取得する、回復可能な分散された複数バージョン、複数ゾーンのインデックスを容易にする。
本発明は、任意の可能な統合の技術的詳細レベルで、一システム、一方法、または一コンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含むコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を通って伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、あるいは、Smalltalk(R)、またはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行し得る。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生し得る。例えば、連続して示された2つのブロックは、実際には、含まれている機能に依って、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実装され得るということにも注意する。
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限られない。記載された実施形態の範囲および思想から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または当業者が本明細書に記載された実施形態を理解できるようにするために選択されている。

Claims (20)

  1. コンピュータの情報処理による方法であって
    第1のゾーンがトランザクション処理用に編成されたデータを含み、第2のゾーンが分析処理用に編成されたデータを含む、複数のゾーンを含んでいる複数のゾーンのデータ・ストレージ・システムにハイブリッド・インデックスを作成することであって、前記ハイブリッド・インデックス内の各インデックス・エントリが、少なくとも、
    等価列を含んでいるインデックス・キーと、
    前記インデックス・エントリに対応する前記データが挿入された時間のタイムスタンプを示す開始タイムスタンプ列と、
    階層型ストレージ内の前記インデックス・エントリの位置を示すタプル・シーケンス番号列と
    を含む、前記作成することと、
    前記ハイブリッド・インデックスに含められるインデックス・ランを構築することであって、前記インデックス・ランが複数のインデックス・エントリを含み、前記インデックス・ランを構築することが、
    前記第1のゾーンから、前記インデックス・ランに関連付けられるデータ・ブロックをスキャンすることによって、前記インデックス・ランに作成する列を決定することと、
    前記ハイブリッド・インデックスに含められる前記インデックス・エントリのタプル・シーケンス番号の値を計算することであって、前記タプル・シーケンス番号の値が前記タプル・シーケンス番号列に格納される、前記計算することと、
    前記インデックス・ランに含められる前記列を使用して、既定の順序に従って前記インデックス・エントリを並べ替えることと
    を含む、前記構築することと
    を含む、方法
  2. 前記インデックス・ランを構築することが、
    前記インデックス・ランのヘッダーを作成することであって、前記ヘッダーが、インデックス・ラン・ポインタの現在の値に設定されたポインタを含む、前記作成することと、
    前記ヘッダーを指し示すように前記インデックス・ラン・ポインタの値を設定することと
    をさらに含む、請求項1に記載の方法
  3. 前記インデックス・ラン内に格納されたデータ要素の概要が前記ヘッダー内に格納される、請求項2に記載の方法
  4. 前記インデックス・エントリがハッシュ列をさらに含み、前記インデックス・ランを構築することが、
    前記等価列のハッシュ値を前記インデックス・エントリから計算すること
    をさらに含み、前記ハッシュ値が前記ハッシュ列に格納される、請求項に記載の方法
  5. 前記インデックス・ランを構築することが、
    前記インデックス・ランのオフセット配列を計算すること
    をさらに含み、前記オフセット配列が前記ヘッダーに格納され、前記オフセット配列が、前記ハッシュ値の最上位nビットを前記インデックス・ラン内の前記インデックス・エントリのオフセットにマッピングする、請求項4に記載の方法
  6. 前記インデックス・エントリがソート列を前記インデックス・キーにさらに含む、請求項1に記載の方法
  7. 前記インデックス・ランにレベル番号が割り当てられ、前記レベル番号が、前記インデックス・ランを構築するために使用されるデータのソースを示す、請求項1に記載の方法
  8. 前記レベル番号が、前記インデックス・ランに関連付けられた前記データが格納されるゾーンをさらに示し、前記ゾーンが、前記複数のゾーンのデータ・ストレージ・システム内の前記複数のゾーンのうちの1つである、請求項7に記載の方法
  9. 各レベルからの1つまたは複数のインデックス・ランを維持するために、分離したスレッドを割り当てることをさらに含む、請求項7に記載の方法
  10. 階層型データ・ストレージを含んでいるストレージ・システムと、
    前記ストレージ・システムに結合された1つまたは複数の処理ノードと
    を備えているシステムであって、前記1つまたは複数の処理ノードが、第1のゾーンがトランザクション処理用に編成されたデータを含み、第2のゾーンが分析処理用に編成されたデータを含む、複数のゾーンを含んでいる複数のゾーンのデータ・ストレージ・システムにハイブリッド・インデックスを作成して維持するように構成され、前記ハイブリッド・インデックス内の各インデックス・エントリが、少なくとも、
    等価列を含んでいるインデックス・キーと、
    前記インデックス・エントリに対応する前記データが挿入された時間のタイムスタンプを示す開始タイムスタンプ列と、
    階層型ストレージ内の前記インデックス・エントリの位置を示すタプル・シーケンス番号列と
    を含み、
    前記1つまたは複数の処理ノードが、前記ハイブリッド・インデックスに含められるインデックス・ランを構築するように構成され、前記インデックス・ランが複数のインデックス・エントリを含み、前記インデックス・ランを構築することが、
    前記第1のゾーンから、前記インデックス・ランに関連付けられるデータ・ブロックをスキャンすることによって、前記インデックス・ランに作成する列を決定することと、
    前記ハイブリッド・インデックスに含められる前記インデックス・エントリのタプル・シーケンス番号の値を計算することであって、前記タプル・シーケンス番号の値が前記タプル・シーケンス番号列に格納される、前記計算することと、
    前記インデックス・ランに含められる前記列を使用して、既定の順序に従って前記インデックス・エントリを並べ替えることと
    を含む、システム。
  11. 前記インデックス・ランを構築することが、
    前記インデックス・ランのヘッダーを作成することであって、前記ヘッダーが、インデックス・ラン・ポインタの現在の値に設定されたポインタを含む、前記作成することと、
    前記ヘッダーを指し示すように前記インデックス・ラン・ポインタの値を設定することと
    をさらに含む、請求項10に記載のシステム。
  12. 前記インデックス・ラン内に格納されたデータ要素の概要が前記ヘッダー内に格納される、請求項11に記載のシステム。
  13. 前記インデックス・エントリがハッシュ列をさらに含み、前記インデックス・ランを構築することが、
    前記等価列のハッシュ値を前記インデックス・エントリから計算することであって、前記ハッシュ値が前記ハッシュ列に格納される、前記計算することと、
    前記インデックス・ランのオフセット配列を計算することと
    をさらに含み、前記オフセット配列が前記ヘッダーに格納され、前記オフセット配列が、前記ハッシュ値の最上位nビットを前記インデックス・ラン内の前記インデックス・エントリのオフセットにマッピングする、請求項11に記載のシステム。
  14. 前記インデックス・ランにレベルが割り当てられ、レベル番号が、前記インデックス・ランを構築するために使用されるデータのソースを示し、前記レベル番号が、前記インデックス・ランに関連付けられた前記データが格納されるゾーンをさらに示し、前記ゾーンが、前記複数のゾーンのデータ・ストレージ・システム内の前記複数のゾーンのうちの1つである、請求項10に記載のシステム。
  15. 請求項1~9の何れか1項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム
  16. 請求項15に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記憶した、ストレージ媒体
  17. コンピュータの情報処理による方法であって、
    第1のインデックス・ランおよび第2のインデックス・ランという2つのインデックス・ランを、階層型データ・ストレージを使用してデータが格納されるデータベース内でマージすることの要求の受信に応答して、
    前記第1のインデックス・ランからの列および前記第2のインデックス・ランからの列を含むための第3のインデックス・ランを作成することと、
    マージ・ソートを使用して、前記第1のインデックス・ランからの前記列および前記第2のインデックス・ランからの前記列をグローバルに並べ替えることと、
    前記第3のインデックス・ランが非永続的レベルに属するということの決定に基づいて、前記第3のインデックス・ランをキャッシュ・ストレージのみに格納することと、
    前記第3のインデックス・ランが永続的レベルに属し、前記第3のインデックス・ランのレベル番号がパージ・レベルを下回るということの決定に基づいて、前記第3のインデックス・ランを前記キャッシュ・ストレージおよび共有ストレージに格納することと、
    前記第3のインデックス・ランが永続的レベルに属し、前記第3のインデックス・ランの前記レベル番号が前記パージ・レベル以上であるということの決定に基づいて、前記第3のインデックス・ランを前記共有ストレージのみに格納することと
    を含む、方法
  18. 前記データベース内のインデックス・ランのリストを更新すること
    をさらに含み、前記更新することが、
    前記第1のインデックス・ランのアドレスを指し示す第4のインデックス・ランのポインタを変更することであって、前記ポインタが前記第3のインデックス・ランのアドレスに変更される、前記変更することと、
    前記第1のインデックス・ランおよび前記第2のインデックス・ランを削除することと
    を含む、請求項17に記載の方法
  19. 前記第1のインデックス・ランおよび前記第2のインデックス・ランが、前記第1のインデックス・ランおよび前記第2のインデックス・ランが前記永続的レベルに属するインデックス・ランにマージされた後に、削除される、
    請求項18に記載の方法
  20. 請求項17~19の何れか1項に記載の方法の各ステップをコンピュータ・ハードウェアによって実行する、システム。
JP2021569234A 2019-05-23 2020-05-15 ハイブリッド・インデックス作成方法、システム、プログラム Active JP7410181B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/420,394 US11182356B2 (en) 2019-05-23 2019-05-23 Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
US16/420,394 2019-05-23
PCT/IB2020/054619 WO2020234719A1 (en) 2019-05-23 2020-05-15 Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems

Publications (3)

Publication Number Publication Date
JP2022534215A JP2022534215A (ja) 2022-07-28
JPWO2020234719A5 JPWO2020234719A5 (ja) 2022-09-26
JP7410181B2 true JP7410181B2 (ja) 2024-01-09

Family

ID=73456775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021569234A Active JP7410181B2 (ja) 2019-05-23 2020-05-15 ハイブリッド・インデックス作成方法、システム、プログラム

Country Status (6)

Country Link
US (1) US11182356B2 (ja)
JP (1) JP7410181B2 (ja)
CN (1) CN113874852A (ja)
DE (1) DE112020000749T5 (ja)
GB (1) GB2599538A (ja)
WO (1) WO2020234719A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112236759A (zh) * 2018-09-14 2021-01-15 谷歌有限责任公司 日志结构合并森林中的交错合并
US11599583B2 (en) * 2020-04-23 2023-03-07 Paypal, Inc. Deep pagination system
US11366810B2 (en) * 2020-04-27 2022-06-21 Salesforce.Com, Inc. Index contention under high concurrency in a database system
US11860844B2 (en) * 2020-09-07 2024-01-02 Pliops Ltd. Managing a LSM tree of key value pairs that is stored in a non-volatile memory
US11641665B2 (en) 2020-09-09 2023-05-02 Self Financial, Inc. Resource utilization retrieval and modification
US20220075877A1 (en) 2020-09-09 2022-03-10 Self Financial, Inc. Interface and system for updating isolated repositories
US11475010B2 (en) * 2020-09-09 2022-10-18 Self Financial, Inc. Asynchronous database caching
US11782954B2 (en) * 2020-10-20 2023-10-10 Salesforce, Inc. User identifier match and merge process
EP4232917A1 (en) * 2020-10-20 2023-08-30 Redis Ltd. Systems, methods, and media for implementing conflict-free replicated data types in in-memory data structures
US20220244988A1 (en) * 2021-01-30 2022-08-04 Salesforce.Com, Inc. Data shards for distributed processing
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
US20230041129A1 (en) * 2021-07-09 2023-02-09 Pawel Terlecki Systems and method for processing timeseries data
US11947490B2 (en) * 2021-08-31 2024-04-02 Bmc Software, Inc. Index generation and use with indeterminate ingestion patterns
US11947822B2 (en) * 2022-03-31 2024-04-02 Microsoft Technology Licensing, Llc. Maintaining a record data structure using page metadata of a bookkeeping page
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统
CN117519839B (zh) * 2024-01-05 2024-04-16 恒生电子股份有限公司 数据加载方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117302A1 (en) 2011-11-03 2013-05-09 Electronics And Telecommunications Research Institute Apparatus and method for searching for index-structured data including memory-based summary vector
JP2014521176A (ja) 2011-07-21 2014-08-25 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 インデックス構築方法、検索方法、検索デバイス、および検索システム
CN107943927A (zh) 2017-11-21 2018-04-20 清华大学 一种分布式存储系统中多维数据的存储模式转换方法
JP2018180739A (ja) 2017-04-06 2018-11-15 富士通株式会社 更新反映プログラム、更新反映方法及び更新反映装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140279839A1 (en) 2013-03-14 2014-09-18 Sap Ag Integration of transactional and analytical capabilities of a database management system
US9720576B2 (en) * 2013-09-30 2017-08-01 Sonos, Inc. Controlling and displaying zones in a multi-zone system
KR101642072B1 (ko) * 2014-05-08 2016-07-22 주식회사 알티베이스 하이브리드스토리지장치 및 방법
US9767149B2 (en) 2014-10-10 2017-09-19 International Business Machines Corporation Joining data across a parallel database and a distributed processing system
US9703797B2 (en) * 2015-02-18 2017-07-11 Exagrid Systems, Inc. Multi-level deduplication
US10831736B2 (en) 2015-03-27 2020-11-10 International Business Machines Corporation Fast multi-tier indexing supporting dynamic update
US9772911B2 (en) 2015-03-27 2017-09-26 International Business Machines Corporation Pooling work across multiple transactions for reducing contention in operational analytics systems
US10664462B2 (en) * 2017-03-01 2020-05-26 Sap Se In-memory row storage architecture
US10430100B2 (en) * 2018-02-28 2019-10-01 International Business Machines Corporation Transactional operations in multi-master distributed data management systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014521176A (ja) 2011-07-21 2014-08-25 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 インデックス構築方法、検索方法、検索デバイス、および検索システム
US20130117302A1 (en) 2011-11-03 2013-05-09 Electronics And Telecommunications Research Institute Apparatus and method for searching for index-structured data including memory-based summary vector
JP2018180739A (ja) 2017-04-06 2018-11-15 富士通株式会社 更新反映プログラム、更新反映方法及び更新反映装置
CN107943927A (zh) 2017-11-21 2018-04-20 清华大学 一种分布式存储系统中多维数据的存储模式转换方法

Also Published As

Publication number Publication date
WO2020234719A1 (en) 2020-11-26
DE112020000749T5 (de) 2021-10-28
US20200372004A1 (en) 2020-11-26
CN113874852A (zh) 2021-12-31
US11182356B2 (en) 2021-11-23
GB2599538A (en) 2022-04-06
GB202117963D0 (en) 2022-01-26
JP2022534215A (ja) 2022-07-28

Similar Documents

Publication Publication Date Title
JP7410181B2 (ja) ハイブリッド・インデックス作成方法、システム、プログラム
Luo et al. LSM-based storage techniques: a survey
US11429641B2 (en) Copying data changes to a target database
CN106575297B (zh) 使用盲更新操作的高吞吐量数据修改
US8595248B2 (en) Querying a cascading index that avoids disk accesses
US8768977B2 (en) Data management using writeable snapshots in multi-versioned distributed B-trees
US8078653B1 (en) Process for fast file system crawling to support incremental file system differencing
Shukla et al. Schema-agnostic indexing with Azure DocumentDB
US11461347B1 (en) Adaptive querying of time-series data over tiered storage
US10896156B2 (en) Flexible synchronous file system replication
US10896177B2 (en) Database statistics based on transaction state
US20210303537A1 (en) Log record identification using aggregated log indexes
US10248693B2 (en) Multi-layered row mapping data structure in a database system
Chrysafis et al. Foundationdb record layer: A multi-tenant structured datastore
US10162841B1 (en) Data management platform
US10353920B2 (en) Efficient mirror data re-sync
Lee et al. Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds
CN111581123A (zh) 基于分类的存储器分配的锁定
US11941014B1 (en) Versioned metadata management for a time-series database
CN115905259B (zh) 一种支持行级并发控制的纯列式更新方法及装置
Chen Google big table

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220909

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231129

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231221

R150 Certificate of patent or registration of utility model

Ref document number: 7410181

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150