JP2016524250A - 複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージ - Google Patents

複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージ Download PDF

Info

Publication number
JP2016524250A
JP2016524250A JP2016521827A JP2016521827A JP2016524250A JP 2016524250 A JP2016524250 A JP 2016524250A JP 2016521827 A JP2016521827 A JP 2016521827A JP 2016521827 A JP2016521827 A JP 2016521827A JP 2016524250 A JP2016524250 A JP 2016524250A
Authority
JP
Japan
Prior art keywords
page
storage
data
manager
exemplary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016521827A
Other languages
English (en)
Other versions
JP6408568B2 (ja
JP2016524250A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016524250A publication Critical patent/JP2016524250A/ja
Publication of JP2016524250A5 publication Critical patent/JP2016524250A5/ja
Application granted granted Critical
Publication of JP6408568B2 publication Critical patent/JP6408568B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Packages (AREA)
  • Medical Preparation Storing Or Oral Administration Devices (AREA)

Abstract

データマネージャーが、任意に選択されたページ指向型アクセスメソッドに、ページデータストレージに対するラッチフリーのアクセスを含むページデータストレージに対するインターフェースアクセスをもたらすように構成されたデータ不透明型インターフェースを含み得る。別の態様において、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページの一部分をスワップすることが、第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することを開始することであって、その部分的スワップデルタレコードは、第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示すメインメモリーアドレスを含むことに基づいて、開始され得る。別の態様において、ページマネージャーが、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページをフラッシュする操作を、フラッシュデルタレコードに対するアトミック操作に基づいて、開始することが可能である。

Description

[0001]電子デバイスのユーザーは、しばしば、様々なタイプの情報を獲得するのにデータベースシステムにアクセスする必要がある。データ項目を記憶するため、および取り出すための多くの異なる技法が考案されてきた。例えば、一部の最新のハードウェアプラットフォームは、より高いパフォーマンスをもたらそうとしてマルチコアプロセッサー、多層メモリー階層、ならびにフラッシュなどの二次ストレージデバイスなどの最新のハードウェア開発を活用してきた。このことは、潜在的なシステムパフォーマンスを向上させてきたが、システムが、新たに開発されたプラットフォーム態様、および従来のプラットフォーム態様を有効に利用することは困難であった。
[0002]1つの一般的な態様によれば、システムが、少なくとも1つのプロセッサーを含むデバイスを含むことが可能であり、そのデバイスは、その少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含む。データマネージャーは、任意に選択されたページ指向型アクセスメソッドに、ページデータストレージに対するラッチフリー(latch-free)のアクセスを含むページデータストレージに対するインターフェースアクセスをもたらすように構成されたデータ不透明型インターフェース(data opaque interface)を含み得る。
[0003]別の態様によれば、システムが、少なくとも1つのプロセッサーを含むデバイスを含むことが可能であり、そのデバイスは、その少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含む。データマネージャーは、コンペア・アンド・スワップ(CAS:Compare and swap)操作を介して、マッピングテーブルの中でフラッシュデルタレコードにポインターをインストールすることに基づいて、二次ストレージにページ状態をフラッシュするように構成されたページマネージャーを含むことが可能であり、そのフラッシュデルタレコードは、CAS操作を介してマッピングテーブルの中で置き換えられる既存のページ状態の先頭に付加される。
[0004]別の態様によれば、システムが、少なくとも1つのプロセッサーを含むデバイスを含むことが可能であり、そのデバイスは、その少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含む。データマネージャーは、コンペア・アンド・スワップ(CAS)操作を介して、二次ストレージバッファーの中に第1のページのページ状態をコピーすることを開始すること、そのページ状態の先頭にフラッシュデルタレコードを付加することを開始することであって、そのフラッシュデルタレコードは、二次ストレージ内の第1のページのストレージロケーションを示す二次ストレージアドレスと、呼び出し元に関連付けられた注釈とを含むこと、およびマッピングテーブルの中にフラッシュデルタレコードのアドレスをインストールすることに基づいてページ状態をアップデートすることを開始することに基づいて、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページをフラッシュする操作を開始するように構成されたページマネージャーを含み得る。
[0005]別の態様によれば、システムが、少なくとも1つのプロセッサーを含むデバイスを含むことが可能であり、そのデバイスは、その少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含む。データマネージャーは、ラッチフリーのアップデート操作を介してログ構造化二次ストレージバッファーに対するアップデートを制御するように構成されたバッファーマネージャーを含み得る。
[0006]別の態様によれば、システムが、少なくとも1つのプロセッサーを含むデバイスを含むことが可能であり、そのデバイスは、その少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含む。データマネージャーは、第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することを開始することであって、その部分的スワップデルタレコードは、第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示すメインメモリーアドレスを含むことに基づいて、二次ストレージ内のロケーションに対してキャッシュ層ストレージ内の第1のページの一部分をスワップする操作を開始するように構成されたページマネージャーを含み得る。
[0007]この概要は、詳細な説明において後段でさらに説明される選定された概念を、簡略化された形態で概説するように与えられる。この概要は、主張される主題の重要な特徴または不可欠な特徴を特定することは意図しておらず、主張される主題の範囲を限定するのに使用されることも意図していない。1つまたは複数の実施形態の詳細は、添付の図面、および後段の説明において示される。その他の特徴が、説明および図面、ならびに特許請求の範囲から明白となろう。
[0008]キャッシュ/ストレージ層に関するアクセスメソッドのための例示的なアーキテクチャー階層化を示す図である。 [0009]複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージのための例示的なアーキテクチャーを示すブロック図である。 [0010]例示的なマッピングテーブルを示す図である。 [0011]例示的なマッピングテーブル上の例示的なデルタアップデートを示す図である。 例示的なマッピングテーブル上の例示的なデルタアップデートを示す図である。 [0012]例示的な部分的ページスワップアウトおよび例示的な部分的スワップデルタを示す図である。 [0013]例示的なエポック、およびそれらのエポックのそれぞれのガベージコレクションリストを示す図である。 [0014]フラッシュ上の例示的なログ構造化ストレージ編成を示す図である。 フラッシュ上の例示的なログ構造化ストレージ編成を示す図である。 フラッシュ上の例示的なログ構造化ストレージ編成を示す図である。 [0015]例示的なフラッシュバッファー状態を示す図である。 [0016]例示的なトランザクションテンプレートを示す図である。 [0017]例示的なチェックポイントデータを示す図である。 [0018]複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージのための例示的なシステムを示すブロック図である。 [0019]図11のシステムの例示的な動作を示すフローチャートである。 図11のシステムの例示的な動作を示すフローチャートである。 図11のシステムの例示的な動作を示すフローチャートである。 図11のシステムの例示的な動作を示すフローチャートである。
[0020]I.概説
ハードウェアプラットフォームの最新の開発は、より高いパフォーマンスをもたらそうとしてマルチコアプロセッサー、多層メモリー階層、ならびにフラッシュなどの二次ストレージデバイスを活用してきた。例えば、中央処理装置(CPU)変更は、マルチコアプロセッサー、ならびに複数のレベルのキャッシングが関与するメインメモリーアクセスを含む。例えば、フラッシュストレージ、ならびに容量を低下させるアップデート・インプレース(update-in-place)を行うハードディスクベンダ認識は、ログ構造化をより多く使用することにつながってきた。例えば、クラウドデータセンターは、システムスケールを増大させ、コモディティハードウェアの使用は、高い利用可能性技法により大きな重きを置く。
[0021]しかし、潜在的なシステムパフォーマンスが向上する一方で、システムが、これらの最新のプラットフォーム態様を有効に利用することは困難であり得る。例えば、大量のデータにアクセスする複数のユーザーをサポートするデータ指向型システムは、過去に長年、存在してきたとおりのハードウェアのために設計されたソフトウェアアーキテクチャーを活用する可能性がある(例えば、それらのシステムは、単一レベルメモリー(プロセッサーキャッシングをほとんど行わず、メインメモリーに対して控えめな潜時しか有さない)上で動作し、磁気ディスクにアクセスして、ユニプロセッサーをターゲットにすることが可能である)。
[0022]そのアプローチを変えようとする取組みは、環境を改善してきたが、相変わらず、相当な潜在的パフォーマンス利得を逃している。例えば、データ競合にアクセスする際、ブロッキングを生じさせるラッチを回避する取組みが行われてきたが、これらの取組みには、スレッドがそのような競合を回避するようにパーティションすることが関与してきた可能性があり、このことは、相当なオーバーヘッドをもたらし得る。例えば、データのアップデート・インプレースを行うことは、メモリーパフォーマンスに悪影響を及ぼす可能性があり、このことは、キャッシュ・ライン・アラインメント(cache line alignment)を配慮すること、およびベクトルにわたる二分探索の代わりにローカルツリーを使用することにつながり得る。しかし、不利に多くのアップデート・インプレースが相変わらず行われ、このことが、例えば、キャッシュ無効化を介して、プロセッサー・キャッシング・パフォーマンスに悪影響を及ぼす。さらに、実施形態が、フラッシュを、フラッシュのより高い毎秒アクセス数、およびより低いアクセス潜時のために活用し始めている。しかし、ランダムなアップデートは、フラッシュ変換層を使用してさえ、比較的高価であり得る。
[0023]J.Levandoski他、「Deuteronomy:Transaction Support for Cloud Data(Deuteronomy:クラウドデータのためのトランザクションサポート)」、Conference on Innovative Data Systems Research(CIDR)(2011年1月)、123〜133ページ、およびD.Lomet他、「Unbundling Transaction Services in the Cloud(クラウドにおけるトランザクションサービスのアンバンドリング)」、Conference on Innovative Data Systems Research(CIDR)、2009年が、クラウド環境において一貫性(すなわち、トランザクション)をもたらすための例示的な技法を説明する。本明細書で説明される例示的な技法は、例示的なDEUTERONOMYデータコンポーネント(DC)、および現在のハードウェア上でそのDCのパフォーマンスを最大にすることに焦点を合わせる。例えば、DCが、CRUD(作成、読取り、アップデート、削除)アトミック操作を介してアクセスされるデータの記憶および取出しを管理することが可能である。例えば、DCは、DCの上のソフトウェア層(例えば、DEUTERONOMYトランザクションコンポーネント(TC)および/またはクエリエンジン)を介して融合されて分散システムにされ得るローカル機構を代わりに使用して、非分散型であってもよい。
[0024]本明細書でさらに説明されるとおり、アクセスメソッド(例えば、Bツリー、ハッシング、マルチ属性、時間的、その他)に影響を及ぼし得る、現在のハードウェアによってもたらされる問題が存在するように思われる。さらに、本明細書で説明されるとおり、これらの問題は、ほとんどの(例えば、任意に選択された)アクセスメソッドに適用可能である例示的な一般的な機構を用いて解決され得る。
[0025]例えば、本明細書で説明される例示的な技法によれば、ラッチフリーの技法は、マルチコアプロセッサーを用いて有利なプロセッサー利用およびスケーリングを実現するのに利用され得る。例えば、本明細書で説明されるとおり、キャッシュ無効化を少なくするデルタアップデートが、マルチレベルキャッシュベースのメモリーシステムを用いて有利なパフォーマンスを実現するのに利用され得る。例えば、ランダム書込みの限られたパフォーマンス、およびフラッシュ書込み限度を有する書込み制限されたストレージが、ログ構造化を介して克服され得る。
[0026]例えば、BW−TREE(例えば、J.Levandoski他、「The Bw−Tree:A B−tree for New Hardware Platforms(Bw−Tree:新しいハードウェアプラットフォームのためのBツリー)」、29th IEEE International Conference on Data Engineering(ICDE 2013)、2013年4月8〜11日参照)、Bツリーといくぶん似通ったインデックス(例えば、R.Bayer他、「Organization and Maintenance of Large Ordered Indices(大次数インデックスの編成および管理)」、Acta Informatica、Vol.1、Issue 3、1972、173〜189ページ、およびD.Comer、「The Ubiquitous B−tree(ユビキタスBツリー)」、ACM Computing Surveys(CSUR)、Vol.11、Issue 2、1979年6月、121〜137ページ参照)が、これらの例示的な技法を活用することが可能なDCまたはキー・バリューストア(key-value store)の例である。例示的なBW−TREEには、ラッチフリーダムであることおよびログ構造化をより一般的に実現するための技法のためのパラダイムが関与し得る。本明細書で説明される例示的な技法によれば、ラッチフリーの技法およびログ構造技法は、従来のキャッシュ/ストレージサブシステムが、アップデート・インプレースとしてディスクにライトバック(write back)される固定サイズページに対するラッチアクセス(latched access)を扱い得るのといくぶん似通った様態で複数のアクセスメソッドをサポートすることができるキャッシュ/ストレージサブシステムにおいて実施され得る。
[0027]本明細書で説明される例示的な技法によれば、LLAMA(Latch−free,Log−structured Access Method Aware)と本明細書で呼ばれ得る例示的なシステムが、最近、開発されたハードウェア環境(例えば、フラッシュ、マルチコア)のためのキャッシング−ストレージサブシステムを(少なくとも)含み、ただし、そのような例示的な技法は、最近、開発されたハードウェアだけに限定されないことがデータ処理の分野の業者には理解されよう。
[0028]例えば、LLAMAは、プロセッサーキャッシュおよび二次ストレージを最適化して、キャッシュ管理とストレージ管理の両方をもたらす任意に選択されたページ指向型アクセスメソッドのためのアプリケーションプログラミングインターフェース(API)をサポートすることが可能である。例えば、キャッシング(CL)層とストレージ(SL)層が、ページの論理ロケーションと物理ロケーションを分離する共通のマッピングテーブルを使用することが可能である。例えば、キャッシュ層(CL)が、キャッシュ層(CL)のマッピングテーブル上のラッチフリーのコンペア・アンド・スワップ・アトミック状態変化を介してデータアップデートおよび管理アップデート(例えば、インデックス再編成のための)をサポートすることが可能である。
[0029]例えば、ストレージ層(SL)が、ページフラッシュごとにログ構造化することによってもたらされるページロケーション変化を扱うのに同一のマッピングテーブルを使用することが可能である。例えば、ラッチフリーのBW−TREE実施形態(例えば、順序付けられたBツリー型インデックスの例としてBW−TREEを使用する実施形態)が使用され得る。この脈絡において、「フラッシュする」操作とは、メインメモリー(例えば、キャッシュストレージ)からのページを、そのページを出力バッファーにコピーすることによって、二次ストレージに転送することを指すことが可能である。
[0030]本明細書で説明される例示的な技法は、ページのロケーションとサイズの両方を視覚化し得るマッピングテーブルをもたらすことが可能である。例えば、そのような視覚化は、本明細書でさらに説明されるとおり、メインメモリー設計と安定したストレージ設計(例えば、ログ構造化ストレージ設計)の両方のために利用され得る。
[0031]この脈絡において、「ページ」とは、物理ストレージアドレスを介してアクセスされ得るストレージ内のオブジェクトを指すことが可能である。本明細書で使用される「ページ」は、柔軟性のあるサイズに関連付けられることが可能であり、ストレージの複数の不連続に記憶されたセグメントにわたって分散することが可能なストレージのページ単位を表すことが可能である。ストレージには、揮発性ストレージおよび/または安定したストレージが含まれ得る。
[0032]本明細書で説明される例示的な技法は、アクセスメソッド層をキャッシュ/ストレージ管理から分離することが可能である。例として、本明細書で説明される技法は、先行書込みログプロトコル(write-ahead log protocol)を執行するのに使用され得る。例えば、ページをフラッシュするのに先立って、従来のデータベースカーネルは、ページログシーケンスナンバー(LSN)を調べて、トランザクションログにおいてまだ安定していないアップデートが存在するかどうかを判定することが可能である。例えば、LLAMAキャッシュ管理は、例示的なデルタアップデートを活用して、部分的ページを「スワップアウトする」ことが可能である。例えば、LLAMAキャッシュ管理は、二次ストレージ上に既に存在するページの部分(最近のデルタアップデートを含まない)をキャッシュからドロップすることができる。例えば、アクセスメソッド層が、トランザクション・ログ・チェックポインティングのために定期的にフラッシュされる。このため、キャッシュマネージャーは、任意のバッファーサイズ制約を満足させるのに十分な候補(場合により、部分的な)ページを見出す。
[0033]本明細書で説明される例示的な技法は、相当な数のアクセスメソッド(すなわち、単一のインスタンスだけでない)がこれらの技法を活用することを、これらの技法をもたらすサブシステム層を実施することによって可能にするフレームワークを提供することが可能である。さらに、有利な効率をもたらす二次ストレージにデータを書き込むためのログ構造化ストアが実施されることが可能である。したがって、アクセスメソッドは、アクセスメソッドのインデックスのメインメモリー態様に焦点を合わせることが可能であり、本明細書で説明される例示的な技法は、BW−TREEのパフォーマンスメトリックと同様のパフォーマンスメトリックを実現するためのフレームワークをもたらすことが可能である。
[0034]例えば、LLAMAなどの技法が、その技法のAPIを介して、ラッチフリーのページアップデートをもたらすことが可能であり、このことは、マッピングテーブル上のコンペア・アンド・スワップ(CAS)アトミック操作を介してメインメモリーの中で達せられる。
[0035]例えば、キャッシュを管理する際に、LLAMAなどの技法は、ページの以前にフラッシュされた部分だけをメモリーからドロップすることによって、メインメモリーを取り戻すことが可能であり、このため、「汚れた」ページをスワップアウトする場合でさえ、入出力(I/O)操作がまったく関与しない。このため、LLAMAなどの技法は、その技法のアクセスメソッドユーザーからの入力なしに、その技法のバッファー・キャッシュ・メモリー・サイズを制御できることが可能である。
[0036]例えば、二次ストレージの効果的な管理のために、LLAMAなどの技法が、ログ構造化を利用することが可能である。例えば、LLAMAなどの技法が、部分的ページフラッシュ、および実質的に空きスペースのない、すなわち、実質的に100%ストレージ利用率のページを使用することによって、従来のログ構造化と比べてパフォーマンスを向上させることが可能である。これらは、ページがフラッシュされる際の入出力操作(I/O)の回数、および1ページ当たり消費されるストレージの量を減らすことが可能であり、したがって、ログ構造化が使用される場合に経験され得るライトアンプリフィケーション(write amplification)を減らすことが可能である。さらに、すべてのストレージ関連の操作が、完全にラッチフリーであることが可能である。
[0037]例えば、LLAMAなどの技法が、(少なくとも)制限された形態のシステムトランザクションをもたらすことが可能である。この意味で、システムトランザクションは、ユーザーレベルトランザクションではなく、むしろ、ログ構造化ストアを活用して、もっぱら、アクセスメソッドの「プライベート使用」のため(例えば、インデックス構造変更(SMO)のため)にアトミック性をもたらす。例えば、このことは、同時に行われるアップデートが続けられる間にインデックスが成長するにつれ、インデックスが適応することを可能にし得る。
[0038]例えば、BW−TREE構造は、あるタイプのラッチフリーのBツリー構造を含み得る。例えば、BW−TREEノードに対するアップデートが、それまでのページ状態の先頭にアップデートデルタを付加することに基づいて実行され得る。このため、BW−TREEは、複数のスレッドによるページに対する同時に行われるアクセスを許すことが可能であるので、ラッチフリーであり得る。そのようなデルタアップデートは、ページのそれまでの状態を保存するため、向上したプロセッサーキャッシュパフォーマンスをもたらすことも可能である。
[0039]BW−TREEを使用する例示的な技法は、やはりラッチフリーであり、Bリンクツリー型サイドポインターを使用することが可能なページ分割技法をさらにもたらし得る。分割(および他の構造変更操作)は、メインメモリー内部でも、安定させられる際もともにアトミックであり得る。例えば、アトミックレコードストアが、BW−TREEアーキテクチャーに基づいて実施され得る。
[0040]本明細書の説明の趣旨を逸脱することなく、本明細書で説明されるラッチフリーのログ構造化ストレージを実現する多くの方法が存在し得ることが、データ処理の分野の業者には理解されよう。
[0041]II.例示的な動作環境
本明細書で説明される特徴は、本明細書の説明の趣旨を逸脱することなく、データ処理の分野の業者によって理解され得る多くの異なる方法において実施され得る例示的な実施形態として与えられる。そのような特徴は、例示的な実施形態特徴としてのみ解釈されるべきであり、それらの詳細な説明だけに限定されるものと解釈されることは意図していない。
[0042]図1は、キャッシュ/ストレージ層に関するアクセスメソッドのための例示的なアーキテクチャー階層化を示す。アクセスメソッド層102は、図1に示されるとおり、最上位層である。アクセスメソッド層102は、中位層であるキャッシュ層104と対話する。アプリケーションプログラミングインターフェース(API)106が、アクセスメソッド層102とキャッシュ層104の間の活動のために使用され得る。例示的なストレージ層108が、マッピングテーブル110と対話することが可能であり、マッピングテーブル110は、キャッシュ層104とストレージ層108の間で共有され得る。例えば、LLAMA112が、キャッシュ層104およびストレージ層108を含む。例えば、ストレージ層が、ログ構造化フラッシュストアをサポートすることが可能である。本明細書で説明される例示的な技法によれば、ログ構造化ストアが、フラッシュとディスクストレージの両方を管理することが可能である。この設計は、アーキテクチャー上、既存のデータベースカーネルと共存することが可能である一方で、スタンドアロン型またはDEUTERONOMY型のアトミックレコードストア(ARS)としても適している。
[0043]例えば、LLAMAなどの技法が、キャッシュ/ストレージ層に関するアクセスメソッド実施形態をサポートして、ページ抽象化をサポートすることが可能である。さらに、トランザクションコンポーネント(例えば、DEUTERONOMY型トランザクションコンポーネント)が上に追加され得る。図2は、複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージのための例示的なアーキテクチャーを示すブロック図である。図2に示されるとおり、トランザクションコンポーネント202が、トランザクションキー・バリューストアをサポートすることが可能であり、アトミックキー・バリューストアを含み得るデータコンポーネント204と一緒に動作することが可能である。図2に示されるとおり、データコンポーネント204は、ラッチフリーの順序付けられたインデックス206および/またはラッチフリーの線形ハッシングインデックス208を含み得る。図2に示されるとおり、データコンポーネント204は、例示的なラッチフリーのログ構造化アクセスメソッドアウェア(LLAMA)ストレージエンジン210(例えば、図1のLLAMA112)をさらに含み得る。
[0044]例示的なAPI106は、「データ不透明型」であることが可能であり、すなわち、例示的なLLAMA実施形態は、アクセスメソッド(例えば、アクセスメソッド層102の)が何をページまたはデルタレコードに入れているかを「見る」ことがなく(例えば、検査する、または分析する、または依存することがなく)、アクセスメソッドによってページまたはデルタレコードの中で何が提供されるかとは無関係に動作する。このため、本明細書で説明される例示的なLLAMA実施形態は、前述したとおり、アクセスメソッドによって何が提供されるかに依存しない特定の操作に応答して動作することが可能である。
[0045]図3に示されるとおり、ページ302が、メインメモリーキャッシュ312内で、または二次ストレージ314上で、ページ識別子(PID)306を状態308にマップする(例えば、マッピングテーブル304に記憶された「物理アドレス」310を介して)マッピングテーブル304を介してアクセスされ得る。例えば、メインメモリーキャッシュ312は、ランダムアクセスメモリー(RAM)を含み得る。例えば、二次ストレージ314は、フラッシュメモリーを含み得る。例えば、ページ302は、オンデマンドで二次ストレージ314からメインメモリーキャッシュ312に読み取られることが可能であり、ページ302は、二次ストレージ314にフラッシュされることが可能であり、ページ302は、キャッシュ312内にある間、ページ状態を変更するようにアップデートされることが可能である。例えば、実質的にすべてのページ状態変更(データ状態と管理状態の両方)は、本明細書で説明される例示的な技法により、アトミック操作として与えられ得る。図3に示されるとおり、例示的な物理アドレス310が、その物理アドレスがフラッシュまたはメモリー(例えば、キャッシュ)に関連付けられているかどうかを示すフラッシュ/メモリーフラグ316(例えば、この例に示されるとおり、1ビットに関する)を、(少なくとも)そのアドレス自体に関するアドレスフィールド318(例えば、この例に示されるとおり、63ビットに関する)と一緒に含み得る。本明細書の説明の趣旨を逸脱することなく、「物理アドレス」を表す多くの方法(例えば、64ビット表現以外の)が存在することが、データ処理の分野の業者には理解されよう。
[0046]本明細書で説明される例示的な技法によれば、LLAMAが、LLAMAのAPIを通じて、(例えば、スレッドをブロックすることによって同時に行われるアクセスからページを保護する従来のラッチの代わりに)マッピングテーブル304上でコンペア・アンド・スワップ(CAS)アトミック操作を介してラッチフリーのページアップデートをもたらすことが可能である。例えば、CAS戦略は、プロセッサー利用率を有利に高めること、およびマルチコアスケーリングを向上させることが可能である。
[0047]本明細書で説明される例示的な技法によれば、キャッシュを管理する際、LLAMAは、ページの以前にフラッシュされた部分だけをメモリーからドロップすることによって、メインメモリーを取り戻すことが可能であり、このため、「汚れた」ページをスワップアウトする場合でさえ、入出力(I/O)操作をまったく使用しない。このため、LLAMAなどの例示的なアーキテクチャーは、そのアーキテクチャーのアクセスメソッドユーザーによってページの中に記憶されたデータを検査する必要なしに、そのアーキテクチャーのバッファー・キャッシュ・メモリー・サイズを制御することが可能である(例えば、LLAMAなどの例示的なアーキテクチャーは、トランザクションおよび先行書込みロギングを意識しないので)。
[0048]LLAMAなどの例示的なアーキテクチャーは、ログ構造化を使用して二次ストレージを管理することが可能である(例えば、ランダムな書込みを回避すること、大きいマルチページバッファーを介する書込みの回数を減らすこと、およびフラッシュメモリーに関係するウェアレベリングの利点を提供して)。さらに、LLAMAなどの例示的なアーキテクチャーが、部分的ページフラッシュ、および実質的に空きスペースのない、すなわち、実質的に100%ストレージ利用率のページを用いてパフォーマンスを有利に向上させる(例えば、従来のログ構造化と比較して)ことが可能である。例えば、これらは、ページがフラッシュされる際のI/Oの回数、および1ページ当たり消費されるストレージの量を減らすことが可能であり、したがって、さもなければ、ログ構造化が使用される場合に経験され得るライトアンプリフィケーションを減らすことが可能である。さらに、実質的にすべてのストレージ関連の操作が、完全にラッチフリーであることが可能である。
[0049]さらに、LLAMAなどの例示的なアーキテクチャーが、(少なくとも)制限された形態のシステムトランザクションをサポートすることが可能である(システムトランザクションに関しては、例えば、D.Lomet他、「Unbundling Transaction Services in the Cloud(クラウドにおけるトランザクションサービスのアンバンドリング)」、Conference on Innovative Data Systems Research(CIDR)、2009参照)。例えば、システムトランザクションは、ユーザートランザクションではないことが可能であり、むしろ、もっぱら、アクセスメソッドの「プライベート使用」のため(例えば、インデックス構造変更(SMO)(C.Mohan他、「ARIES/IM:An Efficient and High Concurrency Index Management Method Using Write−Ahead Logging(ARIES/IM:先行書込みロギングを用いた効率的な高同時実行性インデックス管理方法)」、In Proceedings of the 1992 ACM SIGMOD International Conference on Management of Data(SIGMOD’92)、1992、371〜380ページ)のため)にアトミック性をもたらすことが可能である。例えば、トランザクションログとは別個に記録されたシステムトランザクションが効果的であり得るという特性が、データベースカーネルを分解することに対するDEUTERONOMYアプローチの有利な洞察の例である。
[0050]後段の説明は、LLAMAなどの例示的なアーキテクチャーを使用する際にアクセスメソッド実施者が経験し得る例示的な操作インターフェースのさらなる説明を、そのアーキテクチャーがどのように使用され得るかのさらなる説明とともに含む。後段の説明は、本明細書で説明される例示的な技法による、例示的なキャッシュ層、およびログ構造化ストレージ層の例示的な設計のさらなる説明を含む。さらに、本明細書で説明される例示的な技法による、アトミック性をもたらすものと理解され得る例示的なシステムトランザクション機構および例示的な測定に関する説明が与えられる。さらに、本明細書で説明される例示的な技法による、システムクラッシュからの例示的なログ構造化ストレージ回復に関する説明が与えられる。
[0051]LLAMAなどの例示的なシステムを設計する際、設計目標は、目標が可能な限り「汎用」であることを含むことが可能であり、このことは、ときとして、目標が可能な限り「低レベル」であることにつながる可能性がある。しかし、LLAMAなどの例示的なシステムが「汎用」であるには、そのシステムのファシリティを使用する際にアクセスメソッドが何を行うかについて可能な限りわずかしか知らずに、効果的に動作することが望ましい可能性がある。このため、LLAMAなどの例示的なシステムの動作は、キャッシュ管理、およびページのアップデートをターゲットとして、「原始的」であり得る。例えば、LLAMAなどの例示的なシステムは、SMO(例えば、ページ分割およびページマージ)のために有利に含められ得る原始的トランザクション機構をサポートするいくつかのさらなるファシリティを含み得る。
[0052]本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムが、ログシーケンスナンバー(LSN)、先行書込みロギング、またはトランザクションログに関するチェックポイントに関するインターフェースに何も含めないことが可能である。本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムは、ユーザー操作に関する冪等性試験(idempotence test)をまったく含まないことが可能である。さらに、本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムが、トランザクション回復(例えば、本明細書で説明される例示的な技法により、LLAMAなどの例示的なシステムを使用してアクセスメソッドによって扱われ得る)をまったく含まないことが可能である。
[0053]本明細書で説明される例示的な技法によれば、例示的なアクセスメソッドが、ユーザー操作に応答して状態を変更することが可能である。例えば、ユーザーが、レコードを作成すること(C)、読み取ること(R)、アップデートすること(U)、または削除すること(D)(例えば、CRUD操作)を所望する可能性がある。本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムは、これらの操作を直接にはサポートしない可能性がある。むしろ、例示的なアクセスメソッドは、これらの操作を、LLAMAページの状態に対するアップデートとして実施することが可能である。
[0054]例えば、例示的なアクセスメソッド操作の一部である構造変化が存在する可能性もある。例えば、BW−TREEページ分割には、元のページOに分割デルタを書き込んで、探索者が、新たなページが現時点で、Oの中のキーの部分的範囲に関するデータを包含することを知るようにすることが関与し得る。例えば、これらも、LLAMAページOに対するアップデートとして扱われ得る。
[0055]本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムが、2つの形態のアップデート、例えば、デルタアップデートおよび置換アップデートをサポートすることが可能である。例えば、アクセスメソッドが、ユーザーの所望に応じて、これらの形態のアップデートを活用することを選択することが可能である。例えば、BW−TREEが、一連のデルタアップデートを行い、何らかの時点で、それらのデルタアップデートを基本ページに適用することによって、そのページを「統合」し、最適化することを決定することが可能である。例えば、BW−TREEが、その後、置換アップデートを使用して、その新たな基本ページを生成することが可能である。
[0056]本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムが、本明細書で説明されるアップデート操作および置換操作の全体にわたって、ページの物理ロケーションに関する情報を二次ストレージの中に保持することが可能であり、したがって、システム100が、本明細書でさらに説明されるとおり、ページがメインメモリーキャッシュからスワップアウトされるような場合にページを再度読み取るために、およびガベージコレクションのために、二次ストレージ・ページ・ロケーション情報を有する。このため、システム100は、以前のページロケーション、および安定ページ状態情報を記憶していることが可能である。
[0057]例えば、デルタアップデートが、Update−D(PID,in−ptr,out−ptr,data)として示されることが可能である。例えば、デルタアップデートは、ページのそれまでの状態に対する変更を記述するデルタを先頭に付加することが可能である。例えば、BW−TREEの場合、Update−Dに対する「data」パラメーターは、少なくとも<lsn,key,data>を含むことが可能であり、ここで、lsnは、冪等性を可能にする。例えば、「in−ptr」は、ページのそれまでの状態をポイントし、「out−ptr」は、ページの新たな状態をポイントする。
[0058]例えば、置換アップデートが、Update−R(PID,in−ptr,out−ptr,data)として示され得る。例えば、置換アップデートが、ページに関する完全に新たな状態をもたらすことが可能である。Update−Dを使用している場合に保存されたそれまでの状態が、「data」パラメーターによって取って代わられることが可能である。このため、「data」パラメーターは、デルタが「折り込まれた」ページの状態全体を包含する。
[0059]例えば、「読取り」が、Read(PID,out−ptr)として示され得る。例えば、読取りは、「out−ptr」を介して、ページのメインメモリー内のアドレスを戻すことが可能である。そのページがメインメモリーの中にない場合、マッピングテーブルエントリーが、二次ストレージアドレスを包含することが可能である。例えば、その場合、そのページが、メインメモリーの中に読み込まれることが可能であり、マッピングテーブルが、その新たなメインメモリーアドレスでアップデートされることが可能である。
[0060]データ操作をサポートすることに加えて、本明細書で説明される例示的なシステム(例えば、LLAMA)は、ページの存在、ロケーション、および永続性を管理する操作を提供することが可能である。記憶されたデータの量を調整するのに、アクセスメソッドは、そのアクセスメソッドによって管理されるコレクションにページを足す、またはそれらのコレクションからページを引くことが可能である。状態永続性をもたらすのに、アクセスメソッドは、時々、ページを二次ストレージにフラッシュすることが可能である。この永続性を管理するのに、ページは適切に(例えば、ログシーケンス番号(lsn)を用いて)注釈を付けられることが可能である。例えば、ページマネージャーが、ページに対するフラッシュ操作、割当て操作、および解放操作を制御するように構成され得る。
[0061]例えば、フラッシュ操作が、Flush(PID、in−ptr,out−ptr,annotation)として示され得る。例えば、Flushは、ページ状態をログ構造化ストア(LSS)I/Oバッファーに入れるようにコピーすることが可能である。Flushは、デルタ(注釈を伴う)をそれまでの状態の先頭に付加するので、メインメモリーに及ぼす影響においてUpdate−Dといくぶん似通っていることが可能である。このデルタには、「フラッシュ」というタグが付けられることが可能である。本明細書で説明される例示的な技法によれば、LLAMAなどの例示的なシステムが、ページが位置するLSS二次ストレージアドレス(フラッシュオフセットと呼ばれる)、およびフラッシュデルタの中の呼び出し元「annotation」を記憶することが可能である。例えば、Flushは、戻す際、I/Oバッファーが安定していることをユーザーに保証しない可能性がある。
[0062]例えば、バッファーマネージャーが、ラッチフリーのアップデート操作を介してログ構造化二次ストレージバッファーに対するアップデートを制御するように構成され得る。このため、例えば、複数のスレッドが、ラッチフリーの操作を介してログ構造化二次ストレージバッファーを同時にアップデートすることが可能である。
[0063]例えば、「安定させる」操作が、Mk−Stable(LSS address)として示され得る。例えば、Mk_Stable操作は、LSSアドレス引数までの、LSSバッファーにフラッシュされたページが二次ストレージ上で安定していることを確実にすることが可能である。Mk_Stableが戻す際、与えられるLSS address、およびすべてのより下位のLSSアドレスは、二次ストレージ上で安定していることが確実にされる。
[0064]例えば、「高安定」操作が、Hi−Stable(out−LSS address)として示され得る。例えば、Hi_Stable操作が、二次ストレージ上で現在、安定している最上位のLSS addressを戻すことが可能である。
[0065]例えば、ページマネージャーが、第1のページのページ状態を第2のストレージバッファーに入れるようにコピーすることを開始すること、そのページ状態の先頭にフラッシュデルタレコードを付加することを開始することであって、そのフラッシュデルタレコードは、二次ストレージ内の第1のページのストレージロケーションを示す二次ストレージアドレスと、呼び出し元に関連付けられた注釈とを含むことに基づいて、キャッシュ層ストレージ内の第1のページを二次ストレージ内のロケーションにフラッシュする操作を開始するように構成され得る。
[0066]例えば、バッファーマネージャーが、第1の二次ストレージアドレス引数までの、より下位のアドレスを有する、二次ストレージバッファーにフラッシュされたページが、二次ストレージの中で安定していることを判定するための安定化操作を開始するように構成され得る。
[0067]例えば、「割り当てる」操作が、Allocate(out−PID)として示され得る。例えば、Allocate操作は、マッピングテーブルの中で割り当てられた新たなページのPIDを戻すことが可能である。すべてのそのようなページは、永続的に記憶されていることが可能であり、したがって、Allocateは、含められた操作を自動的にフラッシュすることが可能なシステムトランザクション(後段でさらに説明される)の一部として含められることが可能である。
[0068]例えば、「解放する」操作が、Free(PID)として示され得る。例えば、Free操作は、PIDによって識別されたマッピングテーブルエントリーを再使用のために利用可能にすることが可能である。メインメモリーの中で、PIDは、現在のエポック(後段でさらに説明される)に関するPIDに関する待ち状態の解放リスト上に置かれ得る。この場合も、アクティブなページは記憶されていることが可能であるため、Freeは、システムトランザクションの一部として含められることが可能である。
[0069]本明細書で説明される例示的な技法によれば、例示的なLLAMAシステムトランザクションが、構造変更(例えば、SMO)に関する相対的な持続性およびアトミック性(すべてまたは無)をもたらすのに使用され得る。例えば、LSS、およびLSSのページ指向型レコードが、「ログレコード」として使用され得る。例えば、トランザクション内のすべての操作が、キャッシュ内のページ状態を変更することに加えて、メモリー内LSS I/Oバッファーに自動的にフラッシュされ得る。例えば、各LSSエントリーが、厳密に「ページ」ストアである例示的なLSSに関して、ページの状態を含み得る。
[0070]メインメモリーの中で、トランザクション内のすべてのそのような操作が、後段でさらに説明されるとおり、トランザクションコミットまで、隔離されたままに保たれ得る。例えば、コミット時に、トランザクションにおけるすべてのページ変更が、LSSバッファーに自動的にフラッシュされ得る。例えば、中途終了時に、すべての変更が破棄され得る。例えば、システムトランザクションマネージャーが、トランザクションをコミットすること、およびトランザクションを中途終了することを行うように構成され得る。
[0071]例えば、システムトランザクションが、LLAMAによってサポートされる操作を介して開始されること、および終了されることが可能である。
[0072]例えば、「トランザクション開始」操作が、TBegin(out−TID)として示され得る。例えば、トランザクションID(TID)によって識別されたトランザクションが開始され得る。このことには、TIDを、例示的なLLAMAキャッシュ層(CL)マネージャーによって保持されるアクティブトランザクションテーブル(ATT)に入力することが関与し得る。
[0073]例えば、「トランザクションコミット」操作が、TCommit(TID)として示され得る。例えば、そのトランザクションが、アクティブトランザクションテーブルから取り除かれることが可能であり、そのトランザクションが、コミットされることが可能である。例えば、そのトランザクションにおけるページ状態変更が、マッピングテーブルにインストールされて、LSSバッファーにフラッシュされることが可能である。
[0074]例えば、「トランザクション中途終了」操作は、TAbort(TID)として示され得る。例えば、そのトランザクションが、アクティブトランザクションテーブルから取り除かれることが可能であり、変更されたページが、キャッシュの中で「トランザクション開始」にリセットされることが可能であり、変更は、まったくフラッシュされない。
[0075]本明細書で説明される例示的な技法によれば、AllocateおよびFreeに加えて、Update−D操作が、ページ状態を変更することをトランザクション内で許され得る。例えば、Update−Rは、後段でさらに説明されるとおり、トランザクションを元に戻すことを複雑にする可能性があるので、使用されないことが可能である。
[0076]本明細書で説明される例示的な技法によれば、トランザクション操作はすべて、入力パラメーター、すなわち、TIDおよびannotationを有し得る。例えば、TIDは、キャッシュ内のデルタに追加されることが可能であり、annotationは、トランザクションにおいてアップデートされた各ページに追加されることが可能である(例えば、annotationがフラッシュされているかのように)。フラッシュバッファーの中にインストールされ、コミットされる場合、キャッシュ内のすべてのアップデートされたページは、それらのページのロケーションを記述するフラッシュデルタが先頭に付加されることが可能である(例えば、それらのフラッシュデルタが、トランザクションとは無関係にフラッシュされるかのように)。
[0077]BW−TREE(例えば、J.Levandoski他、「The Bw−Tree:A B−tree for New Hardware Platforms(Bw−Tree:新しいハードウェアプラットフォームのためのBツリー)」、29th IEEE International Conference on Data Engineering(ICDE 2013)、2013年4月8〜11日参照)が、ユーザートランザクションがサポートされる(例えば、トランザクションコンポーネント202のために)ことを可能にし得る例示的なキー・バリューストアをもたらすことが可能である。例えば、BW−TREEは、LSNを管理し、先行書込みログ(WAL)プロトコルを執行し、DEUTERONOMYデータコンポーネント(DC)(J.Levandoski他、「Deuteronomy:Transaction Support for Cloud Data(Deuteronomy:クラウドデータのためのトランザクションサポート)」、Conference on Innovative Data Systems Research(CIDR)(2011年1月)、123〜133ページ、およびD.Lomet他、「Unbundling Transaction Services in the Cloud(クラウドにおけるトランザクションサービスのアンバンドリング)」、Conference on Innovative Data Systems Research(CIDR)、2009年参照)によって予期されるとおり、チェックポインティング要求に応答することが可能である。本明細書の説明は、BW−TREEが、LLAMAなどの例示的なシステムを使用している場合に、どのように前述のことを実現するかを扱うことを含む。
[0078]Update−DおよびUpdate−R LLAMA操作に対する「データ」コンテンツは、キー、LSN、およびキー・バリューストアの「データ部分」を含み得る。例えば、BW−TREEは、このため、これらの操作を介して、キー・バリューストアを実施し、LSNを介して冪等性をもたらし、Update−Dを介してインクリメンタルアップデートを実行し、Update−Rを介してBW−TREEのページ統合を実行し、LLAMA Read操作またはFlush操作を使用して読取りまたは書込みのためにページにアクセスすることが可能である。例えば、システムは、アップデートデルタレコード操作および置換アップデート操作に基づいてアップデートを制御するように構成され得るレコードマネージャーを含み得る。
[0079]例えば、アクセスメソッドが、そのアクセスメソッドがアップデート操作を介してLLAMAにもたらすデータの中にLSNを記憶することが可能である。さらに、フラッシュデルタの中に記憶されたFlush操作annotationパラメーターが、ページコンテンツを記述するさらなる情報をもたらすことが可能である。例えば、これらは、BW−TREEが先行書込みロギング(WAL)を執行することを可能にし得る。例えば、安定させる操作(例えば、Mk−Stable)が、ページをフラッシュした後、トランザクションログチェックポインティングのためにアップデートを安定させることが可能である。
[0080]例えば、Allocate操作およびFree操作が、例示的なBW−TREE実施形態がその実施形態のツリーを成長させること、または縮小することを可能にし得る。例えば、BeginTrans(例えば、TBegin)およびコミット/中途終了(例えば、TCommit/TAbort)が、構造変更操作(SMO)を実行している際に予期されるアトミック性を可能にし得る。
[0081]例えば、アップデート操作(例えば、Update−D/Update−R)は、「ユーザーレベル」データに限定されないことが可能である。例えば、BW−TREEが、Update−Dを使用して、システムトランザクションに関して、後段でさらに説明されるとおり、SMOを実施している際にBW−TREEの「マージ」デルタおよび「分割」デルタを書き込むことが可能である。
[0082]本明細書で説明される例示的な技法によれば、キャッシュ層データ操作に関して、ページアップデートは、図4に示されるとおり、デルタアップデートであれ、置換アップデート(例えば、図7に関連して後段でさらに説明される)であれ、コンペア・アンド・スワップ(CAS)操作を使用してマッピングテーブル304の中に新たなページ状態ポインター402をインストールすることによって達せられることが可能である。例えば、置換アップデート(例えば、Update−R(PID,in−ptr,out−ptr,data))が、所望される新たな状態と、LSS内のそのページのそれまでの状態のロケーションの両方を含み得る。例えば、新たなアップデートデルタ404(例えば、Update−D(PID,in−ptr,out−ptr,data))が、このLSSロケーションを既に含む、ページ302のそれまでの状態406をポイントする。
[0083]例えば、そのようなラッチフリーアプローチは、ラッチすることによって生じる遅延を回避することが可能であるが、「楽観的」同時実行制御メソッドと同様に、そのアプローチ独自のペナルティを受ける可能性があり、すなわち、CASが失敗する可能性があり、その場合、アップデートは、再試行される。例えば、CASの操作を適宜、再試行することは、障害が生じた場合に例示的なLLAMA実施形態が示し得るとおり、例示的なLLAMAユーザーに任せられる可能性がある。
[0084]本明細書で説明される例示的な技法によれば、データがキャッシュ(例えば、312)内にある場合、ブロックする操作は存在しない可能性があるが、二次ストレージからページを読み取ることには、キャッシュ内にページが出現するのを待つことが関与する可能性がある。マッピングテーブル(例えば、マッピングテーブル304)が、前述したとおり、キャッシュされたページに関してさえ、LSSページをポイントして、ページが、効果的なキャッシュ管理のためにキャッシュとLSSの間で移動されることを可能にする。
[0085]本明細書で説明される例示的な技法によれば、ページがフラッシュされる際、例示的なLLAMA実施形態が、キャッシュ(例えば、312)内で代表されているものが、LSS(例えば、314)内にあるものと合致することを確実にすることが可能である。このため、フラッシュデルタは、PIDとLSSオフセットの両方をフラッシュデルタの中に含めることが可能であり、そのデルタを、ページ302の先頭に付加することによってLSSバッファーおよびキャッシュ(例えば、312)の中に含めることが可能である。
[0086]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態は、デルタアップデートをサポートし得るため、ページ状態は、不連続の断片を含み得る。この特徴をフラッシュする活動と組み合わせることにより、最近のアップデートがキャッシュ内だけに存在し得る一方で、キャッシュ内ページがページの状態の一部をLSSの中に有する(以前にフラッシュされていて)ことがもたらされ得る。このことが生じると、次のフラッシュのストレージ費用を低減することが可能であり得る。
[0087]このため、例示的なLLAMA実施形態が、以前のフラッシュ以来の変更だけを含むデルタを書き込むことによって、そのようなページをフラッシュすることが可能である。例えば、キャッシュ内の複数のアップデートデルタがすべて、隣接する形態のデルタ(本明細書で「Cデルタ」と呼ばれ得る)を、LSS内のページのリマインダーに対するポインターと一緒に書き込むことによって、フラッシュするために隣接するようにされることが可能である。このため、そのページ全体が、LSS内で、ただし、場合により、いくつかの断片で、アクセス可能であり得る。
[0088]本明細書で説明される例示的な技法によれば、Flush操作は、このようにしてときとともにフラッシュされてきたいくつかの部分を有し得るキャッシュされたページ状態を見ることが可能であり、別々の断片およびそれらの断片のLSSアドレスが代表された、キャッシュされたページをもたらす。本明細書で説明される例示的な技法によれば、任意の時点で、Flushが、不連続なページ断片のコンテンツを隣接して(かつ冗長に)書き込むことによって、LSSストレージの中にこれらの断片を一緒にもたらすことが可能である。例えば、ユーザーが、異なる読取りアクセス費用のため、LSSがディスクストレージを使用する場合、隣接性を所望する一方で、LSSがフラッシュストレージを使用する場合、断片を別々のままにしておくことに積極的である可能性がある。
[0089]本明細書で説明される技法によれば、ページがフラッシュされる際、システムが、そのフラッシュに先立って、ページのどのような状態がフラッシュされているかを知ることが望ましい可能性がある。例えば、このことは、システムが、ページを単にラッチし、フラッシュを実行することが可能であるので、ラッチを使用して容易に確かめられ得る。しかし、ラッチフリーのアプローチにおいて、システムは、ページに対するアップデートがフラッシュされることを、そのページがフラッシュされることに先立って、防止することに相当な困難を有し得る。例えば、このことは、先行書込みログプロトコルの執行の際、またはそのフラッシュが構造変更の一環として行われる場合に、問題をもたらし得る。例えば、不適切なフラッシュが、それらのフラッシュのCASを実行する際、失敗することが望ましい可能性がある。このため、本明細書で説明される例示的な技法によれば、CASの中にフラッシュされるべきページ状態に対するポインターが使用されることが可能であり、そのポインターは、その場合、その特定の状態をキャプチャするに過ぎないことが可能であり、フラッシュが完了する前に状態がアップデートされている場合、失敗することが可能である。しかし、このことは、他の問題を生じる可能性がある。
[0090]本明細書で説明される例示的な技法を研究する際、キャッシュ管理を実行する場合、およびLSSにページをフラッシュする場合に有利であり得る強い不変条件(strong invariant)の種類を決定することに困難を経験した。例えば、不変条件は、以下のような特性を含み得る。すなわち、
LSSに正常にフラッシュされたページは、フラッシュされたものとしてキャッシュ内で即時に見られ、そのページのフラッシュされた状態は、すべての後の状態のフラッシュに先行してLSS I/Oバッファーの中に入っている。フラッシュが失敗したページは、キャッシュ内でフラッシュされたものとして出現せず、LSSを見る際、そのフラッシュが成功しなかったことが明らかとなる。
[0091]例えば、2つの代替のアプローチが、以下を含み得る。すなわち、
1)フラッシュの成功が、CASをまず実行することによって確実にされ得る。CASが成功すると、ページが、LSSに書き込まれ得る。例えば、前述のことが行われた場合、競合条件が、信頼できるLSS回復を損なう可能性がある。例えば、より早期のフラッシュに依存するページが、その後、フラッシュされる可能性があり、ただし、この「後の」フラッシュは、システムクラッシュより前にLSSに書き込まれることに成功する一方で、「より早期の」フラッシュは、完了するのが遅すぎ、安定したLSS内に出現しない。この状況は、ある種の因果関係を損なう可能性がある。
2)フラッシュされることが所望されるページのページ状態が、キャプチャされ、LSSバッファーに書き込まれることが可能である。次に、CASが試みられることが可能であり、CASが失敗することが可能である。このため、ページは、システムがクラッシュした場合にそのフラッシュが成功したか、または失敗したかを区別するための指示をまったく伴わずに、LSSに書き込まれる。例えば、様々な時点でLSSに書き込まれた複数のそのようなページが存在し得る。例えば、失敗したCASよりも早期にLSS内に出現するページの後の状態が書き込まれ得る。前述したとおり、その状態は、より後に始まったが、より早期のフラッシュより前にバッファースロットを獲得している。
[0092]本明細書で説明される例示的な技法によれば、前述したジレンマが、後段で説明されるとおり解決され得る。例えば、CASが十分に早期に実行された場合、ページの状態をログバッファーにコピーすることに先立って、そのフラッシュが成功するか否かが判定され得る。このため、例示的なフラッシュ手順が、以下のとおり実行され得る。すなわち、
ステップ1:フラッシュされることが意図されるページの状態を識別する
ステップ2:その状態を書き込むべきLSSバッファー内のスペースを差し押さえる
ステップ3:CASを実行して、そのフラッシュが成功するかどうかを判定する。このことを行うためにフラッシュデルタにおけるLSSオフセットが獲得される(前述のステップ2において規定されるとおり)
ステップ4:ステップ3が成功した場合、保存されるべき状態をLSSに書き込む。この状態がLSSに書き込まれている間、本明細書で説明される例示的なLLAMA技法が、バッファーがLSS二次ストレージに書き込まれるのを防止することが可能である。
ステップ5:ステップ3が失敗した場合、「失敗したフラッシュ」を示す指示をバッファー内の確保されたスペースに書き込む。このことは、ストレージを消費し得るが、いずれのフラッシュが成功したか、または失敗したかについての曖昧さを解決する。
[0093]この例示的な手順の結果は、LSSが、回復中、失敗したCASの結果であるページを見ない可能性があることである。例えば、このことは、LSS内に後に出現する(「ログ」におけるページの位置の点で)ページが、LSSログにおいてそのページのより早期のすべてのインスタンスよりも、そのページの後の状態であるという特性を保つこともする。
[0094]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、その実施形態のメモリー制約を満たすようにキャッシュ・アンド・スワップアウト・データを管理することが望ましい可能性がある。例えば、例示的なLLAMA実施形態は、デルタアップデート、置換アップデート、およびフラッシュを意識していることが可能であり、以上のそれぞれを認識することが可能である。しかし、例示的なLLAMA実施形態は、汎用であるものとされる場合、ページのコンテンツについて何も知らない。このため、例示的なLLAMA実施形態は、ページの中にLSNを保持することによって、アクセスメソッド層がトランザクションをサポートしているかどうかを意識していない。このため、もたらされ得る問題は、例示的なLLAMA実施形態が、LSNを見ることなく、先行書込みログプロトコルを執行する可能性がある場合、どのようにキャッシュスペース管理(ページを強制退去させることを含む)を提供し得るかに関する潜在的な疑問を含む。
[0095]本明細書で説明される例示的な技法によれば、既にフラッシュされているデータは、キャッシュからドロップされ得る。例えば、ページのアップデート・インプレースが行われるシステムが、最近、アップデートされた、「汚れた」ページをスワップアウトすること(キャッシュからドロップすること)を防止され得る。しかし、デルタアップデートのため、例示的なLLAMA実施形態は、ページのいずれの部分が既にフラッシュされているかを判定することが可能である。例えば、それぞれのそのような部分が、フラッシュデルタを用いて記述されることが可能であり、それらのフラッシュされた部分が、キャッシュから「スワップアウト」されることが可能である。
[0096]ページの一部を「スワップアウト」する際、ストレージを単に割当て解除し、再使用することは、スワップアウトされた部分に対するダングリングリファレンスを残し得るので、望ましくない可能性がある。このため、本明細書で説明される例示的な技法によれば、ページのいずれの部分がスワップアウトされているかを記述するデルタが使用され得る。
[0097]例えば、完全にスワップアウトされたページに関して、マッピングテーブル304内のそのページのメインメモリーアドレスが、そのページの最新のフラッシュデルタからのLSSポインターで置き換えられることが可能である。
[0098]図5は、例示的な部分的ページスワップアウト、および例示的な部分的スワップデルタを示す。例えば、部分的にスワップアウトされたページに関して、CASが、「部分的スワップ」デルタレコード502を挿入するのに使用され得る。例えば、このデルタレコード502は、そのページが部分的にスワップアウトされている(例えば、したがって、そのページのいずれの部分も正常にアクセスされ得ない)ことを示すことが可能であり、そのページの欠落した部分506を探し出すためのLSS内のロケーション情報を示すフラッシュデルタレコード504をポイントすることが可能である。例えば、「部分的スワップ」デルタ502がCASを用いてインストールされると、ドロップされているページの部分に関するメモリーは、後段でさらに説明されるとおり、例示的なエポック機構を使用して解放され得る。
[0099]例えば、ページマネージャーが、第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することであって、その部分的スワップデルタレコードは、第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示す二次ストレージアドレスを含むことに基づいて、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページの一部分をスワップする操作を開始するように構成され得る。
[0100]例えば、ページマネージャーは、エポック機構を使用して、第1のページのその部分に関連付けられたキャッシュ層ストレージに関する解放操作を開始するようにさらに構成され得る。
[0101]本明細書で説明される例示的な技法によれば、このアプローチは、いくつかの有用な特徴をユーザーに有利に提供することが可能である。例えば、そのような例示的なLLAMA実施形態のキャッシュ層(例えば、312)が、ページの実際のコンテンツに関する知識なしにメモリーを取り戻すことが可能である。例えば、フラッシュされたページ、およびページのフラッシュされた部分をドロップすることに、I/O操作がまったく関与しないことが可能である。例えば、部分的にフラッシュされたページをメインメモリーの中に戻すことに、LSSの中に複数の部分を有する完全にフラッシュされたページに関する場合よりも少ない回数のLSS読取りが関与することが可能である。
[0102]例えば、いくつかの例示的なキャッシュ管理戦略が、キャッシュストレージを管理するのに使用され得る(例えば、最も長く使われていない(LRU)、LRU(k)、Clockなど(例えば、W.Effelsberg他、「Principles of database buffer management(データベースバッファー管理の原理)」、ACM Transactions on Database Systems(TODS)、Vol.9、Issue 4(1984年12月)、560〜595ページ、およびE.O’Neil他、「The LRU−K page replacement algorithm for database disk buffering(データベースディスクバッファリングのためのLRU−Kページ交換)」、Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data(SIGMOD ’93)、297〜306ページ参照))。これらの例は、さらなる帳簿処理(bookkeeping)を含み得るが、実質的な困難はもたらさないことが可能である。
[0103]本明細書で説明される例示的な技法によれば、そのような例示的なラッチフリーのアプローチを使用して、操作は、ページとページ状態の両方を、ページとページ状態の両方が「ガベージ」と指定された後でさえ、検査していることが可能である。例えば、従来の「ラッチ」を使用していない場合、システムは、1)ページ状態全体を置き換え、それまでの状態を、別の操作が読取っている間に割当て解除するUpdate−R操作、または2)マッピングテーブル内のページを、別の操作が検査している間に「解放」するDe−allocate操作のいずれかを防止することに失敗する可能性がある。
[0104]本明細書で説明される例示的な技法によれば、ストレージもPIDも、別の操作がストレージにもPIDにもアクセスしている可能性がまったくなくなるまで、再使用されることを許されないことが可能である。このため、「解放されたリソース」と「再使用可能なリソース」の間の区別が確立され得る。例えば、「解放されたリソース」が、操作によってガベージと指定されている。例えば、「再使用可能なリソース」が、解放されており、他のいずれの操作によってもアクセス可能でないことが確実にされることが可能である。例えば、エポックが、割当て解除されたオブジェクトがあまりにも早く再使用されるのを防ぐのに使用され得る(例えば、H.Kung他、「Concurrent manipulation of binary search trees(バイナリーサーチツリーの同時操作)」、ACM Transactions on Database Systems(TODS)、Vol.5、Issue 3(1980年9月)、354〜382ページ参照)。
[0105]本明細書で説明される例示的な技法によれば、すべての操作は、PIDまたはページ状態にアクセスするのに先立って、現在のエポックEに登録することが可能であり、そのようなアクセスが完了すると、Eを抜けることが可能である。例えば、操作が、解放されたリソースを、現在のエポックのリスト上に常に書き込むことが可能であり、現在のエポックは、E(その操作が参加したエポック)であること、または現在のエポックが先に進んでいる場合、後のエポックであることが可能である。例えば、Eのリスト上のいずれのリソースも、Eに登録されたすべての操作が抜けるまで、再使用されないことが可能である。
[0106]例えば、エポックに番号が付けられることが可能であり、時々、新たなエポックE+1が「現在の」エポックになることが可能である。このため、新たな操作が、今やE+1である現在のエポックに引き続き登録することが可能である。例えば、エポック機構不変条件は、以下のとおりである。すなわち、エポックE+1または後のエポックにおけるいずれの操作も、エポックEにおいて解放されたリソースを見ていること、および使用していることはあり得ない。
[0107]このため、この不変条件に基づいて、すべての操作がEを抜けると、Eにおいて解放されたリソースにアクセスすることができるアクティブな操作は存在しない。図6は、例示的な2つのエポック602、604、およびそれらのエポック602、604のそれぞれのガベージコレクションリスト606、608を示す。図6に示されるとおり、ガベージコレクション項目610が、エポック1(602)における「スレッド1」に関連付けられ、ガベージコレクション項目612が、エポック1(602)における「スレッド2」に関連付けられ、ガベージコレクション項目614が、エポック2(604)における「スレッド3」に関連付けられる。図6に示されるとおり、エポック2(604)のガベージコレクションリスト608内のガベージコレクション項目616が、エポック1(602)の「スレッド1」に関連付けられる。
[0108]例えば、「スレッド1」および「スレッド2」がエポック1(602)を抜けると、エポック1(602)において解放されたリソース(例えば、ガベージコレクション項目610およびガベージコレクション項目612)にアクセスすることができるアクティブな操作は存在しない。
[0109]例えば、第1のエポックマネージャーが、第1のプロセッサー操作によってページ情報にアクセスすることに先立って、第1のエポック登録リスト内に第1のプロセッサー操作を登録することを開始するように構成され得る。
[0110]第1のエポックマネージャーは、第1のプロセッサー操作によって解放された1つまたは複数のリソースを、第1のエポックガベージコレクションリスト内に書き込むように構成され得る。第1のエポックマネージャーは、第1のエポック登録リストが、現在、登録されているプロセッサー操作を含むようになるまで、第1のエポックガベージコレクションリスト内に書き込まれた、書き込まれたリソースの再使用をブロックすることが可能である。
[0111]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、ログ構造化ファイルシステム(LFS)と似通ったログ構造化の様態で二次ストレージ(例えば、フラッシュストレージ)上のデータを編成することが可能である(例えば、M.Rosenblum他、「The Design and Implementation of a Log−Structured File System(ログ構造化ファイルシステムの設計および実施)」、ACM Transactions on Computer Systems(TOCS)、Vol.10、Issue 1、1992年2月、26〜52ページ参照)。このため、各ページフラッシュは、フラッシュ上のページの位置を再配置する。例えば、このことが、本明細書で説明される例示的なマッピングテーブル304を使用するさらなる理由を与えることが可能である。例えば、ログ構造化ストレージが、1ページ当たりの書込みの回数を有利に減らし、それらの書込みを「順次」にすることが可能である。このため、多くのランダムな書込みが、1回の大きなマルチページ書込みに変換され得る。
[0112]前述したとおり、「論理ページ」が、基本ページと、そのページに対するアップデートを示す0または1つ以上のデルタレコードとを含むことが可能であり、これにより、ページが、フラッシュされる際に断片でフラッシュに書き込まれることを可能にする。このため、フラッシュ上の論理ページは、潜在的に、ポインターとしてファイルオフセットを使用して一緒にリンクされた異なる物理デバイスブロック上にあるレコードに対応することが可能である。さらに、物理ブロックが、複数の論理ページからのレコードを含み得る。図7aは、フラッシュ314上の例示的なログ構造化ストレージ編成700aを示す。
[0113]例えば、論理ページが、フラッシュ上の連鎖の先頭(順次ログ702内のオフセットがマッピングテーブル304から獲得され得る)から開始して、リンクされたレコードをたどることによって、フラッシュ314からメモリー(例えば、RAM312)の中に読み込まれ得る。例えば、フラッシュ314からメモリー312の中に対応する「論理ページ」を読み込むために、オフセット704が、デルタレコード706にアクセスするためにマッピングテーブル304から獲得されて、現在の状態、および基本ページ708が獲得されることが可能である。
[0114]例えば、フラッシュ314から対応する「論理ページ」をメモリー312の中に読み込むために、オフセット710が、デルタレコード712にアクセスするためにマッピングテーブル304から獲得されて、デルタおよびリンクが獲得され、第2のデルタレコード714にアクセスが行われ、その後、基本ページ716にアクセスが行われることが可能である。
[0115]例えば、フラッシュプロセスが、同一の論理ページの複数のデルタレコードを、それらのデルタレコードが一緒にフラッシュされる場合に有利に統合して、フラッシュ上の隣接するCデルタにすることが可能である。さらに、論理ページが、メモリー内で統合された後にフラッシュされる場合、フラッシュ上で統合されることが可能であり、このことは、ページ読取りパフォーマンスを有利に向上させ得る。
[0116]図7bは、第1のストレージオブジェクト746(例えば、図7bにおいて、複数の以前に先頭に付加されたデルタレコードを有する基本ページ742を含む)の物理アドレスを、ページ742の新たな状態744(例えば、ページ742を、以前に先頭に付加されたデルタレコードと統合することからもたらされる)の物理アドレスで置き換えることに基づいて、ページ742のそれまでの状態740をページ742の新たな状態で置き換えることを示す例示的なマッピングテーブル304を示す。
[0117]例えば、図7cに示されるとおり、ページ742のそれまでの状態740をページ742の新たな状態744で置き換えることは、複数のデルタレコードを統合して、隣接するCデルタ750にすることを含むことが可能であり、そのCデルタ750が、次に、基本ページ742と一緒にフラッシュされ得る。
[0118]例えば、ページ742のそれまでの状態740をページ742の新たな状態744で置き換えることは、マッピングテーブル304上のアトミック・コンペア・アンド・スワップ操作を介して、現在のページ742の変更されたバージョンを生成すること、または現在のページ742を置き換えるための別のページを決定すること、および現在のページ742の物理アドレスを、ページ742の新たな状態744(例えば、置換のための変更されたバージョンまたその他のページ)の物理アドレスで置き換えることを含み得る。
[0119]例えば、図7bの特徴と図7cの特徴の間の区別として、二次ストレージにページを書き込む際、LLAMAは、図7cに示される統合を実行することが可能であるが、図7bの統合を実行することは、Update−Rを実行しているアクセスメソッドに依存する。
[0120]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、完全にラッチフリーであり得る。さらに、専用のスレッドは、I/Oバッファーをフラッシュするのに使用されないことが可能である。というのは、そうすることが、スレッド作業負荷をバランスがとれた状態に保つことを複雑にする可能性があるからである。このため、すべてのスレッドが、このバッファーを管理することに参加することが可能である。例えば、従来のアプローチは、ラッチを使用してきた。しかし、そのような従来の技法は、バッファー内のスペースを割り当てている間、ラッチすることに限られて、データ転送に先立ってそのラッチを解放する可能性があり、データ転送は、その後、並行に進められる可能性がある。
[0121]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、本明細書で説明される例示的なシステムの別の場所で行われるとおり、アトミック性のためにCASを代わりに使用して、バッファースペース割当てのための従来のラッチを回避することが可能である。例えば、このことには、CASが実行される状態を定義することが関与する。例えば、バッファー状態の不変の部分は、その部分のアドレス(Base)と、サイズ(Bsize)とを含み得る。例えば、バッファー内で使用されるストレージの現在の最高水位線が、Baseを基準としたOffsetを用いて追跡され得る。例えば、バッファーの使用を求める各要求が、ページフラッシュのためのスペースSizeを確保しようとする作業から始まることが可能である。
[0122]本明細書で説明される例示的な技法によれば、バッファー内でスペースを確保するのに、スレッドが、現在のOffsetを獲得し、Offset+Sizeを計算することが可能である。例えば、Offset+Size≦Bsizeの場合、要求はバッファー内に記憶され得る。例えば、スレッドは、比較値としての現在のOffset、および新たな値としてのOffset+Sizeと一緒にCASを発行することが可能である。そのCASが成功した場合、Offsetは、その新たな値に設定されることが可能であり、そのスペースは、確保されることが可能であり、バッファー書込みは、データをバッファーに転送することが可能である。
[0123]本明細書で説明される例示的な技法によれば、このロジックは、バッファー内のスペース割当てを扱うことが可能である。例えば、バッファーに書き込むこと、および複数のバッファーを管理することには、後段でさらに説明される、CAS状態におけるより多くのことが関与する可能性がある。
[0124]二次ストレージにバッファーを書き込む際、Offset+Size>Bsizeである場合、スレッドのレコードを保持するのにバッファー内に不十分なスペースしか存在しない。この場合、スレッドは、バッファーを封印して、これにより、バッファーを、もはや使用されるべきでないものにし、二次ストレージに書き込まれるべく準備されたものにすることが可能である。この条件は、フラッシュバッファー状態における「Sealed」ビットを用いて追跡され得る。例えば、CASが、「Sealed」ビットをF(例えば、偽)からT(例えば、真)に変更することが可能である。例えば、封印されたバッファーが、もはやアップデートされないことが可能であり、封印されたバッファーに出会ったスレッドは、異なる(封印されていない)バッファーを探す。
[0125]本明細書で説明される例示的な技法によれば、封印されたバッファーは、新たなアップデート要求をもはや受け付けないことが可能である。しかし、例示的なシステムは、バッファースペースを獲得することにすべて成功しているそれまでの書込み側が、書込み側のデータをバッファーに転送することを終えていることをまだ保証されていない可能性がある。本明細書で説明される例示的な技法によれば、「Active」カウントが、バッファーにデータを転送している書込み側の数を示すことが可能である。例えば、バッファー内にスペースを確保する際、書込み側のCASは、Offset、Sealed、およびActiveを表す値を含み得る。例えば、書込み側のCASが、この構造を獲得し、そのCASのペイロードサイズをOffsetに追加し、「Active」を1だけインクリメントすることが可能であり、〜Sealedである場合、この状態をアップデートして、スペースを確保するようにCASを実行することが可能である。例えば、書込み側が終了している場合、書込み側は、この状態を再獲得し、「Active」を1だけデクリメントすることが可能であり、その変更を生じさせるようにCASを実行することが可能である。例えば、操作は、失敗した場合、必要に応じて再び行われ得る。
[0126]例えば、バッファーは、Sealedであり、かつActive=0である場合、フラッシュ可能であり得る。例えば、この条件をもたらす書込み側が、I/Oを開始することを担うことが可能である。例えば、I/Oが完了すると、バッファーのOffsetおよびActiveユーザーがともに0に設定されることが可能であり、バッファーは、unSealedであり得る。
[0127]本明細書で説明される例示的な技法によれば、複数のバッファーに関して、複数のバッファーのセットの中のそれらのバッファーの各々が、前述した状態を有する。図8は、例示的な完全なフラッシュバッファー状態800を示す。図8の例に示されるとおり、バッファー当たりの状態802が、32ビットを含むことが可能であり、次の書込みのためのオフセットに関する24ビット804と、アクティブな書込み側の数に関する7ビット806と、「封印ビット」標識のための1ビット808(例えば、封印されたバッファーを示す)とを含む。例えば、現在のアクティブなバッファー番号(CURRENT)810が、現在、アクティブなバッファーを示すことが可能である(例えば、図示されるとおり、8ビットに関する)。
[0128]例えば、バッファーは、ラウンドロビンスタイルでアクセスされて、使用されることが可能であり、したがって、1つのバッファーが封印されるにつれ(封印ビット標識808によって示される)、本明細書の例示的な技法は、バッファー「リング」の中の次のバッファーに進むことが可能である(例えば、CURRENT810を使用して)。本明細書で説明される例示的な技法によれば、CURRENT810が、セットのバッファーのうちのいずれが現在、新たな書込み要求を受け付けているかを示すのに使用され得る。
[0129]本明細書で説明される例示的な技法によれば、現在、アクティブなバッファーをSEALする(例えば、「封印ビット」標識808を介して)スレッドは、そのバッファーをSEALする際、CURRENT810をアップデートすることもする。例えば、このスレッドは、その後、次のCURRENTバッファーを選択することが可能である。例えば、バッファーI/Oが完了すると、I/Oスレッドは、バッファーを封印解除することが可能であるが、現在のバッファーの役割をしている別のバッファーが存在し得るので、CURRENT810を設定しない可能性がある。
[0130]LSSは、ログ構造化ストアであり、したがって、概念的に「付加専用(append only)」である。例えば、LSSの実現には、任意の通常のログ構造化ファイルシステム(LFS)の場合と同様に、ページの新たなバージョンを付加するために絶えずスペースを取り戻すことが関与し得る。例えば、この技法は、本明細書で「クリーニング」(例えば、前掲のM.Rosenblum他参照)と呼ばれ得る。
[0131]例示的なページの異なるバージョンは、異なる寿命を有し得るので、再使用することが望ましい可能性がある例示的な「ログ」の古い部分が現在のページ状態を含むことが可能である。例えば、例示的なログのこの「古い」セクションを再使用するのに、依然として最新のページ状態が、ログのアクティブな末尾に移動されることが可能であり、それらの状態をその末尾に付加して、そのより古い部分がその後の使用のためにリサイクルされ得るようにする。例えば、クリーニングすることのこの副作用は、書込みの回数を増加させ得る(このことは、本明細書で「ライトアンプリフィケーション」と呼ばれ得る(例えば、X.−Y.Hu他、「Write amplification analysis in flash−based solid state drives(フラッシュベースの固体状ドライブにおけるライトアンプリフィケーション分析)」、In Proceedings of SYSTOR 2009:The Israeli Experimental Systems Conference(SYSTOR ’09)、Article No.10参照))。
[0132]例えば、クリーニングする作業は、単に編成され得る。例えば、ログは、最も古い部分(例えば、ログの先頭)が「クリーニング」されて、新たなページ状態が書き込まれるログのアクティブな末尾に新たなスペースとして追加される大きい「循環バッファー」として管理され得る。
[0133]本明細書で説明される例示的な技法によれば、再配置される各ページは、そのページが再書込みされる際、隣接させられる(例えば、ページが、LSSストアに再付加されると、「再書込みされた」内容は隣接する)。このため、どれほど多くのインクリメントフラッシュを経たとしても、そのページのすべての部分は、現時点で隣接させられ、このため、LSS内のページのアクセス可能性を有利に最適化する。
[0134]本明細書で説明される例示的な技法によれば、デルタ(本明細書で「再配置デルタ」と呼ばれ得る)に対するCASが、そのページに関するマッピングテーブルエントリーにおいて実行されて、新たなロケーションをもたらし、そのページのいずれの部分が再配置されたかを記述する(すなわち、その新たなロケーション情報をインストールするようにキャッシュを管理する)ことが可能である。例えば、同時に行われるアップデートまたはフラッシュが、このCASを失敗させる可能性があり、その場合、そのCASは、再び試みられる。
[0135]ストレージ効率は、ログ構造化ストレージシステムに有利な良い影響を及ぼすことが可能である。本明細書で説明される例示的な技法によれば、LSSに割り当てられた任意の所与の量のスペースに関して、この技法がそのスペースをより効率的に使用するほど、この技法は、クリーニングを実行することが少なくなることが可能であり、このことには、より少ないページ移動が関与し得る。例えば、ページ移動は、ストレージに対するさらなる書込み(例えば、ライトアンプリフィケーション)をもたらし得る。
[0136]潜在的なLSSストレージ効率に関して、フラッシュされるページ内に空いたスペースは存在しない。例えば、それらのページは、パックされた可変長ストリングとして書き込まれることが可能である(例えば、平均で、従来のB−TREEページは、69%だけしか利用されない可能性がある)。さらに、前回のフラッシュ以来のデルタだけが頻繁にフラッシュされる可能性があるため、1回のページフラッシュ当たり消費されるスペースがより少ないことが可能である。さらに、アップデートされたページをキャッシュからスワップアウトすることには、さらなるフラッシュが関与しない。というのは、キャッシュ内のメインメモリーが、それまでにフラッシュされたページの部分に関してだけ取り戻され得るからである。
[0137]アクセスメソッドの1つの例示的な態様は、アクセスメソッドが、そのような構造が成長すること、および縮小することを可能にする構造変更操作(SMO)を行うことである。例えば、SMOは、通常のアップデートが、進行中のSMOが存在する状況で正しく実行され、アトミック(すべてまたは無)であることが可能であるようにインデックスのアトミック変更を行う方法が存在するものと予期する。例えば、例示的なBW−TREEが、そのBW−TREEのSMOのための機構としてシステムトランザクションを活用することが可能である。
[0138]本明細書で説明される例示的な技法によれば、システムトランザクションの持続性が、ログを介して実現され得る。しかし、本明細書で説明される一部のログは、トランザクションログではなく、例示的なLSS「ページ」ストアであり、このことは、トランザクションシステムが通常、操作をログ記録するだけであり得ることから、いくぶん不十分であるように見える可能性がある。しかし、デルタアップデートを用いて、ページ状態は、前回のページフラッシュ以来のデルタアップデートだけをログ記録することによってログ記録され得る。コミット時に持続性は関与せず、したがって、コミットは、LSSバッファーを「強制」しない。しかし、本明細書で説明される例示的な技法によれば、トランザクションの結果を使用するすべての後の操作は、LSS内のトランザクションコミット後に生じることが確実にされ得る。
[0139]本明細書で説明される例示的な技法によれば、非トランザクション操作と同様に、すべてのトランザクション操作も、マッピングテーブル内のページポインターに対するCASを介してインストールされ得る。本明細書で説明される例示的な技法は、キャッシュ内のコンテンツがLSS内で忠実に表されることを確実にすること、およびLSS内のコンテンツがキャッシュ内で忠実に表されることを確実にすることが可能である。このため、システムトランザクション内の実質的にすべてのアップデートが、フラッシュ操作を含み得る。例えば、すべてのシステムトランザクションアップデートが、LSSバッファー内に記録されることが可能であり、このため、「ログ記録」されることが可能である。例えば、情報のその2つの表現は等価であることが可能であり、これにより、システムクラッシュが生じた場合に、キャッシュの状態が、LSSによって安定してキャプチャされた最終のバッファー時点で忠実に再構築され得ることが確実にされる。
[0140]この等価性は、SMOの場合のように、アクションに複数のページが関与する場合、従来、問題がある可能性がある。例えば、B−LINKツリーにおけるノード分割SMOは、新たなページを割り当てることと、その新たなページを参照するその新たなページの兄弟ページリンクポインターをアップデートすることをともに行う。例えば、ラッチベースのシステムにおけるSMOは、通常、ラッチを使用して隔離をもたらして、マルチページSMOの内部状態が、そのSMOが完了するまで、キャッシュマネージャー内で可視でないようにすることが可能である。例えば、ラッチフリーの設計は、アクティブな(したがって、コミットされていない)トランザクションアップデートを隔離する能力が制限され得ることを意味する可能性がある。
[0141]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、ページに対する実質的に任意のアクセスを許すトランザクションインターフェースをもたらすことが可能である(すなわち、任意のページに対する操作がトランザクション内に入れられることが可能である)。しかし、トランザクション中にアップデートされたページが、そのトランザクションの外部の操作によるアクセスから保護されない可能性がある。しかし、本明細書で説明される例示的な技法によれば、完全に一般的な隔離能力が関与しないSMOが設計され得る。例えば、図9が、SMOトランザクションをキャプチャするために使用され得る例示的なトランザクションテンプレート900を示す。
[0142]例えば、ステップ1(902)で、ページがマッピングテーブル内で割り当てられる、または解放される。ステップ2(904)で、ページが、必要に応じてアップデートされる。ステップ3(906)で、既存のページが、新たなページをインデックスの残りの部分に接続するように、または別のページをアップデートしている間に既存のページを取り除くようにアップデートされる。
[0143]本明細書で説明される例示的な技法によれば、ノード分割(図9の例示的なテンプレートを使用する)のための新たなノードは、そのノードがツリーに接続され、トランザクションがコミットされる際、図9のステップ3まで、他のスレッドに可視ではない。このため、そのようなSMOトランザクションは、アトミック性と隔離をともにもたらすことが可能である。
[0144]従来のトランザクションシステムといくぶん同様に、アクティブトランザクションテーブル(ATT)と本明細書で呼ばれ得るアクティブトランザクションテーブルが、システムトランザクションに関して保持され得る。例えば、ATTは、アクティブなシステムトランザクションごとに、そのトランザクションのトランザクションid(TID)と、そのトランザクションの最新の操作のメモリーアドレスをポイントする(またはそれ以外で参照する)、そのトランザクションの直前の操作に対するポインター(「IP」(「直前」を表す)と本明細書で呼ばれ得る)とを含むエントリーを含み得る。
[0145]例えば、BeginTrans操作(例えば、TBegin)が、任意の先行するトランザクションよりも高いトランザクションid(TID)を有し、IPがNULLの値に設定された新たなエントリーをATTに追加することが可能である。例えば、トランザクション操作の実行が、そのIPによって識別されるその操作に関するログレコードをポイントする、その操作に関する「ログレコード」を作成することが可能であり、IPが、その新たな操作を参照するようにアップデートされることが可能である。例えば、このことは、すべての「ログレコード」がメインメモリー内に存在して、トランザクションの操作に関する「ログレコード」をバックリンクする(backlink)役割をすることが可能である。さらに、本明細書で説明される例示的な技法によれば、システムトランザクション内の操作は、マッピングテーブルアップデートを介してキャッシュ状態しか(すなわち、LSSバッファー状態ではなく)変更しないことが可能である。本明細書で説明される例示的な技法によれば、これらのページは、トランザクションコミット時にフラッシュされ得る。本明細書で説明される例示的な技法によれば、トランザクションの終了(コミットまたは中途終了)が生じると、トランザクションは、ATTから取り除かれ得る。
[0146]例えば、システムトランザクションマネージャーが、キャッシュ層マネージャーによって保持されるアクティブトランザクションテーブル(ATT)に第1のトランザクションのトランザクション識別子(TID)を追加するように構成され得る。例えば、トランザクションコミットマネージャーが、ATTからTIDを取り除くこと、第1のトランザクションに関連付けられたページ状態変更をマッピングテーブルの中にインストールすること、および二次ストレージバッファーに第1のトランザクションに関連付けられたページ状態変更をフラッシュすることを開始することに基づいて、第1のトランザクションをコミットするように構成され得る。
[0147]本明細書で説明される例示的な技法によれば、コミット操作の時点で、トランザクションによって変更されたページが、アトミック様態でLSSバッファーにフラッシュされる。例示的な技法として、これらのページ書込みは、LSS内のそのトランザクションに関する開始レコードおよび終了レコードで囲まれ得るが、このことには、中断されたトランザクションを元に戻すクラッシュ回復が関与し得る。例えば、そのような元に戻す回復には、元に戻す情報をLSSに書き込むことが関与し得る。本明細書で説明される例示的な技法によれば、このことは、後段でさらに説明されるとおり、トランザクションによって変更されたすべてのページのアトミックフラッシュを、コミット時に実行することによって回避され得る。
[0148]本明細書で説明される例示的な技法によれば、SMOに依存する後のアクションは、SMOトランザクションを記述する情報よりもLSSバッファー内で後に出現する。このため、SMOの状態が、システムトランザクションを扱っているスレッド以外のスレッドにキャッシュ内で可視になると、それらの他のスレッドは、LSSにコミットされており、LSSバッファー内に既に存在するSMOに依存し得る。
[0149]図9に示されるとおり、ステップ3は、「新たなページをインデックスの残りの部分に接続するように、または別のページをアップデートしている間に既存のページを取り除くように既存のページをアップデートする」を示す。このため、本明細書で説明される例示的な技法は、アトミックフラッシュを介してメインメモリー内でアップデートすること(トランザクション状態を可視にすること)とLSSバッファー内でトランザクションをコミットすることの両方をカプセル化することを、これを実現するのにUpdate−Dに関する例示的な「コミット」能力を使用して(すなわち、アップデートをトランザクションコミットと組み合わせて)行うことが可能である。
[0150]本明細書で説明される例示的な技法によれば、LSSは、アップデート、およびアップデートのCASインストールを、トランザクションにおいて変更されたすべてのページのアトミックフラッシュと組み合わせることによって、トランザクションUpdate−D「コミット」操作を可能にし得る。例えば、複数のページのコミット時のこのフラッシュは、個々のページフラッシュの場合と同様に実行され得る。例えば、LSSバッファースペースが、トランザクションにおいて変更されたすべてのページに割り当てられることが可能である。次に、フラッシュデルタが先頭に付加されたUpdate−DデルタをインストールするCASが、実行され得る。そのCASが成功した場合、トランザクションにおいてアップデートされたページは、LSSフラッシュバッファーに書き込まれ得る。そのトランザクションに関するすべてのページのフラッシュが完了した後、フラッシュプロセスは、フラッシュバッファーの書込み側の数をデクリメントすることが可能である。例えば、トランザクションにおけるすべてのページに単一のユニットとしてスペースを割り当て、LSSバッファー上の書込み側デクリメントまで保持することが、LSSストア内のそのトランザクションに関するアトミック性を確実にし得る。
[0151]例えば、トランザクションコミットマネージャーが、コンペア・アンド・スワップ(CAS)操作を介して、トランザクションに関連付けられたアップデートデルタレコードをマッピングテーブルの中にインストールするように構成されることが可能であり、そのアップデートデルタレコードの先頭には、フラッシュデルタレコードが付加される。例えば、トランザクションコミットマネージャーが、そのCAS操作が成功したかどうかを判定するように構成され得る。トランザクションコミットマネージャーが、そのCAS操作が成功したと判定した場合、トランザクションコミットマネージャーは、トランザクションにおいてアップデートされたページを二次ストレージフラッシュバッファーに書き込む書込み操作を開始することが可能である。
[0152]本明細書で説明される例示的な技法によれば、そのCASが失敗した場合、応答は、他のフラッシュ失敗の場合と同様に進められ得る。例えば、LSSが、回復中、そのスペースを別のものと混同しないように割り当てられていたスペースが、VOIDにされ得る。このため、例示的な回復プロセスは、システムトランザクションをまったく意識しないことが可能である。むしろ、システムトランザクションは、例示的なキャッシング層の能力のみであり得る。このため、システムクラッシュまたはシステム再起動の前後でTID一意性を確実にすることなしに進めることが許容可能であり得る。
[0153]本明細書で説明される例示的な技法によれば、中途終了されたシステムトランザクションの操作は、回復が不完全なトランザクションを見ないので、キャッシュ内で元に戻され得る。このため、メインメモリー内で一緒にリンクされた、そのトランザクションに関するログレコードのバックチェーンがたどられることが可能であり、元に戻すことは、そのトランザクションに関するATTリスト上の操作の性質に基づいてもたらされ得る。例えば、デルタアップデートは、そのデルタを取り除くことによって元に戻されることが可能であり、割当ては、「解放する」ことで元に戻されることが可能であり、「解放する」は、「解放する」に先立つページの状態にページを復元することによって元に戻されることが可能である。「解放する」を元に戻すことを除いて、操作成功を記述する情報を超えた、これらの操作に関する特別の情報は、まったく所望されない可能性がある。
[0154]本明細書で説明される例示的な技法によれば、トランザクション内で行われるアクションは、ストレージおよびマッピングテーブル・ページ・エントリー(PID)を割り当てること、および解放することを含め、暫定的である。例えば、トランザクション実行中、PIDが、割り当てられること、または解放されることが可能であり、Update−Dデルタが、生成されることが可能である。例えば、これらのリソースの管理は、本明細書で説明されるとおり、エポック機構に基づいて実現され得る。例えば、SMOは、単一のユーザー操作要求内で実行されるので、スレッドは、そのトランザクションの持続時間にわたってそのスレッドのエポック内に留まり得る。
[0155]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、トランザクションコミットまたはトランザクション中途終了に依存して、リソースを取り戻すことが可能である。例えば、コミット操作に関して、FreePage PIDが、現在のエポックに関するPID解放待ち状態リストに追加され得る。例えば、中途終了操作に関して、AllocatePage PIDが、元に戻す間に解放されることが可能であり、PID解放待ち状態リストに同様に追加され得る。例えば、Update−D操作に関して、アップデートデルタは、トランザクションが中途終了された場合、現在のエポックに関するストレージ解放待ち状態リストに追加され得る。
[0156]本明細書で説明される「クラッシュ回復」とは、一般に、「トランザクション回復」を指す。本明細書で説明される「チェックポインティング」とは、一般に、トランザクションログを管理するのに使用されるチェックポインティングを指す。むしろ、本明細書で説明される「クラッシュ回復」とは、LSS(例えば、ログ構造化ストア)が、ページのLSSのマッピングテーブル、およびそれらのページの状態を、システムクラッシュの時点に回復する例示的な技法を指し得る。この特定のタイプの回復ステップは、通常、従来のアップデート・インプレース・ストレージ・システムの関心事ではない。
[0157]本明細書で説明される「クラッシュ回復」に関して、マッピングテーブルは、ある種の「データベース」と見なされ得る。例えば、このデータベースに対するアップデートは、LSSにフラッシュされるページ状態を含み得る。このため、すべてのページフラッシュは、その「マッピングテーブルデータベース」をアップデートすることが可能である。システムがクラッシュした場合、LSS「ログ」は、フラッシュされたページを、マッピングテーブルをアップデートするやり直しログレコードとして使用して、「マッピングテーブルデータベース」を回復するように再実行され得る。
[0158]前述の戦略をサポートして、マッピングテーブルは、LSSアップデートを無期限に保持することを回避するように、周期的にチェックポイント処理されることが可能である。例えば、前述したLFSクリーニング技法が、この目的で使用され得る(すなわち、回復ログを短くして)が、そのような技法は、高速回復のために望ましいとされ得るよりも、相当に大きい回復ログ(LSSログ構造化ストア)を残す可能性がある。
[0159]本明細書で説明される例示的な技法によれば、チェックポインティングのために有利な方策が使用され得る。例えば、例示的なLLAMA実施形態が、チェックポイント処理中に完全なマッピングテーブルを、2つの交互のロケーションのうちの1つに非同期に、インクリメンタルに書き込むことが可能である。図10は、本明細書で説明される例示的な技法による例示的なチェックポイントデータ1000を示す。例えば、2つの交互のロケーションが、様々なエンティティのロケーションに関するその他の「最新の」情報を失う可能性があるシステムクラッシュの後でさえ、システムがそれらのロケーションを知っているように、異なる2つの「よく知られたロケーション」(WKL)として選択され得る。このため、クラッシュの時点で存在していたとおりのシステムの状態に関する情報をポイントするポインターが、保存され得る(例えば、WKLを使用して)。例えば、2つのチェックポイントを使用することによって、ユーザーが、「ライブの」チェックポイントのアップデート・インプレースを行わないことが可能である。
[0160]例えば、各ロケーションは、図10に示されるとおり、完全なマッピングテーブルに加えて、フラッシュログ1006の中に回復開始位置(RSP)1002およびガベージコレクションオフセットGC1004を記憶することが可能である。例えば、RSP1002は、マッピングテーブル304をコピーすることを開始した時点におけるLSSストア内の終了オフセットを含み得る。例えば、GCオフセット1004は、ガベージコレクション「フロンティア」に印を付けることが可能である。
[0161]本明細書で説明される例示的な技法によれば、より後のチェックポイントは、LSSオフセットが、仮想化されることによって単調に増加するので、より高いRSP1002を有する。例えば、システムクラッシュの後、最高のRSP1002で完了したチェックポイント処理が、回復されたマッピングテーブル304の状態を初期設定するのに使用され得る。例えば、RSP1002は、やり直し回復を開始するためのLSS「ログ」(1006)内の位置を示す。最新の完了したチェックポイント処理を識別するのに、RSP1002は、マッピングテーブル304が完全にキャプチャされてしまうまで、チェックポイントに書き込まれない。このため、現在のチェックポイント処理が完了するまで、前の高いRSP(代替のロケーションからの)が最高のRSP1002である。
[0162]本明細書で説明される例示的な技法によれば、マッピングテーブル304をチェックポイントの一部として書き出すことは、キャッシュ内に存在するとおりのマッピングテーブル304のバイトごとに対応するコピーではない。例えば、キャッシュされた形態のマッピングテーブル304は、キャッシュされたページに関してマッピングテーブルエントリーの中にメインメモリーポインターを有するのに対して、本明細書で説明される例示的な所望されるチェックポイントには、それらのページのLSSアドレスをキャプチャすることが関与する。別の例として、現在、割り当てられていないマッピングテーブルエントリーが、それらのマッピングテーブルエントリーをリスト項目として使用する空きリスト上に保持される。このため、空きマッピングテーブルエントリーは、0、または直前の空きマッピングテーブルエントリーのアドレス(その0またはアドレスが空きリストに追加された時刻に基づく時間順序で)を有する。例えば、使用可能な空きリストは、本明細書で説明されるとおり、マッピングテーブルを非同期で「コピー」している間、キャプチャされないことが可能である。例えば、本明細書で説明されるマッピングテーブル304のコピーは、非同期で、インクリメンタルに書き込まれ、このことは、通常の実行に対する影響を最小限に抑えるのを助けることが可能である。
[0163]本明細書で説明される例示的な技法によれば、例示的なLLAMA実施形態が、LSSの現在の終了オフセットをRSP1002としてまず保存することが可能であり、現在のLSSクリーニングオフセットをGC1004として保存することが可能である。例えば、マッピングテーブル304が、スキャンされる(例えば、進行中の操作と同時に)ことが可能であり、各PIDエントリー(最新のフラッシュデルタの中に記憶された)に関するページの最新のフラッシュが識別されることが可能であり、そのLSSアドレスが、そのマッピングテーブル304エントリーに関する例示的なチェックポイントの中に記憶され得る。例えば、エントリーが空いている場合、そのエントリーは、チェックポイントコピーにおいてゼロ化され得る。例えば、やり直し回復の終わりに空きリストが再構築され得る。さらに、マッピングテーブル304をコピーすることが完了すると、それまでに保存されたRSP1002およびGC1004は、安定したチェックポイント領域に書き込まれることが可能であり、これにより、チェックポイント処理が完了する。
[0164]本明細書で説明される例示的な技法によれば、回復は、最高のRSP1002を有するチェックポイント(すなわち、最新の完全なチェックポイント)に関するマッピングテーブル304をキャッシュ内312にコピーすることによって開始され得る。例えば、ログ1006が、次に、RSP1002からLSSの終わりまで順方向に読み取られ得る。例えば、出会う各ページフラッシュが、そのページフラッシュがページ読取りの結果であるかのように、キャッシュ312内にもたらされ得る。
[0165]例えば、ページのコンテンツが読み取られることが可能であり、デルタは、LSS内のロケーションがフラッシュデルタの中で参照されるように設定されることが可能である。例えば、AllocatePage操作に出会うと、割り当てられたPIDに関するマッピングテーブル304エントリーが、AllocatePage操作によって予期されるとおり「空」に初期設定され得る。例えば、FreePage操作に出会うと、マッピングテーブル304エントリーは、ZEROに設定され得る。例えば、LSSクリーナが、チェックポイントから読み取られたGCオフセット(1004)からログに対するガベージコレクションを再開することが可能である。
[0166]本明細書で説明される例示的な技法によれば、回復中、すべての空きマッピングテーブル304エントリーが、ZEROに設定され得る。例えば、再構築されたマッピングテーブル304がスキャンされ得る。例えば、ZEROエントリーに出会うと、そのZEROエントリーは、空きリストに追加されることが可能であり、空きリストは、スタックとして管理され得る(すなわち、再使用されるべき最初のエントリーは、リストに追加された最後のエントリーである)。これらの例示的な技法によれば、下位のPIDは、再使用されることが可能であり(再使用の際の選好として)、このことは、テーブルサイズを、クラスタ化されて、小さく保つ傾向があり得る(少なくとも回復の結果)。さらに、それまでに使用された最高のPIDを示す最高水位線が、マッピングテーブル内に保持され得る。例えば、空きリストが尽きると、テーブルの使用されていない部分からPIDが追加されて、最高水位線がインクリメントされることが可能である。
[0167]本明細書でさらに説明されるとおり、図11は、ラッチフリーのログ構造化ストレージを管理するためのシステム1100のブロック図である。システム1100は、ハードウェア実施形態、ソフトウェア実施形態、またはハードウェア実施形態とソフトウェア実施形態の組合せとして実現され得ることが、データ処理の分野の業者には理解されよう。図11に示されるとおり、システム1100が、少なくとも1つのプロセッサー1104を含むデバイス1102を含み得る。デバイス1102は、任意に選択されたページ指向型アクセスメソッド1110に、ページデータストレージ1112に対するラッチフリーのアクセスを含むページデータストレージ1112に対するインターフェースアクセスをもたらすように構成され得る。データ不透明型インターフェース1108を含み得るデータマネージャー1106を含み得る。例えば、ページ指向型アクセスメソッド1110は、任意の恣意的なアクセスメソッドであり得る。例えば、ページデータストレージ1112は、メインメモリーなどの(少なくとも)揮発性ストレージ、ならびにフラッシュストレージ、および他のタイプのディスクドライブなどを含み得る「二次ストレージ」などのより安定したストレージ(例えば、より不揮発性のストレージ)を含め、任意のタイプのページデータストレージを含み得る。本明細書の説明の趣旨を逸脱することなく、本明細書で説明される技法と一緒に使用され得る多くのタイプのページデータストレージが存在することが、データ処理の分野の業者には理解されよう。
[0168]例示的な実施形態によれば、データマネージャー1106、またはデータマネージャー1106の1つまたは複数の部分が、後段でさらに説明されるとおり、有形のコンピューター可読記憶媒体上に記憶され得る実行可能命令を含み得る。例示的な実施形態によれば、コンピューター可読記憶媒体は、分散デバイスを含め、任意の数のストレージデバイス、および任意の数の記憶媒体タイプを含み得る。
[0169]この脈絡において、「プロセッサー」は、コンピューティングシステムに関連する命令を処理するように構成された単一のプロセッサー、または複数のプロセッサーを含み得る。このため、プロセッサーは、並行に、かつ/または分散された様態で命令を処理する1つまたは複数のプロセッサーを含み得る。デバイスプロセッサー1104は、図11のデータマネージャー1106の外部に描かれるものの、デバイスプロセッサー1104は、データマネージャー1106および/またはデータマネージャー1106の要素のいずれかの内部または外部に配置され得る単一のコンポーネントとして、かつ/または分散ユニットとして実装され得ることが、データ処理の分野の業者には理解されよう。
[0170]例えば、システム1100は、1つまたは複数のプロセッサー1104を含み得る。例えば、システム1100は、1つまたは複数の1104によって実行可能な命令を記憶する少なくとも1つの有形のコンピューター可読記憶媒体を含むことが可能であり、それらの実行可能な命令は、少なくとも1つのデータ処理装置に、本明細書で説明されるとおり、システム1100に含まれる様々な例示的な構成要素に関連付けられた操作を実行させるように構成される。例えば、その1つまたは複数のプロセッサー1104は、少なくとも1つのデータ処理装置の中に含められ得る。本明細書の説明の趣旨を逸脱することなく、本明細書の説明により構成され得るプロセッサーおよびデータ処理装置の多くの構成が存在することが、データ処理の分野の業者には理解されよう。
[0171]この脈絡において、「コンポーネント」とは、ある操作を実行するように構成され得る命令またはハードウェアを指すことが可能である。そのような命令は、命令のコンポーネントグループ内に含められることが可能であり、または複数のグループにわたって分散されることが可能である。例えば、第1のコンポーネントの操作に関連するいくつかの命令が、第2のコンポーネント(またはより多くのコンポーネント)の操作に関連する命令のグループに含められてもよい。例えば、本明細書の「コンポーネント」は、単一のエンティティ内に配置され得る命令によって実施され得るある種の機能を指すことが可能であり、または複数のエンティティにわたって散在させられる、もしくは分散させられることが可能であり、他のコンポーネントに関連する命令および/またはハードウェアと重なり合うことが可能である。
[0172]例示的な実施形態によれば、データマネージャー1106は、1つまたは複数のユーザーデバイスに関連して実施され得る。例えば、データマネージャー1106は、後段でさらに説明されるとおり、サーバーと通信することが可能である。
[0173]例えば、1つまたは複数のデータベースが、データベースインターフェースコンポーネント1122を介してアクセスされ得る。様々なタイプのデータベース構成(例えば、リレーショナルデータベース、階層データベース、分散データベース)および非データベース構成などの、本明細書で説明される情報を記憶するための多くの技法が存在することが、データ処理の分野の業者には理解されよう。
[0174]例示的な実施形態によれば、データマネージャー1106は、即時の結果などのオブジェクトを記憶することが可能なメモリー1124を含み得る。この脈絡において、「メモリー」は、データおよび/または命令を記憶するように構成された単一のメモリーデバイスまたは複数のメモリーデバイスを含み得る。さらに、メモリー1124は、複数の分散ストレージデバイスにわたることが可能である。さらに、メモリー1124は、複数のプロセッサーの間に分散され得る。
[0175]例示的な実施形態によれば、ユーザーインターフェースコンポーネント1126が、ユーザー1128とデータマネージャー1106の間の通信を管理することが可能である。ユーザー1128は、ディスプレイ1132および他の入出力デバイスに関連付けられ得る受信デバイス1130に関連付けられ得る。例えば、ディスプレイ1132は、内部デバイスバス通信を介して、または少なくとも1つのネットワーク接続を介して受信デバイス1130と通信するように構成され得る。
[0176]例示的な実施形態によれば、ディスプレイ1132は、フラットスクリーンディスプレイ、印刷形態のディスプレイ、2次元ディスプレイ、3次元ディスプレイ、静的ディスプレイ、移動ディスプレイ、触覚出力、オーディオ出力、およびユーザー(例えば、ユーザー1128)とコミュニケーションをとるための他の任意の形態の出力などの知覚ディスプレイとして実施され得る。
[0177]例示的な実施形態によれば、データマネージャー1106は、データマネージャー1106と、少なくとも1つのネットワーク1136を介してデータマネージャー1106と通信することが可能な他のエンティティとの間のネットワーク通信を管理することが可能なネットワーク通信コンポーネント1134を含み得る。例えば、ネットワーク1136は、インターネット、少なくとも1つのワイヤレスネットワーク、または少なくとも1つの有線ネットワークのうちの少なくとも1つを含み得る。例えば、ネットワーク1136は、データマネージャー1106のためにデータの伝送をサポートすることが可能なセルラーネットワーク、無線ネットワーク、または任意のタイプのネットワークを含み得る。例えば、ネットワーク通信コンポーネント1134は、データマネージャー1106と受信デバイス1130の間のネットワーク通信を管理することが可能である。例えば、ネットワーク通信コンポーネント1134は、ユーザーインターフェースコンポーネント1126と受信デバイス1130の間のネットワーク通信を管理することが可能である。
[0178]例えば、データ不透明型インターフェース1108が、任意に選択されたページ指向型アクセスメソッド1110に、ページデータストレージ1112に対するログ構造化アクセスを含むページデータストレージ1112に対するインターフェースアクセスをもたらすように構成され得る。
[0179]例えば、キャッシュ層マネージャー1138が、データ不透明型インターフェース1108に関連付けられた間接アドレスマッピングテーブル1142に対するテーブル操作を開始するように構成され得るマップテーブルマネージャー1140を含むことが可能であり、テーブル操作は、間接アドレスマッピングテーブル1142の中のエントリーに対してアトミック・コンペア・アンド・スワップ(CAS)操作を開始して、ページデータストレージ1112に関連付けられたページのそれまでの状態を、それらのページの新たな状態で置き換えることを含む。
[0180]例えば、マップテーブルマネージャー1140は、データ不透明型インターフェース1108に関連付けられた間接アドレスマッピングテーブル1142に対するテーブル操作を開始するように構成されることが可能であり、間接アドレスマッピングテーブル1142は、キャッシュ層ストレージ1144と、二次ストレージ1146とを含むデータストレージの管理のために共通で使用される。
[0181]例えば、間接アドレスマッピングテーブル1142は、ページの論理ロケーションを、それらのページの対応する物理ロケーションから分離し、ページデータストレージのユーザーは、それらのページの物理ロケーションアドレス値の代わりにページ識別子値を、ページデータストレージを参照するデータ構造における別の場所に記憶させる。
[0182]例えば、アップデートマネージャー1148が、間接アドレスマッピングテーブル1142の中のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、間接アドレスマッピングテーブル1142上でアトミック状態変更を行うようデータアップデートおよび管理アップデートを制御するように構成され得る。
[0183]例えば、ストレージ層1149が、間接アドレスマッピングテーブル1142の中のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、ページフラッシュからもたらされるログ構造化に関連するページロケーション変更を制御するように構成され得るログ構造化ストレージ層マネージャー1150を含み得る。
[0184]例えば、バッファーマネージャー1151が、ラッチフリーのアップデート操作を介してログ構造化二次ストレージバッファーに対するアップデートを制御するように構成され得る。このため、例えば、複数のスレッドが、ラッチフリーの操作を介してログ構造化二次ストレージバッファーを同時にアップデートすることが可能である。
[0185]例えば、バッファーマネージャー1151は、第1の二次ストレージアドレス引数までの、下位のアドレスを有する、ログ構造化二次ストレージバッファーにフラッシュされたページが、ログ構造化二次ストレージ内で安定していることを判定するための安定操作を開始するように構成され得る。
[0186]例えば、ページマネージャー1152が、ページに対するフラッシュ操作、割当て操作、および解放操作を制御するように構成され得る。例えば、ページマネージャー1152は、コンペア・アンド・スワップ(CAS)操作に基づいて、二次ストレージバッファー内に第1のページのページ状態をコピーすることを開始すること、そのページ状態の先頭にフラッシュデルタレコードを付加することであって、そのフラッシュデルタレコードは、二次ストレージ内の第1のページのストレージロケーションと、呼び出し元に関連付けられた注釈とを示す二次ストレージアドレスを含むこと、およびマッピングテーブルの中にフラッシュデルタレコードのアドレスをインストールすることに基づいてページ状態に対するアップデートを開始することに基づいて、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページをフラッシュする操作を開始するように構成され得る。
[0187]例えば、ページマネージャー1152は、第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することであって、その部分的スワップデルタレコードは、第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示すメインメモリーアドレスを含むことに基づいて、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページの部分をスワップする操作を開始するように構成され得る。
[0188]例えば、システムトランザクションマネージャー1154が、トランザクションをコミットすること、およびトランザクションを中途終了することを行うように構成され得る。
[0189]例えば、レコードマネージャー1156が、アップデートデルタレコード操作および置換アップデート操作に基づいてアップデートを制御するように構成され得る。
[0190]例えば、エポックマネージャー1160が、第1のプロセッサー操作によってページ情報にアクセスすることに先立って、第1のエポックに関連付けられた第1のエポック登録リスト内に第1のプロセッサー操作を登録することを開始するように構成され得る。例えば、第1のプロセッサー操作は、スレッドであり得る。
[0191]例えば、ページマネージャー1152は、コンペア・アンド・スワップ(CAS)操作を介して、マッピングテーブルの中にフラッシュデルタレコードに対するポインターをインストールすることであって、そのフラッシュデルタレコードは、CAS操作を介してマッピングテーブル内で置き換えられる既存のページ状態の先頭に付加されることに基づいて、二次ストレージにページ状態をフラッシュするように構成され得る。
[0192]例えば、ページマネージャー1152は、そのCAS操作が成功したかどうかを判定し、そのCAS操作が成功したと判定された場合、二次ストレージフラッシュバッファーに既存のページ状態を書き込む書込み操作を開始するように構成され得る。
[0193]例えば、ページマネージャー1152は、そのCAS操作が失敗したと判定された場合、既存のページにそれまでに割り当てられていたストレージスペースを無効にする操作を開始するように構成され得る。
[0194]本明細書の説明の趣旨を逸脱することなく、多くの異なる技法が、ラッチフリーのログ構造化ストレージシステムのために使用され得ることが、データ処理の分野の業者には理解されよう。
[0195]III.フローチャート説明
本明細書で説明される特徴は、本明細書の説明の趣旨を逸脱することなく、データ処理の分野の業者によって理解され得る多くの異なる様態で実施され得る例示的な実施形態として提供される。そのような特徴は、例示的な実施形態特徴としてのみ解釈されるべきであり、それらの詳細な説明だけに限定されるものと解釈されることは意図していない。
[0196]図12a〜図12dは、例示的な実施形態による、図11のシステムの例示的な動作を示すフローチャートである。図12aの例において、ページデータストレージに対するラッチフリーのアクセスを含むページデータストレージに対するインターフェースアクセスが、任意に選択されたページ指向型アクセスメソッドにもたらされ得る(1202)。例えば、前述したとおり、任意に選択されたページ指向型アクセスメソッド1110に、ページデータストレージ1112に対するラッチフリーのアクセスを含むページデータストレージ1112に対するインターフェースアクセスをもたらすことが可能なデータ不透明型インターフェース1108。
[0197]例えば、ページデータストレージに対するインターフェースアクセスは、安定したページデータストレージに対するログ構造化アクセスを含み得る(1204)。例えば、データ不透明型インターフェース1108が、前述したとおり、任意に選択されたページ指向型アクセスメソッド1110に、ページデータストレージ1112に対するログ構造化アクセスを含むページデータストレージ1112に対するインターフェースアクセスをもたらすことが可能である。
[0198]例えば、データ不透明型インターフェースに関連付けられた間接アドレスマッピングテーブルに対するテーブル操作が開始されることが可能であり、それらのテーブル操作は、間接アドレスマッピングテーブル内のエントリーに対してアトミック・コンペア・アンド・スワップ操作を開始して、ページデータストレージに関連付けられたページのそれまでの状態を、それらのページの新たな状態で置き換えることを含む(1206)。例えば、マップテーブルマネージャー1140が、前述したとおり、データ不透明型インターフェース1108に関連付けられた間接アドレスマッピングテーブル1142に対してテーブル操作を開始することが可能であり、テーブル操作は、間接アドレスマッピングテーブル1142内のエントリーに対してコンペア・アンド・スワップ(CAS)操作を開始して、ページデータストレージ1112に関連するページのそれまでの状態を、それらのページの新たな状態で置き換えることを含む。
[0199]例えば、間接アドレスマッピングテーブルが、図12bに示されるとおり、キャッシュ層ストレージと、二次ストレージとを含むデータストレージの管理のために共通で使用され得る(1208)。例えば、マップテーブルマネージャー1140が、前述したとおり、データ不透明型インターフェース1108に関連付けられた間接アドレスマッピングテーブル1142に対するテーブル操作を開始することが可能であり、間接アドレスマッピングテーブル1142は、キャッシュ層ストレージ1144と、二次ストレージ1146とを含むデータストレージの管理のために共通で使用される。
[0200]例えば、ページの論理ロケーションが、前述したとおり、それらのページの対応する物理ロケーションから分離されることが可能であり、ページデータストレージのユーザーは、それらのページに関する物理ロケーションアドレスの代わりにページ識別子値を、ページデータストレージを参照するデータ構造における別の場所に記憶させる(1210)。例えば、間接アドレスマッピングテーブル1142が、前述したとおり、ページの論理ロケーションを、それらのページの対応する物理ロケーションから分離し、ページデータストレージのユーザーは、それらのページに関する物理ロケーションアドレスの代わりにページ識別子値を、ページデータストレージを参照するデータ構造における別の場所に記憶させる。
[0201]例えば、データアップデートおよび管理アップデートが、間接アドレスマッピングテーブル内のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、間接アドレスマッピングテーブル上でアトミック状態変更を行って、制御され得る(1212)。例えば、アップデートマネージャー1148が、前述したとおり、間接アドレスマッピングテーブル1142内のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、間接アドレスマッピングテーブル1142上でアトミック状態変更を行って、データアップデートおよび管理アップデートを制御することが可能である。
[0202]例えば、ページフラッシュからもたらされるログ構造化に関連するページロケーション変更が、間接アドレスマッピングテーブル内のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、制御され得る(1214)。例えば、ログ構造化ストレージ層マネージャー1150が、前述したとおり、間接アドレスマッピングテーブル1142内のエントリーに対してラッチフリーのコンペア・アンド・スワップ操作を使用して、ページフラッシュからもたらされるログ構造化に関連するページロケーション変更を制御することが可能である。
[0203]例えば、図12cの例において、第1のエポックに関連付けられた第1のエポック登録リストに第1のプロセッサー操作を登録することが、第1のプロセッサー操作によってページ情報にアクセスすることに先立って開始され得る(1216)。
[0204]例えば、ページ状態が、コンペア・アンド・スワップ(CAS)操作を介して、マッピングテーブルの中にフラッシュデルタレコードに対するポインターをインストールすることに基づいて、二次ストレージにフラッシュされることが可能であり、そのフラッシュデルタレコードは、CAS操作を介してマッピングテーブル内で置き換えられる既存のページ状態の先頭に付加される(1218)。
[0205]例えば、ログ構造化二次ストレージバッファーに対するアップデートが、ラッチフリーのアップデート操作を介して制御され得る(1220)。
[0206]例えば、図12dの例において、コンペア・アンド・スワップ(CAS)操作を介して、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページをフラッシュする操作が、第2のストレージバッファーの中に第1のページのページ状態をコピーすることを開始すること、そのページ状態の先頭にフラッシュデルタレコードを付加することを開始することであって、そのフラッシュデルタレコードは、二次ストレージ内の第1のページのストレージロケーションと、呼び出し元に関連付けられた注釈とを示す二次ストレージアドレスを含むこと、およびマッピングテーブルの中にフラッシュデルタレコードのアドレスをインストールすることに基づいて、そのページ状態に対するアップデートを開始することに基づいて、開始され得る(1222)。
[0207]例えば、二次ストレージ内のロケーションに対してキャッシュ層ストレージ内の第1のページの一部分をスワップする操作が、第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することを開始することであって、その部分的スワップデルタレコードは、第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示すメインメモリーアドレスを含むことに基づいて、開始され得る(1224)。
[0208]本明細書の説明の趣旨を逸脱することなく、ラッチフリーのログ構造化ストレージシステムのために多くの異なる技法が使用され得ることが、データ処理の分野の業者には理解されよう。
[0209]顧客プライバシーおよび顧客機密保持が、長年にわたるデータ処理環境における継続的な配慮事項である。このため、ラッチフリーのログ構造化ストレージシステムのための例示的な技法は、そのような分析に関連付けられた、関連付けられたアプリケーションまたはサービスを有する1つまたは複数の契約合意(例えば、「サービス利用規約」TOS合意)を介して許可を与えたユーザーによって提供されるユーザー入力および/またはユーザーデータを使用することが可能である。例えば、ユーザーが、ユーザーの入力データが送信され、デバイス上に記憶されることに同意を与えることが可能であり、ただし、(例えば、ユーザーが受諾した合意を介して)各関係者が、送信および/または記憶がどのように行われるか、および記憶が保持される場合、どのようなレベルもしくは持続時間の記憶が保持され得るかを管理することが可能である。
[0210]本明細書で説明される様々な技法の実施形態は、デジタル電子回路として、またはコンピューターハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せ(例えば、様々な機能を実行する命令を実行するように構成された装置)として実施され得る。
[0211]実施形態は、純粋な伝播される信号などの純粋な信号として実現されるコンピュータープログラムとして実施され得る。そのような実施形態は、「コンピューター可読伝送媒体」を介して実施されるものとして本明細書に記載され得る。
[0212]代替として、実施形態は、データ処理装置、例えば、プログラマブルプロセッサー、コンピューター、または複数のコンピューターによって実行されるように、またはデータ処理装置の動作を制御するようにマシン使用可能デバイスもしくはマシン可読ストレージデバイス(例えば、ユニバーサルシリアルバス(USB)ストレージデバイス、テープ、ハードディスクドライブ、コンパクトディスク、デジタルビデオディスク(DVD)などの磁気媒体もしくはデジタル媒体)として実現されたコンピュータープログラムとして実施され得る。そのような実施形態は、「コンピューター可読記憶媒体」または「コンピューター可読ストレージデバイス」を介して実施されるものとして本明細書に記載されることが可能であり、このため、純粋な伝播される信号などの純粋に信号である実施形態と異なる。
[0213]前述したコンピュータープログラムなどのコンピュータープログラムは、コンパイラー型言語、インタープリター型言語、または機械語を含め、任意の形態のプログラミング言語で書かれることが可能であり、スタンドアロンのプログラムとして、またはモジュール、コンポーネント、サブルーチンとして、あるいはコンピューティング環境において使用されるのに適した他のユニットとして展開されることを含め、任意の形態で展開され得る。コンピュータープログラムは、マシン使用可能デバイス上、またはマシン可読ストレージデバイス(例えば、コンピューター可読媒体)上の実行可能コード(例えば、実行可能命令)として実体化され得る。前述した技法を実施することが可能なコンピュータープログラムは、1つの場所における、または複数の場所にわたって分散され、通信ネットワークによって互いに接続された1つのコンピューターまたは複数のコンピューターの上で実行されるように展開され得る。
[0214]方法ステップが、入力データを操作すること、および出力を生成することによって機能を実行するようコンピュータープログラムを実行する1つまたは複数のプログラマブルプロセッサーによって実行され得る。1つまたは複数のプログラマブルプロセッサーは、命令を並行に実行することが可能であり、かつ/または分散処理のために分散構成で配置されることが可能である。また、本明細書で説明される例示的な機能は、ハードウェア論理コンポーネントによって実行されることも可能であり、装置は、少なくとも部分的に、1つまたは複数のハードウェア論理コンポーネントとして実施されることが可能である。例えば、限定なしに、使用され得るハードウェア論理コンポーネントの例示的なタイプには、フィールド・プログラマブル・ゲート・アレイ(FPGA)、Program−specific Integrated Circuit(ASIC)、Program−specific Standard Product(ASSP)、System−on−a−chipシステム(SOC)、Complex Programmable Logic Device(CPLD)などが含まれ得る。
[0215]コンピュータープログラムの実行に適したプロセッサーには、例として、汎用マイクロプロセッサーおよび専用マイクロプロセッサー、ならびに任意の種類のデジタルコンピューターの任意の1つまたは複数のプロセッサーが含まれる。一般に、プロセッサーは、読取り専用メモリーから、またはランダムアクセスメモリーから、または読取り専用メモリーとランダムアクセスメモリーの両方から命令およびデータを受け取る。コンピューターの要素には、命令を実行するための少なくとも1つのプロセッサー、ならびに命令およびデータを記憶するための1つまたは複数のメモリーデバイスが含まれ得る。一般に、コンピューターは、データを記憶するための1つまたは複数の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクを含むことも可能であり、あるいはそのような大容量ストレージデバイスからデータを受け取るように、もしくはそのような大容量ストレージデバイスにデータを送るように、またはその両方を行うように動作上、結合されることも可能である。コンピュータープログラム命令およびデータを実体化するのに適した情報キャリアには、例として、半導体メモリーデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリーデバイス、磁気ディスク、例えば、内部ハードディスクもしくはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD−ROMディスクを含め、すべての形態の不揮発性メモリーが含まれる。プロセッサーおよびメモリーは、専用論理回路によって捕捉されること、または専用論理回路に組み込まれることが可能である。
[0216]ユーザーとの対話を可能にするのに、実施形態は、ユーザーに情報を表示するためのディスプレイデバイス、例えば、陰極線管(CRT)、液晶ディスプレイ(LCD)、またはプラズマモニターと、ユーザーがコンピューターに入力を与えることができるキーボードおよびポインティングデバイス、例えば、マウスもしくはトラックボールとを有するコンピューター上で実施され得る。他の種類のデバイスが、ユーザーとの対話を可能にするのに使用されることも可能であり、例えば、ユーザーに与えられるフィードバックは、任意の形態の知覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得る。例えば、視覚出力(例えば、視覚的ジェスチャー、ビデオ出力)、オーディオ出力(例えば、音声、デバイスサウンド)、触覚出力(例えば、タッチ、デバイスの動き)、温度、匂いなどを含め(ただし、以上には限定されない)、任意の形態の知覚出力を介して与えられ得る。
[0217]さらに、ユーザーからの入力は、音響入力、音声入力、または触覚入力を含め、任意の形態で受け取られることが可能である。例えば、入力は、視覚入力(例えば、ジェスチャー、ビデオ入力)、オーディオ入力(例えば、音声、デバイスサウンド)、触覚入力(例えば、タッチ、デバイスの動き)、温度、匂いなどを含め(ただし、以上には限定されない)、任意の形態の知覚入力を介してユーザーから受け取られ得る。
[0218]さらに、ナチュラルユーザーインターフェース(NUI)が、ユーザーとインターフェースをとるのに使用され得る。この脈絡において、「NUI」とは、ユーザーが、マウス、キーボード、リモコンなどの入力デバイスによって課せられる人為的な制約を免れて、「自然な」様態でデバイスと対話することを可能にする任意のインターフェース技術を指すことが可能である。
[0219]NUI技法の例には、音声認識、タッチ認識およびスタイラス認識、画面上のジェスチャー認識と画面に隣接したジェスチャー認識の両方、エアジェスチャー、頭部および目追跡、音声および発話、視覚、タッチ、ジェスチャー、ならびにマシンインテリジェンスに依拠する技法が含まれ得る。例示的なNUI技術には、すべてよりナチュラルなインターフェースを提供することが可能な、タッチセンシティブディスプレイ、音声および発話認識、意図および目標理解、デプスカメラ(例えば、立体カメラシステム、赤外線カメラシステム、RGB(赤、緑、青)カメラシステム、および以上の組合せ)を使用するモーションジェスチャー検出、加速度計/ジャイロスコープを使用するモーションジェスチャー検出、顔認識、3Dディスプレイ、頭部、目、および視線追跡、没入型拡張現実システムおよび仮想現実システム、ならびに電界検出電極を用いた脳活動を検知するための技術(例えば、脳波計(EEG)技法および関連する技法)が含まれ得るが、以上には限定されない。
[0220]実施形態は、例えば、データサーバーとしてバックエンドコンポーネントを含む、または、ミドルウェアコンポーネント、例えば、アプリケーションサーバーを含む、またはフロントエンドコンポーネント、例えば、ユーザーが実施形態と対話することができるグラフィカルユーザーインターフェースまたはウェブブラウザを有するクライアントコンピューターを含む、あるいはそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムとして実施され得る。コンポーネントは、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって互いに接続され得る。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えば、インターネットが含まれる。
[0221]主題は、構造上の特徴および/または方法上の動作に特有の言い回しで説明されてきたが、添付の特許請求の範囲において規定される主題は、以上に説明される特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、以上に説明される特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示される。説明される実施形態のいくつかの特徴が、本明細書で記載されるとおり例示されてきたが、今や、多くの変形形態、置換形態、変更形態、および均等形態が当業者には想起されよう。したがって、添付の特許請求の範囲は、実施形態の範囲に含まれるすべてのそのような変形形態および変更形態に及ぶものとする。

