(57)【要約】早期にツームストーンを削除する方法は、ストレージシステム内の第１レコードに初期フラグを設定するステップと、ストレージシステム内の第２レコードに削除フラグを設定するステップと、マージオペレーションにおいてストレージシステムのエクステントへ書き込まれるストレージシステム内の１つ以上のレコードのセットを選択するステップであり、１つ以上のレコードそれぞれは第１キーと関連付けられているステップと、マージオペレーションを実行するステップであり、初期フラグセットを有している第１レコードがセットにおいて最古のレコードであり、かつ、削除フラグセットを有している第２レコードがセットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、第２レコードが、マージオペレーションの最中にエクステントへ書き込まれないステップと、を含む。【特許請求の範囲】
【請求項１】
マージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムから１つ以上のレコードを削除する、コンピュータに実装された方法であって、
前記ストレージシステム内の第１レコードに初期フラグを設定するステップであり、前記初期フラグは、前記第１レコードが、あらゆる他のアクティブレコードと関連付けられていない第１キーと関連付けられていることを示している、ステップと、
前記ストレージシステム内の第２レコードに削除フラグを設定するステップであり、前記第２レコードは、前記第１キーと関連付けられており、かつ、前記削除フラグは、前記第１キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示している、ステップと、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の１つ以上のレコードのセットを選択するステップであり、前記１つ以上のレコードそれぞれは、前記第１キーと関連付けられている、ステップと、
前記マージオペレーションを実行するステップであり、前記初期フラグセットを有している前記第１レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグセットを有している前記第２レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記第２レコードが、前記マージオペレーションの最中に前記エクステントへ書き込まれない、ステップと、
を含む、方法。
【請求項２】
前記第１レコードおよび前記第２レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項１に記載の方法。
【請求項３】
前記１つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項１または２に記載の方法。
【請求項４】
前記方法は、さらに、
第３レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第３レコードに初期フラグを設定するステップ、
を含む、請求項１乃至３いずれか一項に記載の方法。
【請求項５】
前記方法は、さらに、
前記第１レコードに前記初期フラグを設定するステップの以前に、
前記ストレージシステム内の前記第１レコードと同一のキーを有するアクティブレコードについてサーチを実行するステップと、
前記サーチが、前記ストレージシステム内に保管された、前記第１レコードと同一のキーを有するレコードをもたらさない場合に、前記第１レコードの初期フラグを設定するステップと、
を含む、請求項１乃至４いずれか一項に記載の方法。
【請求項６】
前記サーチ、および、前記第１レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項１乃至５いずれか一項に記載の方法。
【請求項７】
ターゲットエクステントへのマージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムにおける１つ以上のレコードを管理する、コンピュータに実装された方法であって、
時間的な範囲内にある１つ以上のレコードを選択するステップと、
１つ以上のレコードの前記範囲内から、同一のキーを持つ１つ以上のレコードを選択するステップであり、時間的な順序で編成された複製セットを形成する、ステップと、
前記複製セットから最新のレコードRを分離するステップであり、残りの複製セットのレコードからプルーンセットを形成する、ステップと、
前記プルーンセットを前記ターゲットエクステントへ書き込まないことによって、前記プルーンセットを破棄するステップと、
Rがツームストーンであり、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを破棄するステップと、を含み、
前記ツームストーンは、ツームストーンと関連するキーに対応している値が削除されたことを示すレコードであり、かつ、
前記初期レコードは、初期レコードが挿入されたときに、システム内の他のアクティブレコードが該初期レコードと関連する同一のキーと関連していないことを示す指定を含むレコードである、
方法。
【請求項８】
前記方法は、さらに、
Rがツームストーンであり、かつ、前記ターゲットエクステントが前記システム内で最低レベルのエクステントである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを廃棄するステップ、を含む、
請求項７に記載の方法。
【請求項９】
前記方法は、さらに、
前記プルーンセットが空であり、かつ、Rが、ツームストーンおよび初期レコードの両方である場合に、Rを廃棄するステップ、を含む、
請求項７または８に記載の方法。
【請求項１０】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンではなく、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、初期レコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項７乃至９いずれか一項に記載の方法。
【請求項１１】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンである場合に、ツームストーンレコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項７乃至１０いずれか一項に記載の方法。
【請求項１２】
ストレージシステムであって、
コンピュータ実行可能命令を保管する少なくとも１つのメモリと、
複数のレコードを保管するデータベースと、
前記少なくとも１つのメモリにアクセスし、かつ、前記コンピュータ実行可能命令を実行するように構成されている、少なくとも１つのプロセッサと、を含み、
前記コンピュータ実行可能命令が実行されると、前記少なくとも１つのプロセッサは、
前記ストレージシステム内の第１レコードに初期フラグを設定し、前記初期フラグは、前記第１レコードが、あらゆる他のアクティブレコードと関連付けられていない第１キーと関連付けられていることを示しており、
前記ストレージシステム内の第２レコードに削除フラグを設定し、前記第２レコードは、前記第１キーと関連付けられており、かつ、前記削除フラグは、前記第１キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示しており、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の１つ以上のレコードのセットを選択し、前記１つ以上のレコードそれぞれは、前記第１キーと関連付けられており、かつ、
前記マージオペレーションを実行し、前記第２レコードは、前記初期フラグセットを有している前記第１レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグセットを有している前記第２レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記マージオペレーションの最中に前記エクステントへ書き込まれない、
ように構成されている、
ストレージシステム。
【請求項１３】
前記第１レコードおよび前記第２レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項１２に記載のストレージシステム。
【請求項１４】
前記１つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項１２または１３に記載のストレージシステム。
【請求項１５】
前記プロセッサは、さらに、
第３レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第３レコードに初期フラグを設定する、
ように構成されている、
請求項１２乃至１４いずれか一項に記載のストレージシステム。
【請求項１６】
前記プロセッサは、さらに、
前記第１レコードに前記初期フラグを設定する以前に、
前記ストレージシステム内の前記第１レコードと同一のキーを有するアクティブレコードについてサーチし、かつ、
前記サーチが、前記ストレージシステム内に保管された、前記第１レコードと同一のキーを有するレコードをもたらさない場合に、前記第１レコードの初期フラグを設定する、
ように構成されている、
請求項１２乃至１５いずれか一項に記載のストレージシステム。
【請求項１７】
前記サーチ、および、前記第１レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項１２乃至１６いずれか一項に記載のストレージシステム。
【請求項１８】
ストレージシステムであって、
コンピュータ実行可能命令を保管する少なくとも１つのメモリと、
複数のレコードを保管するデータベースと、
前記少なくとも１つのメモリにアクセスし、かつ、前記コンピュータ実行可能命令を実行するように構成されている、少なくとも１つのプロセッサと、を含み、
前記コンピュータ実行可能命令が実行されると、前記少なくとも１つのプロセッサは、
時間的な範囲内のレコードを1つ以上選択し、
時間的な順序で編成された複製セットを形成するために、１つ以上のレコードの前記範囲内から、同一のキーを持つ１つ以上のレコードを選択し、
残りの複製セットのレコードからプルーンセットを形成するために、前記複製セットから最新のレコードRを分離し、
前記プルーンセットを前記ターゲットエクステントへ書き込まないことによって、前記プルーンセットを破棄し、
Rがツームストーンであり、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを破棄する、
ように構成されており、
前記ツームストーンは、ツームストーンと関連するキーに対応している値が削除されたことを示すレコードであり、かつ、
前記初期レコードは、初期レコードが挿入されたときに、システム内の他のアクティブレコードが該初期レコードと関連する同一のキーと関連していないことを示す指定を含むレコードである、
ストレージシステム。
【請求項１９】
前記プロセッサは、さらに、
Rがツームストーンであり、かつ、前記ターゲットエクステントが前記システム内で最低レベルのエクステントである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを廃棄する、
ように構成されている、
請求項１８に記載のストレージシステム。
【請求項２０】
前記プロセッサは、さらに、
前記プルーンセットが空であり、かつ、Rが、ツームストーンおよび初期レコードの両方である場合に、Rを廃棄する、
ように構成されている、
請求項１８また１９に記載のストレージシステム。
【請求項２１】
前記プロセッサは、さらに、
Rが廃棄されず、かつ、Rがツームストーンではなく、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、初期レコードとして指定された前記ターゲットエクステントへRを書き込む、
ように構成されている、
請求項１８乃至２０いずれか一項に記載のストレージシステム。
【請求項２２】
前記プロセッサは、さらに、
Rが廃棄されず、かつ、Rがツームストーンである場合に、ツームストーンレコードとして指定された前記ターゲットエクステントへRを書き込む、
ように構成されている、
請求項１８乃至２１いずれか一項に記載のストレージシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
データ構造は、そこに保管されているデータとインタラクション（interact）するための様々な方法を提供するデータの構成（organizations）である。データ構造は、様々な目的のために設計され得る。例えば、バイナリ探索ツリー（search  tree）などで、データの効率的な検索を容易にするため、リンクされたリストなどを用いて、疎（sparse）データの効率的な保管を可能にするため、または、Bツリー（B-tree）などを用いて、検索可能なデータの効率的な保管を提供するためである。
【０００２】
キー値パラダイムを利用するデータ構造は、キー値ペアを受け入れ、そして、キーに対するクエリ（queries）に応答するように構成されている。キー値データ構造は、辞書（例えば、マップ、ハッシュマップ、等）として、そうした構造を含み得る。そこでは、キーが、それぞれの値をリンクし（または、含み）、リスト内に保管されている。これらの構造はメモリ内で（例えば、ストレージとは異なり、メインまたはシステム状態メモリにおいて）役に立つが、一方で、持続性ストレージにおける（たとえば、ディスク上の）これらの構造のストレージ表現は、非効率的であり得る。従って、ログベース（log-based）ストレージ構造のクラスが導入されてきた。一例は、ログ構造化マージツリー（log  structured  merge  tree、LSM  tree）である。
【０００３】
LSMツリー・データベースは、１つ以上のディスク常駐不変レイヤ（immutable  layer）と、可変（mutable）メモリ常駐メモリレイヤとから構成され得る。LSMツリーから読み出すときに、リーダは、全てのレイヤからの結果を読み出し、そして、マージ（merge）することができる。新たなレコードがインデックス付けされると、対応するインデックスエントリが、可変メモリ常駐レイヤに対して追加される。
【０００４】
LSMツリー・データベース内のトランザクションは、所与のレコードの不変バージョン（immutable  version）として保管されている。システム上に既に保管されているレコードのコンテンツの不変バージョンは、コンテンツがシステムから（たとえ）削除されるまで変更されないままであり得る。つまり、受け取ったトランザクションは、レコードのコンテンツを変更する代わりに、システム内に保管されるレコードのコンテンツの新たなバージョンを作成することができる。従って、レコードの複数のバージョン（例えば、異なるコンテンツを有するレコード）が、トランザクション識別子を除いて同一のキーを有することが可能である（例えば、トランザクション番号を含み得る）。
【図面の簡単な説明】
【０００５】
添付の図面は、開示される技術的事項（subject  matter）のさらなる理解を提供するために含まれており、この本明細書の中に組み込まれ、かつ、一部分を構成している。図面は、また、開示される技術的事項の実施形態を説明するものであり、そして、詳細な説明と共に、開示される技術的事項の実施形態の原理を説明するのに役立つ。開示される技術的事項、および、それが実施され得る様々な方法の基本的な理解のために必要とされ得るものよりも詳細に構造の詳細を示すための試みは行われていない。
【図１】図１は、開示される技術的事項の実装に従った、データベースシステムの一例を示している。
【図２】図2は、従来のツームストーン（tombstone）除去プロセスにおける一連のトランザクションを示している。
【図３】図3は、開示される技術的事項の実装に従った、ツームストーン除去プロセスにおける一連のトランザクションを示している。
【図４Ａ】図4Aは、開示される技術的事項の実装に従った、解決されるべき一つの例示的な複製セット（duplicate  set）を示している。
【図４Ｂ】図4Bは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
【図５Ａ】図5Aは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
【図５Ｂ】図5Bは、開示される技術的事項の実装に従った、解決されるべき別の例示的な複製セットを示している。
【図６】図6は、開示される技術的事項の実装に従った、コンピュータを示している。
【図７】図7は、開示される技術的事項の実装に従った、ネットワーク構成を示している。
【発明を実施するための形態】
【０００６】
この開示の様々な態様または特徴は、図面を参照して説明される。ここで、同様の参照番号は、全体を通して同様な要素を参照するために使用されている。この明細書においては、この開示の完全な理解を提供するために、多くの詳細が明らかにされている。しかしながら、開示に係る所定の態様は、これらの特定の詳細なしで、もしくは、他の方法、コンポーネント、材料、等を用いて、実施され得ることが理解されるべきである。他のインスタンスにおいては、よく知られた構造およびデバイスが、開示の技術的事項の説明を促進するために、ブロックダイヤグラムの形態で示されている。
【０００７】
開示される方法および技術は、様々な異なるデータベース構造に対して適用され得る。開示される技術的事項は、単一のタイプのアーキテクチャに限定されるものではないが、例示的な目的のためであり、以下の説明は、キー範囲マルチテナンシ（key-range  multi-tenancy）を有するログ構造化マージ（LSM）ツリーを使用する実装を説明する。LSMツリーは、不変データバージョンを用いてデータ変更を記述することができる。キー範囲マルチテナンシにより、サーバへの動的なバインディング（binding）が可能になり、そして、各テナントのデータを個別に保持するために使用され得る。
【０００８】
LSMツリーベースのストレージ内の不変レコードは、「ツームストーン（“tombstone”）」をストレージの中へ挿入することによって効果的に削除され得る。ツームストーンは、キーに対応する値が削除されたことを示すデータマーカである。ツームストーンは、例えば、レコード内に指定されたフラグ値を設定することによって、実装され得る。ツームストーンの目的は、関連する値の削除をマーク付けするだけではなく、ツリーから値をプルーニング（pruning）する潜在的に費用のかかるオペレーションを回避（または、遅延）することでもある。従って、時間的に順序付けられたサーチの最中にツームストーンに遭遇すると、ツリー内の古いロケーションにキー値ペアの期限切れバージョンが存在する場合でさえも、対応する値は削除されるものと理解される。
【０００９】
LSMツリーベースのストレージ内の物理レコードの各バージョンは不変であるため、削除のためにマーク付けされたレコードは、数日、数ヶ月、または数年に及ぶ任意の長期間にわたり、実際には削除されないことがある。データベースの構造、維持、および管理の技術分野において、この遅延は特に問題となる可能性がある。多数の短命（short-lived）レコードを有するテーブル（例えば、メッセージキューテーブル）を利用するデータベースシステムにおいては、特にそうであり、そこでは、ツームストーンが短期間で蓄積し得る。そうしたテーブルにおけるキー順（key-ordered）サーチは、多数のツームストーンが蓄積する場合にはチャレンジングである。キー順サーチは、所与のキー範囲内で全てのツームストーンを読み出す必要があるためであり、そうして、それら全てが無視され得る。
【００１０】
開示される実施形態は、パラメータを変更し、かつ、満足されたときに、データベース構造からのツームストーンを早期に除去することを可能にするルール（rule）を実施することによって、データベース構造におけるツームストーン蓄積の技術的問題に対処する。早期の除去は、多くの改善を提供する。システム全体において廃止されるデータ（obsolete  data）のストレージを削減すること、システムの速度向上、および、シーケンシャルスキャンの速度向上、といったものである。
【００１１】
図1は、開示されるツームストーン除去プロセスを実装することによって改善され得る例示的なシステム100を示している。データの不変バージョンは、システム100において「エクステント（“extent”）」に保管されている。「エクステント」は、ストレージ領域を参照するものであり、典型的には、ストレージ媒体の中で連続しており、データを保管するために使用され得る。以下に説明されるように、「エクステント参照（“extent  reference”）」は、物理的ストレージ内に保管される物理的エクステントに対する論理的な参照として使用され、そして、物理的ストレージに対するアクセスをストレージ内の１つ以上の「レベル（“level”）」へと仮想化するために使用され得る。それを通じて、データベースは、データベース保守および最適化プロセスの一部として、経時的に移行（migrate）する。
【００１２】
システム100は、単一のコンピューティング装置、または、複数の接続されたコンピューティング装置上で動作することができる。例えば、システム100は、ラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム、または、分散サーバシステムにおいて実装され、もしくは、仮想コンピューティングデバイス又はシステムとして、または、物理的システムと仮想システムの任意の適切な組合わせとして実装され得る。簡潔のために、プロセッサ、オペレーティングシステム、および、データベース管理システムの他のコンポーネント、といった、様々な部分は示されていない。
【００１３】
システム100は、コンピューティングシステムおよびネットワークインフラストラクチャの一部であってよく、もしくは、そうでなければ、システム100と同様の他のサーバシステムを含み得る、より大きなサーバネットワークを含んでいる、別個のコンピューティングシステムおよびネットワークインフラストラクチャに対して接続されてよい。いくつかの実施において、システム100は、図6に示されるコンピュータ600、セントラルコンポーネント700、及び／又は、第２コンピュータ800であり、かつ／代替的に、図7に示されるデータベースシステム1200aから1200dのうち１つ以上であってよい。
【００１４】
システム100は、アクセスレイヤ105、仮想化レイヤ115、および、物理的ストレージレイヤ127を含んでいる。アクセスレイヤ105は、１つ以上のサーバ111、112、113を含むことができ、テナントがアプリケーションおよびデータベースをホスティングするためのプラットフォームを提供し、そして、ユーザがシステム100とインタラクションするためのプライマリインターフェイスとして機能する。アクセスレイヤ105は、また、サーバ111、112、113にわたる負荷分散（load  balancing）を処理することができ、かつ、コンピューティングデバイス(例えば、図6に示されるコンピュータ600及び／又は第２コンピュータ800)からのシステム100に対するクエリを受け入れて、処理することができる、データベース・ストレージエンジン110も含み得る。例えば、データベース・ストレージエンジン110は、テナント組織からクエリを受け取り、そして、仮想化レイヤ115に対してコマンドを送信するためにクエリを処理することができる。データベース・ストレージエンジン110は、データベースシステムについてクエリを受け取り、そして、受け取ったクエリと関連するデータを検索する（retrieving）ための、サーバシステム100におけるハードウェアおよびソフトウェアの任意の適切な組み合わせであり得る。
【００１５】
仮想化レイヤ115は、カスタマイズされたデータベースといった、システムサービスを各テナントに提供するために、テナントデータを仮想化し、テナントデータは、たとえ複数のテナントからのデータがシステム100内に保管され得るとしても、テナント自身のデータだけにアクセスすることが可能である。仮想化レイヤは、エクステント参照セット120およびメモリストレージ125を含み得る。いくつかの実装において、エクステント参照セット120およびメモリストレージ125は、図6に示されるセントラルコンポーネント700及び／又は図7に示されるデータベースシステム1200a−1200dに保管され得る。
【００１６】
メモリストレージ125は、データが、物理的ストレージレイヤ127内のエクステントに対してレコードされる前に、データの初期バージョン（initial  version）を保管する。つまり、新たなレコードの挿入またはツームストーンの挿入といった、データトランザクションは、メモリストレージ125レベルで発生する。経時的に、メモリストレージ125の使用を最適化するために、フラッシュ（flush）オペレーションは、データを、メモリストレージ125レベルから物理的ストレージレベル127における最上位レベルのエクステント130まで移送し、そして、マージ（merge）オペレーションは、データベース保守オペレーションの一部として、エクステント130間でデータを移送する。仮想化という用語においては、このように、より新たなデータがツリーの「最上位（“top”）」またはデータベースの「上位レベル（“upper  levels”）」に存在し、一方で、より古いデータがツリーの「最下位（“bottom”）」またはデータベースの下位レベル（“lower  levels”）」に存在すること、が言える。この用語は、しかしながら、概念化の助けとして単に使用されているだけであり、そして、データベース内で相互に関するデータの実際の物理的ロケーションについて必ずしも関係がないことが、理解されるべきである。
【００１７】
エクステント参照セット120は、エクステント130が物理的ストレージ127内でどこに配置されているか(例えば、テナントデータがエクステント130の一部として保管され得るところ)を定義するために、テナントデータからのメタデータを使用することができる。メタデータは、例えば、エクステント内でどのキーが可視であるかを定義するキー範囲、エクステント130内のレコード／ツームストーンのトランザクション順序を示すトランザクション番号(ここにおいては「XCN」として参照される)、および、エクステントを所与のテナントと関連付けるテナント識別子（ID）データ、を含み得る。エクステント参照セット120は、物理的ストレージ127内に保管された物理的エクステントに対する論理的参照の機能性を提供するように動作できる、サーバシステム100におけるハードウェアおよびソフトウェアの任意の適切な組み合わせを使用して実装され得る。
【００１８】
仮想化レイヤ115は、データベース・ストレージエンジン110からクエリを受け取り、そして、データの最新のバージョンがメモリストレージ125内にあるか否かをチェックすることにより、または、エクステント参照セット120を参照して、データの最新のバージョンが物理的ストレージレイヤ127内のエクステント130まで既にフラッシュされたか否かをチェックすることによって、要求されたデータを見つけることができる。
クエリは、例えば、少なくとも１つのテナントと関連付けられたデータベースシステムの許可されたユーザから受け取ることができる。データが、既に物理的ストレージ127までフラッシュされている場合に、仮想化レイヤ115は、メタデータに基づいて、エクステント参照セット120内に要求されたデータを見つけることができる。つまり、仮想化レイヤ115は、クエリによって要求されたデータをエクステント130から引き出す（retrieve）ことができ、そして、例えば、データベースシステムに対してクエリを送信したコンピューティングデバイスへ、データベースを提供することができる、データベース・ストレージエンジン110に対してデータを返す（return）ことができる。
【００１９】
物理的ストレージレイヤ127は、不変データストレージを含み、そして、例えば、半導体メモリ、ソリッドステートドライブ（SSD）、ハードディスクドライブ、光メモリ、光ストレージ装置、または、任意の他の適切な物理的データストレージ、もしくは、それらの組み合わせとして、実装され得る。物理的ストレージレイヤ127は、テナントデータの不変バージョンを含んでいる、エクステント130を実装することができる。物理的ストレージレイヤ127は、また、エクステント130のアイデンティティおよび寿命を管理し、かつ、エクステントを保管することができるストレージおよびサーバといった、ハードウェアを管理するようにデータ容量を追跡するためのカタログ135も含むことができる。
【００２０】
物理的ストレージ127内のデータは不変であるため、保管されたデータを変更するためのデータトランザクションをシステム100が実行するとき、システム100は、既に保管されているデータのコンテンツを変更／削除する代わりに、データの新たなバージョンを作成し、そして、メモリストレージ125の中へ挿入する。従って、ここにおいて開示されるように複数のバージョンのデータ(例えば、各々が異なるコンテンツを有しているもの)について、同一のキー（identical  keys）を有することが可能である。各トランザクションをマーク付けするために、増分シーケンシャルトランザクション識別子（incremental  sequential  transactional  identifier、XCN）を使用することによって、システム100は、保管されたデータの変更を実行するために、データのバージョンについて同一のキーを使用する。例えば、レコードに係る後のバージョンは、レコードに係る前のバージョンよりも高いXCNを有しており、そして、両方のレコードは、同一のキーを有するが、潜在的には異なるコンテンツ値を有することになる。
【００２１】
システム100が、データの読み出しを必要とするオペレーションを実行するとき、システム100は、XCNによって時間的に順序付けられたサーチを実行することができる。サーチの最中に、ツームストーンに遭遇したとき、システム100は、ツームストーンと同一のキー、および、ツームストーンよりも低いXCNを有しているあらゆる以前のレコードを無視することができる。つまり、本システムは、たとえキー値ペアのうち１つ以上の有効期限切れバージョンがエクステント130内の古いロケーションに存在していても、対応する値が削除されているかのように機能する。
【００２２】
開示される実施形態を説明するためには、開示される早期のツームストーン除去プロセスを従来のツームストーン除去プロセスに対して比較することが有益である。図2は、LSMツリーベースのストレージシステムからツームストーンを段階的に除去するための従来のプロセスを示している。上述のように、フラッシュおよびマージオペレーションを介して、システム内のデータ(例えば、レコードおよびツームストーン)は、仮想レベルを介して、メモリストレージ(新たなデータ)から物理的ストレージ(古いデータ)内のエクステントへ、「ダウン（“down”）」して移行する。従来のLSMツリーベースのストレージシステムにおいて、ツームストーンは、最古のレコードが保管されている、物理的ストレージの最低レベルに到達するまで、除去されない。
【００２３】
図2は、メモリストレージ225内の一連のトランザクション、および、後続の物理的ストレージエクステントに対するマージオペレーションを示している。キーKAおよびトランザクション番号xc10を有しているレコード230がベーステーブルの行210に挿入され、そして、キーKBおよび増分的に（incrementally）より高いトランザクション番号xc11を有している対応するレコード235がセカンダリ・インデックス内に記入される（entered）。レコード230がアップデートされると(つまり、新たなトランザクションにおいて)、新たなレコード240がベーステーブルの行210内に記入される。新たなレコード240は、以前のレコード230と同一のキーKAを有しているが、また、アップデートされた値(図示なし)および次の増分的なトランザクション番号xc12も有する。アップデートは、セカンダリ・インデックスレコード235の削除をマーク付けするためにツームストーン237の挿入、および、新たなセカンダリ・インデックスレコード245の挿入を促す。
【００２４】
経時的に、複数のアップデート250が発生し、追加のツームストーンおよびアップデートされたセカンダリ・インデックスレコード255を結果として生じ得る。最後に、アップデートレコードは、削除のためにツームストーン260を用いてマーク付けされ、そして、対応するツームストーン265が、対応するセカンダリ・インデックスレコードのために追加される。システムが、メモリストレージ225から物理的ストレージエクステント227までデータをプッシュするためのフラッシュオペレーションを実行するとき、廃止されるアップデートレコード270は物理的ストレージエクステント227まで繰り越される（carried  forward）必要はない。それらは廃棄され、そして、先へ（forward）書き込まれない。しかしながら、最新のレコードそれぞれは、この場合にはツームストーン(例えば、260、237、265)が、繰り越される。かくして、ツームストーン280は、エクステント227内に保管される。
【００２５】
図2に示されるフラッシュオペレーションにおいては、たとえレコード280それぞれがツームストーンであっても、従来のシステムにおいて、それらは廃棄することができない。ツームストーンは、本質的に、ツームストーンと同一のキーを用いて、あらゆる以前のレコードをシステムによって読み出されることをブロックし、または、阻止する。ツームストーン280は、ツームストーン280のうち１つと同一のキーを有する追加のレコードが、未だに、ストレージの仮想レベルでさらに下のどこかに保管されている可能性が存在する限りは、廃棄することができない。例えば、エクステント227からエクステント229までの以前のマージオペレーションが、エクステント229へ書き込まれているキーKAのためのレコード290を結果として生じたか否かは不明である。レコード290がエクステント229内に存在する場合には、次いで、ツームストーン280を廃棄することで、レコード290を読み出し（readout）においてアクセス可能にさせるだろう。このような理由で、従来のシステムにおいて、ツームストーンは、物理的ストレージ内で最低レベルの(つまり、最後の)エクステントに到達するまで、システムに侵入する。その時点においてだけ、ツームストーンによってブロックされる必要がある以前のレコードが存在しないことが保証され得る。
【００２６】
従って、ターゲットエクステントに対する従来のマージオペレーションは、以下のとおりである。
１）(例えば、XCNといった、時間パラメータに基づいて)レコードの範囲を選択する。
２）範囲内の同一のキーを有しているレコードを、時間的な順番で複製セット(バッファ)に追加する。
３）複製セットから最新のレコードRを保持し、残りの複製セットレコードをプルーンセット（prune  set）として保持する。
４）それらのレコードをターゲットエクステントへ書き込まないことによって、プルーンセットを破棄する。
５）Rがツームストーンであり、かつ、ターゲットエクステントがシステム内で最低レベルのエクステントである場合には、Rを廃棄し、そうでなければ、ターゲットエクステントへRを書き込む。
【００２７】
図2に示されるように、このマージプロセスは、ツームストーンが、安全に廃棄され得る、最低レベルのエクステントへ最終的に到達するまで、物理的ストレージ全体にわたりツームストーンの蓄積を結果として生じ得る。多くのデータベースアプリケーションでは、この結果は有害であり、システムの動作速度について悪影響を及ぼし得るものであり、そして、そうでなければ、コンテンツデータを保管するために使用され得るであろうストレージ空間を取り上げる。さらに、いくつかのデータベースサービスは、多数のレコードの挿入と削除との間の時間が比較的に短いメッセージクエサービスといった、過剰な数の不要なツームストーンを迅速に生成し得る。
【００２８】
図3は、ストレージシステムからツームストーンを早期に除去することを可能にするために、まもなく開示される技術的事項に従ったコンピュータで実装されるプロセスを示している。レコード330がメモリストレージ225のベース行テーブル310の中へに最初に挿入されると、システムは、最初に、キーKAと関連する他のアクティブレコード（つまり、削除のためにマーク付けされていないレコード）がシステム内に存在しないことを確認する。他のレコードが見つからない場合に、レコード330は「初期フラグ（“initial  flag”）」を用いてマーク付けされ、それがキーKAと関連する現在の最初で、かつ、最も早いアクティブレコードであることを示している。
【００２９】
従って、この例において、キーKAおよびトランザクション番号xc10を有している初期レコード330が、ベーステーブル行310の中へ挿入され、そして、キーKB、および、増分的により高いトランザクション番号xc11を有している対応する初期レコード335が、セカンダリ・インデックス内に記入される。レコード330がアップデートされると(つまり、新たなトランザクション内に異なる値が与えられる)、新たなレコード340がベーステーブル行210に内に記入される。新たなレコード340は、アップデートであって、初期レコードではない。なぜなら、初期レコード330は、既にキーKAと関連付けられているからである。従って、アップデートレコード340について「初期フラグ」は、値0のままである。
【００３０】
アップデートレコード340は、初期レコード330と同一のキーKAを有しているが、調整値(図示なし)、および、次の増分的なトランザクション番号xc12を保管している。アップデートは、セカンダリ・インデックスレコード335の削除をマーク付けするためにツームストーン337の挿入を促す。ツームストーン337は、初期のセカンダリ・インデックスレコード335を非アクティブにする(つまり、実際上は削除される)。新たなセカンダリ・インデックスレコード345の挿入は、「初期フラグ」によってマーク付けされる。
【００３１】
経時的に、複数のアップデート350が発生し、追加のツームストーンおよび新たな初期セカンダリ・インデックスレコード355を結果として生じ得る。最後に、アップデートレコードが削除のためにツームストーン360を用いてマーク付けされ、そして、対応するツームストーン365が、対応するセカンダリ・インデックスレコードのために追加される。
【００３２】
この状況では、システムがフラッシュ／マージオペレーションを実行するとき、廃止されるアップデートレコード270の全てが物理的ストレージエクステント227まで繰り越される必要はなく、そうして、それらは廃棄されて、かつ、先へ書き込まれない。しかしながら、従来のシステムとは異なり、開示されるシステムは、残りのツームストーンが繰り越される必要があるか否かを決定することができ、もしくは、また、廃棄することもできる。ツームストーンを早期に廃棄することができるか否かを自動的に決定する、開示されるマージオペレーションの実施例は、以下のとおりである。
１）(例えば、XCNといった、時間パラメータに基づいて)レコードの範囲を選択する。
２）範囲内の同一のキーを有しているレコードを、時間順に複製セット(バッファ)に追加する。
３）複製セットから最新のレコードRを保持し、残りの複製セットレコードをプルーンセットとして保持する。
４）Rがツームストーンであり、かつ、ターゲットエクステントがシステム内の最低レベルのエクステントである場合に、Rを廃棄する。
５）Rがツームストーンであり、かつ、プルーンセット内の最古のレコードが初期レコードである場合に、Rを破棄する。
６）プルーンセットが空であり、かつ、Rがツームストーンおよび初期レコードの両方である場合に、Rを破棄する。
７）プルーンセットレコードを、ターゲットエクステントへ書き込まないことによって、廃棄する。
８）Rが破棄されず、かつ、Rがツームストーンでない場合は、ターゲットエクステントにRを書き込み、プルーンセット内の最古のレコードの初期フラグ設定を継承する。
９）Rが廃棄されず、かつ、Rがツームストーンである場合は、ツームストーンとしてマーク付けされたターゲットエクステントへRを書き込む。
【００３３】
上記の運用プロセスを図3に示された状況に対して適用すると、選択されるレコードの範囲が、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有するレコードに基づいて決定され得る。例えば、この場合、範囲は、トランザクション番号(XCN)  xc10−xc25を含み得る。キーKAについて、複製セット内の最新のレコードRはxc24  TS  KAである。プルーンセット内の最古のレコードは、xc10  Initial  KAである。従って、このインスタンスにおいて、上記のオペレーション番号5がトリガされ、そして、Rは破棄される。指定されたXCN範囲の全体に対してオペレーションを適用すると、レコード370、380の全てが破棄され、そして、エクステント227に何も書き込まれない。
【００３４】
従来のシステムとは対照的に、この状況において、ツームストーンは、現在開示されたシステムによって安全に廃棄され得る。なぜなら、開示されたシステムは、もはやツームストーンが必要とされないことを正確に判断することができるからである。キーKA、KBを使用する追加レコードに対するスキャンは、初期フラグが設定された時点で既に実行されている(つまり、レコード330、335、345、等について)。初期フラグは、キーKA−KFについて古いアクティブレコードが存在しないことを示している。従って、アクセスをブロックするためにツームストーン360、337が必要とされるレコードだけが、全て複製セットの範囲内にあり、そして、それらは現在のマージにおいて全て破棄される。
【００３５】
従って、開示されたコンピュータ実装プロセスの実施形態は、ツームストーンが最低レベルのエクステントに到達する以前に、安全かつ自動的に、ツームストーンを廃棄することができ、それによって、追加のストレージ空間を解放し、かつ、システムの動作速度を改善することにより、システムを改善している。
【００３６】
図4A、図4B、図5A、および図5Bは、開示されたコンピュータ実装プロセスの実施形態が、マージオペレーションにおいて解決することができる、複製セットのシナリオを示している。図4Aにおいて、複製セット400内の最新のレコードRは、ツームストーン410である。プルーンセット420は、複製セット400からの残りのレコードを含んでいる。プルーンセット420内の最古のレコードは、アップデートレコード430である。この場合には、最古のレコードが初期レコードとしてマーク付けされておらず、かつ、Rがツームストーンおよび初期レコードの両方としてマーク付けされていないので、システムは、ターゲットエクステントが最低レベルでない限り、キーKAについてツームストーンレコードを保存し、そして、残りのレコードを破棄する。この場合には、Rおよびプルーンセットの両方が破棄され得る。
【００３７】
図4Bにおいて、複製セット401内の最新のレコードRは、アップデートレコード440である。プルーンセット450は、複製セット401からの残りのレコードを含んでいる。この場合には、プルーンセット450内の最古のレコードは初期レコード460であるが、Rがツームストーンレコードではないので、プルーンセット450は廃棄され、そして、Rは初期レコードとしてマーク付けされたターゲットエクステントへ書き込まれる。
【００３８】
図5Aにおいて、複製セット500内の最新のレコードRは、レコード510であり、初期レコードおよびツームストーンの両方としてマーク付けされている。このことは、レコードが挿入され、そして、次いで、同一のトランザクション内で削除のためにマークが付けられたときに発生し得る。プルーンセット520内の最古のレコードは、アップデートレコード530である。レコード530が初期レコードとしてマーク付けされていないので、キーKAについてツームストーンレコードはターゲットエクステントに対して先へ書き込まれる。つまり、この場合には、Rも、また、初期レコードであるが、どのフラグを繰り越すかを決定する際には、ツームストーンフラグが優先される。
【００３９】
図5Bにおいて、複製セット500内の最新のレコードRは、初期レコードおよびツームストーンの両方として、再び、マーク付けされている。しかしながら、この場合には、プルーンセット550内の最古のレコードが、初期レコード560としてマーク付けされている。従って、Rおよびプルーンセット550の両方が破棄され得る。
【００４０】
本開示の技術的事項の実装は、様々なコンポーネントおよびネットワークアーキテクチャにおいて実装され、そして、それらと共に使用され得る。図6は、本開示の技術的事項を実装するために適した例示的なコンピュータ600である。コンピュータ600は、複数のコンピュータのネットワーク内の単一のコンピュータであってよい。図6に示されるように、コンピュータ600は、セントラルコンポーネントまたは分散コンポーネント700(例えば、サーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバ、等)と通信することができる。セントラルコンポーネント700は、ストレージデバイス810を含み得る、第２コンピュータ800といった１つ以上のコンピュータと通信することができる。第２コンピュータ800は、サーバ、クラウドサーバ、等であってよい。ストレージ810は、任意の適切な揮発性および不揮発性の物理的ストレージ媒体の任意の適切な組み合わせを使用することができ、例えば、ハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ、および、ランダムアクセスメモリ、等、または、それらの任意の組み合わせ、を含んでいる。
【００４１】
上述のレコードといった、データは、任意の適切なファイルシステム、もしくは、ストレージスキームまたは階層を使用して、例えば、ストレージ810内に任意の適切なフォーマットで保管され得る。例えば、ストレージ810は、上述のように、複数のレベルを有するログ構造化マージ（LSM）ツリーを使用してデータを保管することができる。さらに、図6−図7に示されるシステムがマルチテナントシステムである場合に、ストレージは、テナントのためのデータベースの各インスタンスについて、別々のログ構造化マージツリーへと編成され得る。代替的に、特定のサーバまたはシステム上の全てのレコードのコンテンツが、単一のログ構造化マージツリー内に保管されてよく、その場合には、各テナントのデータを区別するために、レコードのバージョンと関連する固有のテナント識別子が使用され得る。より最近のトランザクションが、ツリーの最上位または上部レベルに保管され、そして、より古いトランザクションが、ツリーの最下位レベルに保管され得る。代替的に、各レコードについて最新のトランザクションまたはバージョンが、ツリーの最上位レベルに保管され、そして、以前のバージョンまたは以前のトランザクションが、ツリーの最下位レベルに保管され得る。
【００４２】
セントラルコンポーネント700へ、かつ／あるいは、セントラルコンポーネントから獲得された情報は、コンピュータ600がコンピュータ800と情報を共有しないように、各コンピュータについて分離されてよい。代替的または追加的に、コンピュータ600は、第２コンピュータ800と直接的に通信することができる。
【００４３】
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)600は、中央処理装置640といったコンピュータ600の主要コンポーネントと相互接続するバス610、メモリ670(典型的にはRAMだが、また、ROM、フラッシュRAM等も含み得る)、入力／出力コントローラ680、ディスプレイアダプタを介するディスプレイまたはタッチスクリーンといった、ユーザディスプレイ620、ユーザ入力インターフェイス660を含んでいる。ユーザ入力インターフェイスは、１つ以上のコントローラ、および、キーボード、マウス、Wi-Fi／セルラ無線、タッチスクリーン、マイクロフォン／スピーカ、等といった、関連するユーザ入力またはデバイスを含んでよく、そして、I/Oコントローラ680、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス、等といった、固定ストレージ630、および、光ディスク、フラッシュドライブ、等を制御および受信するように動作するリムーバブルメディアコンポーネント650に対して接近して接続されてよい。
【００４４】
バス610は、上述のように、中央処理装置640とメモリ670との間のデータ通信を可能にし、これは、読み出し専用メモリ（ROM）またはフラッシュメモリ(いずれも図示なし)、および、ランダムアクセスメモリ（RAM）(図示なし)を含み得る。RAMは、その中へオペレーティングシステムおよびアプリケーションプログラムがロードされるメインメモリを含み得る。ROMまたはフラッシュメモリは、とりわけ、コード、ペリフェラルコンポーネントとのインタラクションといった基本的なハードウェアオペレーションを制御する基本入出力システム（BIOS）を含み得る。コンピュータ600に常駐するアプリケーションは、ハードディスクドライブ(例えば、固定ストレージ630)、光学ドライブ、フロッピー（登録商標）ディスク、または、他の記憶媒体650といった、コンピュータで読取り可能な媒体上に保管され、そして、これを介してアクセスされ得る。
【００４５】
固定ストレージ630は、コンピュータ600と一体化されてよく、または、他のインターフェイスを介して分離されて、アクセスされてよい。ネットワークインターフェイス690は、電話リンクを介してリモートサーバに対する直接的な接続、インターネットサービスプロバイダ（ISP）を介してインターネットへの直接的な接続、もしくは、POP（point  of  presence）または他の技術を介するインターネットへの直接的なネットワークリンクを介してリモートサーバへの直接的な接続を提供することができる。ネットワークインターフェイス690は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ（CDPD）接続、デジタル衛星データ接続、等を含む、無線技術を使用して、そうした接続を提供することができる。例えば、ネットワークインターフェイス690は、図7に示されるように、１つ以上のローカル、ワイドエリア、または、他のネットワークを介して、コンピュータが他のコンピュータと通信するのを可能にし得る。
【００４６】
多くの他の装置またはコンポーネント(図示なし)は、同様な方法(例えば、データキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び／又は許可サーバ、コンピュータ及び／又はネットワークセキュリティシステム、等)で接続され得る。逆に、本開示を実施するために、図6に示されている全てのコンポーネントが存在する必要はない。これらのコンポーネントは、示されたものとは異なる方法で相互接続され得る。本開示を実装するためのコードは、メモリ670、固定ストレージ630、リムーバブルメディア650のうちの１つ以上といった、コンピュータで読取り可能な記憶媒体、または、リモートストレージロケーションにおいて保管され得る。
【００４７】
図7は、開示される技術的事項の実装に従った、ネットワーク構成の例を示している。クラウド1202によって表されるネットワーク内の異なるノードにおける4つの別々のデータベースシステム1200a−1200dは、ネットワークリンク1204を通じて相互に、および、ユーザ(図示せず)と通信する。データベースシステム1200それぞれは、データベースの複数のインスタンスをホストするように動作可能であり、ここで、各インスタンスは、特定のテナントと関連するユーザだけにアクセス可能である。データベースシステムそれぞれは、ストレージエリアネットワーク(図示なし)と一緒にコンピュータのクラスタ、ファイアウォールと一緒にロードバランサおよびバックアップサーバ、他のセキュリティシステム、および、認証システムを構成することができる。システム1200のいずれかにおけるインスタンスのいくつかは、インスタンス内のストレージのためデータを取り込み、かつ、提供するために、ユーザから、または、計算要素(図示なし)から受け取ったトランザクションを処理し、そして、コミットするライブまたはプロダクション・インスタンスであってよい。
【００４８】
データベースシステム、例えば1200c、は、図6におけるような、少なくとも１つのストレージデバイスを含み得る。例えば、ストレージは、メモリ670、固定ストレージ630、リムーバブルメディア650、セントラルコンポーネント700及び／又は第２コンピュータ800に含まれるストレージデバイス、及び／又は、データベースシステム1200a−1200dのうち１つ以上と関連付けられた１つ以上のストレージ、を含み得る。
【００４９】
いくつかの実装において、図6−図7に示される１つ以上のサーバは、ログ構造化マージツリーデータ構造を使用して、少なくとも１つのストレージ(例えば、セントラルコンポーネント700、第２コンピュータ800、及び／又は、データベースシステム1200a−1200dと関連付けられたストレージ)の不変ストレージ内にデータを保管し得る。
【００５０】
開示された技術的事項のシステムおよび方法は、シングルテナントシステム、及び／又は、マルチテナントシステム用であってよい。マルチテナントシステムにより、種々のテナント、例えば、ユーザ、ユーザのグループ、または、組織であり得るものは、種々のテナント間で共有され得るサーバシステム上のソフトウェアツールまたはインスタンスを通じて、サーバシステム上でそれら自身のレコードにアクセスすることができる。各テナントに対するレコードのコンテンツは、そのテナントのためのデータベースの一部分であってよい。複数のテナントに対するレコードのコンテンツは、全てが同一のサーバシステム内に一緒に保管され得るが、各テナントは、そのテナントに属するか、または、そのテナントによって作成されたレコードのコンテンツだけにアクセスすることができる。このことにより、サーバシステムは、例えば、別々のサーバまたはサーバシステム上に、各テナントのレコードのコンテンツを別々に保管する必要なく、マルチテナントを可能にし得る。テナントのためのデータベースは、例えば、リレーショナルデータベース、階層的データベース、または、あらゆる他の適切なデータベースタイプであり得る。サーバシステム上に保管される全てのレコードは、例えば、LSMツリーを含む、任意の適切な構造において保管され得る。
【００５１】
さらに、マルチテナントシステムは、各ノードにコンピューティングシステムを有するネットワーク全体にわたり分散されたサーバシステム上に様々なテナントインスタンスを有し得る。各テナントのライブまたはプロダクション・データベースインスタンスは、１つの特定のコンピュータシステムで処理されたトランザクションを有し得る。そのインスタンスのトランザクションを処理するためのコンピューティングシステムは、また、他のテナントのための他のインスタンスのトランザクションも処理することができる。
【００５２】
詳細な説明のうちいくつかの部分は、コンピュータメモリ内のデータ上のオペレーションに係るダイヤグラムまたは記号的な表現の見地から提示されている。これらのダイヤグラム、説明、および表現は、自身の作業のサブスタンスを他の当業者に対して最も効果的に伝達するために、データ処理技術の当業者によって一般的に使用されている。コンピュータに実装されたプロセスは、ここにあり、そして、一般的に、所望の結果へ導く自己矛盾のない一連のステップであると考えられている。ステップは、物理量の物理的なオペレーションを必要とするものである。たいてい、必ずしもそうとは限らないが、こうした量は、保管、移送、結合、比較、そして、操作されることが可能な電気的または磁気的な信号の形態をとる。主として共通利用の理由のために、これらの信号を、ビット、値、要素、記号、文字、用語、数字、等として参照することが、時には便利なことが判明している。
【００５３】
しかし、これらの用語および類似の用語の全てが、適切な物理量と関連付けられ、そして、これらの量に適用される単に便利なラベルに過ぎないことを心に留めておくべきである。上述の説明から明らかであるとして別途具体的に示されない限り、説明全体を通じて、「書き込み（“writing”）」、「読み出し（“reading”）」、「受信（“receiving”）」、「送信（“transmitting”）」、「変更（“modifying”）」、「アップデート（“updating”）」、「送付（“sending”）」、等といった用語を使用する議論は、コンピュータシステムのレジスタおよびメモリ内の物理的(例えば、電子的)量として表されるデータを、コンピュータシステムのメモリまたはレジスタ内の物理的量として同様に表される他のデータ、もしくは、情報のストレージ、送信、または表示装置といった他のものへと操作して、かつ、変換する、コンピュータシステム、または、同様な電子コンピューティングデバイスの動作およびプロセスを参照することが理解される。
【００５４】
さらに、より一般的には、本開示の技術的事項に係る様々な実施は、これらのプロセスを実施するためのコンピュータで実施されるプロセスおよび装置の態様を含み、または、その形態で実施され得る。実装は、また、フロッピー（登録商標）ディスケット、CD-ROM、ハードドライブ、USB(universal  serial  bus)ドライブ、または、あらゆる他のマシンで読取り可能な記憶媒体といった、非一時的、かつ／あるいは、有形な媒体に実装された命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態でも実装され得る。ここで、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは、開示される技術的事項の実装を行うための装置になる。実装は、また、コンピュータプログラムコードの形態でも実施されてよく、例えば、ストレージ媒体内に保管されるか、コンピュータにロードされ、かつ／あるいは、コンピュータによって実行されるか、もしくは、電気配線またはケーブルを介し、光ファイバを通じ、または、電磁放射線を介して、といった、ある伝送媒体を介して送信されるにしても、ここで、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは、開示される技術的事項の実装を行うための装置になる。――汎用マイクロプロセッサ上で実施されるとき、コンピュータプログラムコードセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータで読取り可能な記憶媒体上に保管された一式のコンピュータで読取り可能な命令は、汎用プロセッサによって実装され、それは、汎用プロセッサ、または、汎用プロセッサを含む装置を、命令を実装または実行するように構成された専用装置へと変換し得る。実装は、汎用マイクロプロセッサ、及び／又は、開示される技術的事項のハードウェア及び／又はファームウェアにおける実装に従って、技術の全部または一部を実装する特定用途向け集積回路（ASIC）といった、プロセッサを含み得るハードウェアを使用して実装され得る。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、または、電子情報を保管することができる、あらゆる他のデバイスといった、メモリに結合され得る。メモリは、開示される技術的事項の実装に従って技術を実行するために、プロセッサによって実行されるように適合された命令を保管し得る。
【００５５】
上記の記載は、説明目的のために、特定の実装を参照して説明されている。しかしながら、上記の例示的な説明は、網羅的（exhaustive）であること、または、開示される技術的事項の実施を、開示される正確な形態に限定するように意図されたものではない。多くの変更および変形が、上記の教示を考慮すると可能である。実装は、開示される技術的事項の実施に係る原理、および、それらの実際的なアプリケーションを説明するために選択され、かつ、説明されており、それによって、他の当業者は、考えられる特定の使用に適した様々な変更を伴う様々な実装と同様に、それらの実装を利用することができる。
【図１】
2022500727.tif 000002
【図２】
2022500727.tif 000003
【図３】
2022500727.tif 000004
【図４Ａ】
2022500727.tif 000005
【図４Ｂ】
2022500727.tif 000006
【図５Ａ】
2022500727.tif 000007
【図５Ｂ】
2022500727.tif 000008
【図６】
2022500727.tif 000009
【図７】
2022500727.tif 000010
【手続補正書】
【提出日】令和3年3月25日(2021.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムから１つ以上のレコードを削除する、コンピュータに実装された方法であって、
前記ストレージシステム内の第１レコードに初期フラグを設定するステップであり、前記初期フラグは、前記第１レコードが、あらゆる他のアクティブレコードと関連付けられていない第１キーと関連付けられていることを示している、ステップと、
前記ストレージシステム内の第２レコードに削除フラグを設定するステップであり、前記第２レコードは、前記第１キーと関連付けられており、かつ、前記削除フラグは、前記第１キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示している、ステップと、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の１つ以上のレコードのセットを選択するステップであり、前記１つ以上のレコードそれぞれは、前記第１キーと関連付けられている、ステップと、
前記マージオペレーションを実行するステップであり、前記初期フラグセットを有している前記第１レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグセットを有している前記第２レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記第２レコードが、前記マージオペレーションの最中に前記エクステントへ書き込まれない、ステップと、
を含む、方法。
【請求項２】
前記第１レコードおよび前記第２レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項１に記載の方法。
【請求項３】
前記１つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項１に記載の方法。
【請求項４】
前記方法は、さらに、
第３レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第３レコードに初期フラグを設定するステップ、
を含む、請求項１に記載の方法。
【請求項５】
前記方法は、さらに、
前記第１レコードに前記初期フラグを設定するステップの以前に、
前記ストレージシステム内の前記第１レコードと同一のキーを有するアクティブレコードについてサーチを実行するステップと、
前記サーチが、前記ストレージシステム内に保管された、前記第１レコードと同一のキーを有するレコードをもたらさない場合に、前記第１レコードの初期フラグを設定するステップと、
を含む、請求項１に記載の方法。
【請求項６】
前記サーチ、および、前記第１レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項１に記載の方法。
【請求項７】
ターゲットエクステントへのマージオペレーションの最中に、ログ構造化マージ(LSM)ツリーベースのストレージシステムにおける１つ以上のレコードを管理する、コンピュータに実装された方法であって、
時間的な範囲内にある１つ以上のレコードを選択するステップと、
１つ以上のレコードの前記範囲内から、同一のキーを持つ１つ以上のレコードを選択するステップであり、時間的な順序で編成された複製セットを形成する、ステップと、
前記複製セットから最新のレコードRを分離するステップであり、残りの複製セットのレコードからプルーンセットを形成する、ステップと、
前記プルーンセットを前記ターゲットエクステントへ書き込まないことによって、前記プルーンセットを破棄するステップと、
Rがツームストーンであり、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを破棄するステップと、を含み、
前記ツームストーンは、ツームストーンと関連するキーに対応している値が削除されたことを示すレコードであり、かつ、
前記初期レコードは、初期レコードが挿入されたときに、システム内の他のアクティブレコードが該初期レコードと関連する同一のキーと関連していないことを示す指定を含むレコードである、
方法。
【請求項８】
前記方法は、さらに、
Rがツームストーンであり、かつ、前記ターゲットエクステントが前記システム内で最低レベルのエクステントである場合に、前記ターゲットエクステントへRを書き込まないことによって、Rを廃棄するステップ、を含む、
請求項７に記載の方法。
【請求項９】
前記方法は、さらに、
前記プルーンセットが空であり、かつ、Rが、ツームストーンおよび初期レコードの両方である場合に、Rを廃棄するステップ、を含む、
請求項７に記載の方法。
【請求項１０】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンではなく、かつ、前記プルーンセット内の最古のレコードが初期レコードである場合に、初期レコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項７に記載の方法。
【請求項１１】
前記方法は、さらに、
Rが廃棄されず、かつ、Rがツームストーンである場合に、ツームストーンレコードとして指定された前記ターゲットエクステントへRを書き込むステップ、を含む、
請求項７に記載の方法。
【請求項１２】
ストレージシステムであって、
コンピュータ実行可能命令を保管する少なくとも１つのメモリと、
複数のレコードを保管するデータベースと、
前記少なくとも１つのメモリにアクセスし、かつ、前記コンピュータ実行可能命令を実行するように構成されている、少なくとも１つのプロセッサと、を含み、
前記コンピュータ実行可能命令が実行されると、前記少なくとも１つのプロセッサは、
前記ストレージシステム内の第１レコードに初期フラグを設定し、前記初期フラグは、前記第１レコードが、あらゆる他のアクティブレコードと関連付けられていない第１キーと関連付けられていることを示しており、
前記ストレージシステム内の第２レコードに削除フラグを設定し、前記第２レコードは、前記第１キーと関連付けられており、かつ、前記削除フラグは、前記第１キーと関連付けられた値が前記ストレージシステムから削除されるように指定されていることを示しており、
マージオペレーションにおいて前記ストレージシステムのエクステントへ書き込まれるストレージシステム内の１つ以上のレコードのセットを選択し、前記１つ以上のレコードそれぞれは、前記第１キーと関連付けられており、かつ、
前記マージオペレーションを実行し、前記第２レコードは、前記初期フラグセットを有している前記第１レコードが前記セットにおいて最古のレコードであり、かつ、前記削除フラグセットを有している前記第２レコードが前記セットにおいて最新のレコードであるとの判断に、少なくとも部分的に基づいて、前記マージオペレーションの最中に前記エクステントへ書き込まれない、
ように構成されている、
ストレージシステム。
【請求項１３】
前記第１レコードおよび前記第２レコードは、同一のレコードであり、前記セットにおける唯一のレコードである、
請求項１２に記載のストレージシステム。
【請求項１４】
前記１つ以上のレコードのセットは、スキャンオペレーションが開始された時点Tの後である関連するトランザクション時間を有することに基づいて、全てが選択されている、
請求項１２に記載のストレージシステム。
【請求項１５】
前記プロセッサは、さらに、
第３レコードが前記セット内の最古のレコードであり、かつ、前記マージオペレーションが前記ストレージシステム内の最低のエクステントへとレコードを書き込むときに、前記第３レコードに初期フラグを設定する、
ように構成されている、
請求項１２に記載のストレージシステム。
【請求項１６】
前記プロセッサは、さらに、
前記第１レコードに前記初期フラグを設定する以前に、
前記ストレージシステム内の前記第１レコードと同一のキーを有するアクティブレコードについてサーチし、かつ、
前記サーチが、前記ストレージシステム内に保管された、前記第１レコードと同一のキーを有するレコードをもたらさない場合に、前記第１レコードの初期フラグを設定する、
ように構成されている、
請求項１２に記載のストレージシステム。
【請求項１７】
前記サーチ、および、前記第１レコード内の前記初期フラグの設定に係る決定は、前記第1レコードが前記ストレージシステムの中へ挿入されるときに発生する、
請求項１２に記載のストレージシステム。
【国際調査報告】
2022500727.tif 000011
2022500727.tif 000012