Claims (10)

  1. 少なくとも1つのプロセッサーを含むデバイスであって、前記少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含むデバイスを備え、
    前記データマネージャーは、任意に選択されたページ指向型アクセスメソッドに、ページデータストレージに対するラッチフリーのアクセスを含む前記ページデータストレージに対するインターフェースアクセスをもたらすように構成されたデータ不透明型インターフェースを含む、システム。
  2. 前記データ不透明型インターフェースは、前記任意に選択されたページ指向型アクセスメソッドに、ページデータストレージに対するログ構造化アクセスを含む前記ページデータストレージに対するインターフェースアクセスをもたらすように構成される請求項1に記載のシステム。
  3. キャッシュ層マネージャーをさらに備え、前記キャッシュ層マネージャーは、前記データ不透明型インターフェースに関連付けられた間接アドレスマッピングテーブルに対するテーブル操作を開始するように構成されたマップテーブルマネージャーであって、前記テーブル操作は、前記間接アドレスマッピングテーブル内のエントリーに対してアトミック・コンペア・アンド・スワップ操作を開始して、前記ページデータストレージに関連付けられたページのそれまでの状態を、前記ページの新たな状態で置き換えるステップを含むマップテーブルマネージャーを含む請求項1に記載のシステム。
  4. 前記マップテーブルマネージャーは、前記データ不透明型インターフェースに関連付けられた前記間接アドレスマッピングテーブルに対する前記テーブル操作を開始するように構成され、前記間接アドレスマッピングテーブルは、キャッシュ層ストレージと、二次ストレージとを含むデータストレージの管理のために共通で使用される請求項3に記載のシステム。
  5. 前記間接アドレスマッピングテーブルは、ページの論理ロケーションを、前記ページの対応する物理ロケーションから分離し、
    前記ページデータストレージのユーザーは、前記ページに関する物理ロケーションアドレス値の代わりにページ識別子値を、前記ページデータストレージを参照するデータ構造における別の場所に記憶させる請求項3に記載のシステム。
  6. 前記間接アドレスマッピングテーブル内のエントリーに対するラッチフリーのコンペア・アンド・スワップ操作を使用して、ページフラッシュからもたらされるログ構造化に関連するページロケーション変更を制御するように構成されたログ構造化ストレージ層マネージャーをさらに備える請求項3に記載のシステム。
  7. コンペア・アンド・スワップ(CAS)操作を介して、マッピングテーブルの中にフラッシュデルタレコードに対するポインターをインストールするステップに基づいて、二次ストレージにページ状態をフラッシュするように構成されたページマネージャーであって、前記フラッシュデルタレコードは、前記CAS操作を介して前記マッピングテーブルの中で置き換えられる既存のページ状態の先頭に付加されるページマネージャーをさらに備える請求項1に記載のシステム。
  8. 前記ページマネージャーは、
    前記CAS操作が成功したかどうかを判定し、前記CAS操作が成功したと判定された場合、二次ストレージフラッシュバッファーに前記既存のページ状態を書き込む書込み操作を開始するように構成される請求項7に記載のシステム。
  9. 少なくとも1つのプロセッサーを含むデバイスであって、前記少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含むデバイスを備え、
    前記データマネージャーは、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページをフラッシュする操作を、
    二次ストレージバッファーの中に前記第1のページのページ状態をコピーすることを開始するステップと、
    前記ページ状態の先頭にフラッシュデルタレコードを付加することを開始するステップであって、前記フラッシュデルタレコードは、二次ストレージ内の前記第1のページのストレージロケーションと、呼び出し元に関連付けられた注釈とを示す二次ストレージアドレスを含むステップと、
    コンペア・アンド・スワップ(CAS)操作を介して、マッピングテーブルの中にフラッシュデルタレコードのアドレスをインストールすることに基づいて前記ページ状態に対するアップデートを開始するステップとに基づいて、開始するように構成されたページマネージャーを含む、システム。
  10. 少なくとも1つのプロセッサーを含むデバイスであって、前記少なくとも1つのプロセッサーによって実行されるようにコンピューター可読記憶媒体上に実体化された命令を備えるデータマネージャーを含むデバイスを備え、
    前記データマネージャーは、二次ストレージ内のロケーションにキャッシュ層ストレージ内の第1のページの一部分をスワップする操作を、前記第1のページに関連付けられたページ状態の先頭に部分的スワップデルタレコードを付加することを開始するステップに基づいて開始するように構成されたページマネージャーであって、前記部分的スワップデルタレコードは、前記第1のページの欠落した部分の二次ストレージ内のロケーションを示すフラッシュデルタレコードのストレージロケーションを示すメインメモリーアドレスを含む、ページマネージャーを含む、システム。
JP2016521827A 2013-06-22 2014-06-20 複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージ Expired - Fee Related JP6408568B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/924,567 2013-06-22
US13/924,567 US9519591B2 (en) 2013-06-22 2013-06-22 Latch-free, log-structured storage for multiple access methods
PCT/US2014/043299 WO2014205298A1 (en) 2013-06-22 2014-06-20 Latch-free, log-structured storage for multiple access methods

Publications (3)

Publication Number Publication Date
JP2016524250A true JP2016524250A (ja) 2016-08-12
JP2016524250A5 JP2016524250A5 (ja) 2017-07-27
JP6408568B2 JP6408568B2 (ja) 2018-10-17

Family

ID=51210771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016521827A Expired - Fee Related JP6408568B2 (ja) 2013-06-22 2014-06-20 複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージ

Country Status (11)

Country Link
US (3) US9519591B2 (ja)
EP (1) EP3011480A1 (ja)
JP (1) JP6408568B2 (ja)
KR (1) KR20160023871A (ja)
CN (1) CN105408895A (ja)
AU (1) AU2014281290A1 (ja)
BR (1) BR112015031627A2 (ja)
CA (1) CA2913589A1 (ja)
MX (1) MX352867B (ja)
RU (1) RU2672719C2 (ja)
WO (1) WO2014205298A1 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9870066B2 (en) 2012-03-02 2018-01-16 Microsoft Technology Licensing, Llc Method of manufacturing an input device
US9075566B2 (en) 2012-03-02 2015-07-07 Microsoft Technoogy Licensing, LLC Flexible hinge spine
US9064654B2 (en) 2012-03-02 2015-06-23 Microsoft Technology Licensing, Llc Method of manufacturing an input device
US9134807B2 (en) 2012-03-02 2015-09-15 Microsoft Technology Licensing, Llc Pressure sensitive key normalization
US9706089B2 (en) 2012-03-02 2017-07-11 Microsoft Technology Licensing, Llc Shifted lens camera for mobile computing devices
US20130300590A1 (en) 2012-05-14 2013-11-14 Paul Henry Dietz Audio Feedback
US10031556B2 (en) 2012-06-08 2018-07-24 Microsoft Technology Licensing, Llc User experience adaptation
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US10163510B1 (en) * 2013-08-09 2018-12-25 Ellis Robinson Giles System and method for atomic persistence in storage class memory
US10133659B2 (en) * 2013-11-22 2018-11-20 Sap Se Proactive memory allocation
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10013351B2 (en) 2014-06-27 2018-07-03 International Business Machines Corporation Transactional execution processor having a co-processor accelerator, both sharing a higher level cache
US9772944B2 (en) 2014-06-27 2017-09-26 International Business Machines Corporation Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache
US10254942B2 (en) 2014-07-31 2019-04-09 Microsoft Technology Licensing, Llc Adaptive sizing and positioning of application windows
US10678412B2 (en) 2014-07-31 2020-06-09 Microsoft Technology Licensing, Llc Dynamic joint dividers for application windows
US10592080B2 (en) 2014-07-31 2020-03-17 Microsoft Technology Licensing, Llc Assisted presentation of application windows
US10031934B2 (en) * 2014-09-30 2018-07-24 International Business Machines Corporation Deleting tuples using separate transaction identifier storage
US10255304B2 (en) 2014-09-30 2019-04-09 International Business Machines Corporation Removal of garbage data from a database
US9928264B2 (en) 2014-10-19 2018-03-27 Microsoft Technology Licensing, Llc High performance transactions in database management systems
US9734081B2 (en) * 2014-12-10 2017-08-15 Advanced Micro Devices, Inc. Thin provisioning architecture for high seek-time devices
US10018844B2 (en) 2015-02-09 2018-07-10 Microsoft Technology Licensing, Llc Wearable image display system
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US10067960B2 (en) 2015-06-04 2018-09-04 Microsoft Technology Licensing, Llc Controlling atomic updates of indexes using hardware transactional memory
US9971526B1 (en) * 2015-06-29 2018-05-15 Amazon Technologies, Inc. Volume-based key-value store
CN105787135A (zh) * 2016-04-11 2016-07-20 久盈世纪(北京)科技有限公司 一种用于数据库日志备份的方法与设备
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CN106326355B (zh) * 2016-08-09 2019-10-18 武汉深之度科技有限公司 一种lfs系统中的日志处理方法及装置
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
WO2018090249A1 (en) 2016-11-16 2018-05-24 Huawei Technologies Co., Ltd. Log-structured storage method and server
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10359955B2 (en) * 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
CN108509462B (zh) * 2017-02-28 2021-01-29 华为技术有限公司 一种同步活动事务表的方法及装置
US10642821B2 (en) * 2017-03-17 2020-05-05 Apple Inc. Elastic data storage system
US11010401B2 (en) * 2017-04-25 2021-05-18 Microsoft Technology Licensing, Llc Efficient snapshot generation of data tables
FR3077892B1 (fr) * 2018-02-15 2023-12-22 Idemia Système et procédé d'enregistrement d'une transaction associée à une mémoire non volatile orientée page
US11392570B2 (en) * 2018-03-09 2022-07-19 Microsoft Technology Licensing, Llc Key-value store system
US10445022B1 (en) 2018-04-26 2019-10-15 Alibaba Group Holding Limited Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices
US11288251B2 (en) * 2018-05-25 2022-03-29 Microsoft Technology Licensing, Llc Supporting concurrent updates to a database page
US20200019476A1 (en) * 2018-07-11 2020-01-16 EMC IP Holding Company LLC Accelerating Write Performance for Microservices Utilizing a Write-Ahead Log
CN110888675B (zh) * 2018-09-11 2021-04-06 深圳云天励飞技术有限公司 硬件系统和电子设备
TWI684915B (zh) * 2018-11-28 2020-02-11 智微科技股份有限公司 記憶體區塊大小判定方法
US10521383B1 (en) * 2018-12-17 2019-12-31 Micron Technology, Inc. Handling operation collisions in a non-volatile memory
KR102450133B1 (ko) * 2019-04-04 2022-10-05 한국전자통신연구원 분산 잠금 관리를 하는 분산 시스템 및 그것의 동작 방법
US11151055B2 (en) * 2019-05-10 2021-10-19 Google Llc Logging pages accessed from I/O devices
US11436139B2 (en) 2019-05-10 2022-09-06 Microsoft Technology Licensing, Llc Object storage change-events
US11288140B2 (en) 2019-08-29 2022-03-29 Microsoft Technology Licensing, Llc Point in time blob restore
US10942852B1 (en) * 2019-09-12 2021-03-09 Advanced New Technologies Co., Ltd. Log-structured storage systems
CN111026678B (zh) * 2019-12-23 2021-11-16 深圳忆联信息系统有限公司 基于固态硬盘的缓存设计方法、装置及计算机设备
CN111666290A (zh) * 2020-05-28 2020-09-15 平安科技(深圳)有限公司 基于人工智能的数据替换方法、装置、计算机设备和介质
US11537569B2 (en) 2020-09-01 2022-12-27 Salesforce.Com, Inc. Merges using key range data structures
US11709814B2 (en) 2020-10-23 2023-07-25 Salesforce, Inc. Building of tries over sorted keys
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11995085B2 (en) * 2022-02-25 2024-05-28 Visa International Service Association System, method, and computer program product for efficiently storing multi-threaded log data

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002524801A (ja) * 1998-09-08 2002-08-06 オラクル コーポレーション ユーザ定義データ型のデータ項目を扱うための方法
JP2007012061A (ja) * 2005-06-27 2007-01-18 Seagate Technology Llc 記憶データ構造用の冗長性
US20080065670A1 (en) * 2001-06-08 2008-03-13 Sap Ag. Cache-conscious concurrency control scheme for database systems
US20090240664A1 (en) * 2008-03-20 2009-09-24 Schooner Information Technology, Inc. Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory
US20100191713A1 (en) * 2009-01-29 2010-07-29 Microsoft Corporation Unbundled storage transaction services
JP2010218529A (ja) * 2009-03-18 2010-09-30 Korea Advanced Inst Of Science & Technol ページ−ディファレンシャルを使用して、dbmsに独立的な方法でフラッシュメモリーにデータを格納する方法

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945474A (en) 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
US5043866A (en) 1988-04-08 1991-08-27 International Business Machines Corporation Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery
US5123104A (en) 1988-04-08 1992-06-16 International Business Machines Corporation Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations
US5247672A (en) 1990-02-15 1993-09-21 International Business Machines Corporation Transaction processing system and method with reduced locking
US5212788A (en) 1990-05-22 1993-05-18 Digital Equipment Corporation System and method for consistent timestamping in distributed computer databases
EP0465018B1 (en) 1990-06-29 1997-05-14 Oracle Corporation Method and apparatus for optimizing undo log usage
US5317731A (en) 1991-02-25 1994-05-31 International Business Machines Corporation Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
US5440727A (en) 1991-12-18 1995-08-08 International Business Machines Corporation Asynchronous replica management in shared nothing architectures
US5408653A (en) * 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
US5335343A (en) 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US5546579A (en) * 1994-05-02 1996-08-13 International Business Machines Corporation Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store
KR0169420B1 (ko) * 1995-10-17 1999-02-01 김광호 불 휘발성 반도체 메모리의 데이타 리드 방법 및 그에 따른 회로
US5870758A (en) 1996-03-11 1999-02-09 Oracle Corporation Method and apparatus for providing isolation levels in a database system
US5781910A (en) 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US6052699A (en) * 1996-12-11 2000-04-18 Lucent Technologies Inc. Garbage collection without fine-grain synchronization
US5845292A (en) 1996-12-16 1998-12-01 Lucent Technologies Inc. System and method for restoring a distributed checkpointed database
US5966706A (en) 1997-02-19 1999-10-12 At&T Corp Local logging in a distributed database management computer system
US5870763A (en) 1997-03-10 1999-02-09 Microsoft Corporation Database computer system with application recovery and dependency handling read cache
US6067550A (en) 1997-03-10 2000-05-23 Microsoft Corporation Database computer system with application recovery and dependency handling write cache
US5983015A (en) * 1997-10-31 1999-11-09 Oracle Corporation Latch-free sequence generation for high concurrency systems
WO1999031592A1 (fr) * 1997-12-16 1999-06-24 Tdk Corporation Systeme de memoire flash
US6085200A (en) 1997-12-23 2000-07-04 Unisys Corporation System and method for arranging database restoration data for efficient data recovery in transaction processing systems
US6185699B1 (en) 1998-01-05 2001-02-06 International Business Machines Corporation Method and apparatus providing system availability during DBMS restart recovery
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US6385712B1 (en) * 1999-10-25 2002-05-07 Ati International Srl Method and apparatus for segregation of virtual address space
KR100390853B1 (ko) * 2000-06-07 2003-07-10 차상균 주 메모리 트랜잭션 처리 시스템에서 병렬적 회복 연산을 위한 디퍼런셜 로깅 방법 및 장치
US20020138446A1 (en) 2000-09-14 2002-09-26 Thierry Antonin System and method for providing security for financial services terminals with a document driven interface
KR100832222B1 (ko) * 2001-06-09 2008-05-23 자프 아게 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법
US7305421B2 (en) * 2001-07-16 2007-12-04 Sap Ag Parallelized redo-only logging and recovery for highly available main memory database systems
CA2370601A1 (en) 2002-02-05 2003-08-05 Ibm Canada Limited-Ibm Canada Limitee Optimizing log usage for temporary objects
CA2384185A1 (en) 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Resizable cache sensitive hash table
US7426559B2 (en) 2002-05-09 2008-09-16 International Business Machines Corporation Method for sequential coordination of external database application events with asynchronous internal database events
US7039773B2 (en) 2003-04-29 2006-05-02 Oracle International Corporation Method and mechanism for efficient implementation of ordered records
US7139781B2 (en) * 2003-04-29 2006-11-21 International Business Machines Corporation Managing filesystem versions
US7412460B2 (en) 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
US7269708B2 (en) * 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
US7383389B1 (en) * 2004-04-28 2008-06-03 Sybase, Inc. Cache management system providing improved page latching methodology
JP2006004031A (ja) 2004-06-16 2006-01-05 Hitachi Ltd データ処理方法およびシステム並びにストレージ装置方法およびその処理プログラム
US7822727B1 (en) 2004-07-02 2010-10-26 Borland Software Corporation System and methodology for performing read-only transactions in a shared cache
US8150893B2 (en) 2004-12-29 2012-04-03 Alcatel Lucent Method and apparatus for incremental evaluation of schema-directed XML publishing
US7424499B2 (en) 2005-01-21 2008-09-09 Microsoft Corporation Lazy timestamping in transaction time database
WO2006119323A2 (en) 2005-05-03 2006-11-09 Palomar Technology, Llc Trusted monitoring system and method
US8145686B2 (en) 2005-05-06 2012-03-27 Microsoft Corporation Maintenance of link level consistency between database and file system
US20070130114A1 (en) * 2005-06-20 2007-06-07 Xiao-Feng Li Methods and apparatus to optimize processing throughput of data structures in programs
WO2007059534A2 (en) 2005-11-17 2007-05-24 3N1 Solutions, Inc. Distributed transaction history management system
JP4839091B2 (ja) 2006-01-27 2011-12-14 株式会社日立製作所 データベース回復方法及び計算機システム
US7801846B2 (en) 2006-04-04 2010-09-21 Computer Associates Think, Inc. Generating log sequence identifiers to apply a transaction to a storage system
US7475078B2 (en) 2006-05-30 2009-01-06 Microsoft Corporation Two-way synchronization of media data
US8028148B2 (en) * 2006-09-06 2011-09-27 Microsoft Corporation Safe and efficient allocation of memory
US8589341B2 (en) 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
US20080313364A1 (en) 2006-12-06 2008-12-18 David Flynn Apparatus, system, and method for remote direct memory access to a solid-state storage device
US7747589B2 (en) 2007-03-12 2010-06-29 Microsoft Corporation Transaction time indexing with version compression
US7873779B2 (en) * 2007-05-14 2011-01-18 Qualcomm Incorporated Memory page size auto detection
US7895151B2 (en) 2008-06-23 2011-02-22 Teradata Us, Inc. Fast bulk loading and incremental loading of data into a database
US8244667B1 (en) 2007-10-18 2012-08-14 Google Inc. Querying multidimensional data with independent fact and dimension pipelines combined at query time
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US20100030818A1 (en) 2008-07-31 2010-02-04 Yahoo! Inc. System and method for applying once a transaction delivered in a message published asynchronously in a distributed database
KR20100021868A (ko) * 2008-08-18 2010-02-26 삼성전자주식회사 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
JP4352156B1 (ja) * 2008-08-25 2009-10-28 兵庫県 地図情報処理装置、ナビゲーションシステム、およびプログラム
US8347050B2 (en) * 2009-01-27 2013-01-01 Microsoft Corporation Append-based shared persistent storage
KR101001143B1 (ko) * 2009-04-30 2010-12-17 주식회사 하이닉스반도체 비휘발성 메모리장치 및 이의 동작방법
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8595425B2 (en) * 2009-09-25 2013-11-26 Nvidia Corporation Configurable cache for multiple clients
US9235531B2 (en) * 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US9251214B2 (en) 2010-04-08 2016-02-02 Microsoft Technology Licensing, Llc In-memory database system
US8935487B2 (en) * 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
US8930321B2 (en) 2010-06-30 2015-01-06 Microsoft Corporation Logical recovery with unbundled transaction services
US9009125B2 (en) * 2010-10-13 2015-04-14 International Business Machiness Corporation Creating and maintaining order of a log stream
US8819056B2 (en) * 2010-11-19 2014-08-26 International Business Machines Corporation Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory
US8868514B2 (en) 2011-01-07 2014-10-21 Microsoft Corporation Transaction support for distributed data
US11099982B2 (en) * 2011-03-31 2021-08-24 Oracle International Corporation NUMA-aware garbage collection
US10140208B2 (en) * 2011-03-31 2018-11-27 Oracle International Corporation NUMA-aware garbage collection
US8725782B2 (en) * 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
JP2013033412A (ja) * 2011-08-03 2013-02-14 Internatl Business Mach Corp <Ibm> メモリ管理方法、プログラム及びシステム
US20130110767A1 (en) 2011-10-26 2013-05-02 Nec Laboratories America, Inc. Online Transaction Processing
US9483512B2 (en) * 2011-11-07 2016-11-01 Sap Se Columnar database using virtual file data objects
US9053153B2 (en) 2012-06-18 2015-06-09 Sap Se Inter-query parallelization of constraint checking
US9003162B2 (en) 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
US9635093B2 (en) 2012-11-28 2017-04-25 Sap Ag Slave side transaction ID buffering for efficient distributed transaction management
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
US9928264B2 (en) 2014-10-19 2018-03-27 Microsoft Technology Licensing, Llc High performance transactions in database management systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002524801A (ja) * 1998-09-08 2002-08-06 オラクル コーポレーション ユーザ定義データ型のデータ項目を扱うための方法
US20080065670A1 (en) * 2001-06-08 2008-03-13 Sap Ag. Cache-conscious concurrency control scheme for database systems
JP2007012061A (ja) * 2005-06-27 2007-01-18 Seagate Technology Llc 記憶データ構造用の冗長性
US20090240664A1 (en) * 2008-03-20 2009-09-24 Schooner Information Technology, Inc. Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory
US20100191713A1 (en) * 2009-01-29 2010-07-29 Microsoft Corporation Unbundled storage transaction services
JP2010218529A (ja) * 2009-03-18 2010-09-30 Korea Advanced Inst Of Science & Technol ページ−ディファレンシャルを使用して、dbmsに独立的な方法でフラッシュメモリーにデータを格納する方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JUSTIN J LEVANDOSKI; DAVID B LOMET; SUDIPTA SENGUPTA: "THE BW-TREE: A B-TREE FOR NEW HARDWARE PLATFORMS", DATA ENGINEERING (ICDE), 2013 IEEE 29TH INTERNATIONAL CONFERENCE ON, [ONLINE], JPN5016007700, 8 April 2013 (2013-04-08), pages 302 - 313, XP032430874, ISSN: 0003790243, DOI: 10.1109/ICDE.2013.6544834 *

Also Published As

Publication number Publication date
RU2672719C2 (ru) 2018-11-19
MX2015017630A (es) 2016-04-15
JP6408568B2 (ja) 2018-10-17
RU2015154744A (ru) 2017-06-28
CN105408895A (zh) 2016-03-16
US20190146917A1 (en) 2019-05-16
US20140379991A1 (en) 2014-12-25
US10216629B2 (en) 2019-02-26
US20170199818A1 (en) 2017-07-13
KR20160023871A (ko) 2016-03-03
MX352867B (es) 2017-12-13
RU2015154744A3 (ja) 2018-06-14
AU2014281290A1 (en) 2015-12-17
US9519591B2 (en) 2016-12-13
CA2913589A1 (en) 2014-12-24
EP3011480A1 (en) 2016-04-27
US11210220B2 (en) 2021-12-28
BR112015031627A2 (pt) 2017-07-25
WO2014205298A1 (en) 2014-12-24

Similar Documents

Publication Publication Date Title
US11210220B2 (en) Log-structured storage for data access
CN107077495B (zh) 数据库管理系统中的高性能事务
EP3170106B1 (en) High throughput data modifications using blind update operations
EP3304298B1 (en) Controlling atomic updates of indexes using hardware transactional memory
US9003162B2 (en) Structuring storage based on latch-free B-trees
US10599485B2 (en) Index structure using atomic multiword update operations
Levandoski et al. LLAMA: A cache/storage subsystem for modern hardware
Shukla et al. Schema-agnostic indexing with Azure DocumentDB
EP4028901B1 (en) A persistent memory file store for directly mapped persistent memory database
US10185630B2 (en) Failure recovery in shared storage operations
Forfang Evaluation of High Performance Key-Value Stores
Arulraj et al. Indexing
BR112017005899B1 (pt) Sistema e método implementado por computador para transações de alto desempenho em sistemas de gerenciamento de banco de dados

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180806

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180920

R150 Certificate of patent or registration of utility model

Ref document number: 6408568

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees