JP6538780B2 - 分散型データベースシステムのシステム全体のチェックポイント回避 - Google Patents
分散型データベースシステムのシステム全体のチェックポイント回避 Download PDFInfo
- Publication number
- JP6538780B2 JP6538780B2 JP2017157333A JP2017157333A JP6538780B2 JP 6538780 B2 JP6538780 B2 JP 6538780B2 JP 2017157333 A JP2017157333 A JP 2017157333A JP 2017157333 A JP2017157333 A JP 2017157333A JP 6538780 B2 JP6538780 B2 JP 6538780B2
- Authority
- JP
- Japan
- Prior art keywords
- database
- data
- storage
- page
- pages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 claims description 405
- 238000000034 method Methods 0.000 claims description 104
- 230000004044 response Effects 0.000 claims description 38
- 230000015654 memory Effects 0.000 claims description 27
- 230000008859 change Effects 0.000 claims description 25
- 238000001514 detection method Methods 0.000 claims description 14
- 238000004581 coalescence Methods 0.000 claims description 6
- 238000011156 evaluation Methods 0.000 claims 4
- 238000011084 recovery Methods 0.000 description 36
- 230000008569 process Effects 0.000 description 31
- 238000007726 management method Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000002085 persistent effect Effects 0.000 description 15
- 239000008186 active pharmaceutical agent Substances 0.000 description 13
- 238000005457 optimization Methods 0.000 description 13
- 238000013403 standard screening design Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 239000003292 glue Substances 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 239000002253 acid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000002459 sustained effect Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
って)フォルトトレランス、より高い耐久性、及び(例えば、より少ない大型の高価な構
成要素よりむしろ、多くのより小型でより安価な構成要素を使用することにより)より安
価な解決策を提供する(または支援する)ことができる。ただし、データベースは、従来
、分散の影響を最も受けにくいソフトウェアスタックの構成要素の中にある。例えば、デ
ータベースが提供すると期待されているいわゆるACIDプロパティ(例えば、原子性、
一貫性、独立性、及び永続性)を保証しつつもデータベースを分散することは困難である
ことがある。
のデータベースは、2つの共通モデル、つまり「シェアードナッシング」モデル及び「シ
ェアードディスク」モデルの内の1つを使用して(より大型のモノリシックシステムを単
に利用することによって「スケールアップ」されることと対照的に)「スケールアウト」
される。一般的に、「シェアードナッシング」モデルでは、受信されたクエリーは(それ
ぞれがクエリーの構成要素を含む)データベースシャードに分解され、これらのシャード
はクエリー処理のために異なる計算ノードに送られ、結果は、結果が返される前に収集さ
れ、統合される。一般的に「シェアードディスク」モデルでは、クラスタのあらゆる計算
ノードは同じ基礎的データにアクセスできる。このモデルを利用するシステムでは、キャ
ッシュコヒーレンシーを管理するために細心の注意を払う必要がある。これらのモデルの
両方において、大型のモノリシックデータベースは(スタンドアロンデータベースインス
タンスの機能性のすべてを含んだ)複数のノードで複製され、それらを縫い合わせるため
に「グルー」ロジックが追加される。例えば、「シェアードナッシング」モデルでは、グ
ルーロジックは、クエリーを再分割し、クエリーを複数の計算ノードに送信し、次いで結
果を結合するディスパッチャーの機能性を提供してよい。「シェアードディスク」モデル
では、グルーロジックが(例えば、キャッシング層でコヒーレンシーを管理するために)
複数のノードのキャッシュをともに融合させるのに役立ってよい。これらの「シェアード
ナッシング」データベースシステム及び「シェアードディスク」データベースシステムは
配備するのが高価であり、維持するのが複雑であり、多くのデータベース使用ケースにサ
ービスを提供しすぎる(over−serve)ことがある。
されているが、当業者は実施形態が説明されている実施形態または図面に制限されないこ
とを認識する。図面及び図面に対する詳細な説明は、開示されている特定の形式に実施形
態を制限することを目的とするのではなく、逆に、添付の特許請求の範囲によって定めら
れる精神及び範囲に入るすべての修正形態、同等物、及び変更形態を対象とすることを目
的とすることが理解されるべきである。本明細書に使用される見出しは編成のためだけで
あり、明細書または特許請求項の範囲を制限するために使用されることを意図していない
。本願を通して使用されるように、単語「してよい」は、強制の意味(つまり、しなけれ
ばならないを意味する)よりむしろ、許可の意味(つまり、する可能性を有することを意
味する)で使用される。単語「含む」、「含んだ」、及び「含む」はオープンエンド関係
を示し、したがって含むが、これに限定されるものではないことを意味する。同様に、単
語「有する」、「有している」、及び「有する」もオープンエンド関係を示し、したがっ
て有するが、これに限定されるものではないことを意味する。本明細書で使用される用語
「第1の」、「第2の」、「第3の」等は、それらが前に来る名詞に対するラベルとして
使用され、いかなるタイプの順序付け(例えば、空間的、時間的、論理的等)も、係る順
序付けがはっきりと特記されない限り暗示しない。
述されてよい。係る文脈では、「ように構成される」は、動作中に1つまたは複数のタス
クを実行する「構造を有すること」を概して意味する大まかな記述である。したがって、
構成要素は、構成要素が現在そのタスクを実行していなくてもタスクを実行するように構
成できる(例えば、コンピュータシステムは、動作が現在実行されていなくても動作を実
行するように構成されてよい)。いくつかの文脈では、「ように構成される」は、動作中
に1つまたは複数のタスクを実行する「回路網を有すること」を概して意味する構造の大
まかな記述であってよい。したがって、構成要素は、構成要素が現在オンでなくてもタス
クを実行するように構成できる。一般的に、「ように構成される」に対応する構造を形成
する回路網はハードウェア回路を含んでよい。
よい。係る説明は、言い回し「ように構成される」を含んでいるとして解釈されるべきで
ある。1つまたは複数のタスクを実行するように構成される構成要素を記述することは、
その構成要素に対して特許法第112条、第6項の解釈を行使することを明白に目的とし
ていない。
または複数の要因を説明するために使用される。この用語は、決定に影響を及ぼすことが
ある追加の要因を除外しない。すなわち、決定は、それらの要因だけに基づいてよい、ま
たは少なくとも部分的にそれらの要因に基づいてよい。言い回し「Bに基づいてAを決定
する」を考える。BがAの決定に影響を及ぼす要因であることがある一方、係る言い回し
は、Aの決定がCにも基づいていることを除外しない。他の例では、AはBだけに基づい
て決定されてよい。
徴または特徴の組合せまたはその任意の一般論を、それが本明細書で扱われる課題のいず
れかまたはすべてを軽減するか否かに関わらず含む。したがって、特徴の係る任意の組合
せに対して、本願(または本願に対する優先権を主張する出願)の手続き処理中に新しい
特許請求の範囲が策定されることがある。特に、添付特許請求の範囲に関して、従属請求
項からの特徴は独立請求項の特徴と組み合されてよく、それぞれの独立請求項からの特徴
は任意の適切な方法で、及び単に添付の特許請求の範囲に列挙される特定の組合せででは
なく、組み合されてよい。
施形態が開示される。分散型ストレージシステムのストレージノードは、いくつかの実施
形態では、ストレージノードに記憶される特定のデータページにリンクされる1つまたは
複数のリドゥログレコードをデータベースシステムから受信してよい。データページは、
データベースのためのデータを記憶する複数のデータページの内の1つであってよい。合
体イベントは、特定のデータページにリンクされる1つまたは複数のリドゥログレコード
に少なくとも部分的に基づいて特定のデータページについて検出されてよい。合体動作は
、特定のデータページの以前に記憶されていたバージョンに1つまたは複数のログレコー
ドを適用して、特定のデータページをその現在の状態で生成するために実行されてよい。
る。データベースシステムヘッドノードは、いくつかの実施形態では、故障回復動作を実
行してよい。システム故障から回復すると、データベースのためのデータを記憶する分散
型ストレージシステムのストレージノードとの接続が確立されてよい。いくつかの実施形
態では、ストレージノードとの接続の確立時、データベースヘッドノードは、データベー
スをアクセスのために利用できるようにしてよい。少なくともいくつかの実施形態では、
1つまたは複数のアクセス要求が受信されてよく、1つまたは複数のデータページの現在
の状態が要求され、ストレージノードから受信されてよい。
操作等)及び高速クラッシュ回復の技法を実装するように構成される例のウェブサービス
ベースのデータベースサービスを説明する。例のウェブサービスベースのデータベースサ
ービスの説明に含まれているのは、データベースエンジン及び別個の分散型データベース
ストレージサービス等の、例のウェブサービスベースのデータベースサービスの多様な態
様である。明細書は、次いでシステム全体のチェックポイント回避及び高速クラッシュ回
復のための方法の多様な実施形態のフローチャートを説明する。次に、明細書は、開示さ
れている技法を実装してよい例のシステムを説明する。明細書を通して多様な例が提供さ
れる。
加入者)がクラウドコンピューティング環境でデータストレージシステムを操作できるよ
うにするウェブサービスを実装してよい。いくつかの実施形態では、データストレージシ
ステムは、高度にスケーラブル且つ拡張可能である企業クラスのデータベースシステムで
あってよい。いくつかの実施形態では、クエリーは複数の物理リソース全体で分散される
データベースストレージに向けられてよく、データベースシステムは必要に応じてスケー
ルアップ、またはスケールダウンされてよい。データベースシステムは、異なる実施形態
で、多様なタイプ及び/または編成のデータベーススキーマと効果的に機能してよい。い
くつかの実施形態では、クライアント/加入者は、例えばSQLインタフェースを介して
データベースシステムに対話的に等、いくつかの方法でクエリーを提出してよい。他の実
施形態では、外部アプリケーション及びプログラムは、データベースシステムにオープン
データベースコネクティビティ(ODBC)ドライバインタフェース及び/またはJav
aデータベースコネクティビティ(JDBC)ドライバインタフェースを使用してクエリ
ーを提出してよい。
ベースシステムの多様な機能構成要素が本質的に分散されるサービス指向型データベース
アーキテクチャを実装してよい。これらのシステムは、例えば、(それぞれが、アプリケ
ーションサーバ、サーチ機能性、またはデータベースのコア機能を提供するために必要と
される機能性を超える他の機能性等の外来の機能性を含んでよい)複数の完全でモノリシ
ックなデータベースインスタンスを束ねるよりむしろ、データベースの基本的な動作(例
えば、クエリー処理、トランザクション管理、キャッシング、及び記憶)を、個々に且つ
無関係にスケーラブルであってよい階層に編成してよい。例えば、いくつかの実施形態で
は、本明細書に説明されるシステムの各データベースインスタンスは、(単一のデータベ
ースエンジンヘッドノード及びクライアント側ストレージシステムドライバを含んでよい
)データベース階層、及び(既存のシステムのデータベース階層で従来実行される動作の
いくつかを集合的に実行する複数のストレージノードを含んでよい)別個の分散されたス
トレージシステムを含んでよい。
低レベルの動作(例えば、バックアップ動作、復元動作、スナップショット動作、回復動
作、ログレコード操作動作、及び/または多様なスペース管理動作)のいくつかは、デー
タベースエンジンからストレージ層にオフロードされ、複数のノード及びストレージデバ
イス全体で分散されてよい。例えば、いくつかの実施形態では、データベースエンジンが
データベース(またはデータベースのデータページ)に変更を適用し、次いで修正された
データページをストレージ層に送信するよりむしろ、記憶されているデータベース(及び
データベースのデータページ)に対する変更の適用は、ストレージ層自体の責任であって
よい。係る実施形態では、修正されたデータページよりむしろ、リドゥログレコードがス
トレージ層に送信されてよく、その後リドゥ処理(例えば、リドゥログレコードの適用)
はいくぶんゆったりと且つ(例えば、バックグラウンドプロセスによって等)分散された
方法で実行されてよい。いくつかの実施形態では、クラッシュ回復(例えば、記憶されて
いるリドゥログレコードからのデータページの再構築)は、ストレージ層によって実行さ
れてもよく、分散された(及び、いくつかの場合、ゆったりとした)バックグラウンドプ
ロセスによって実行されてもよい。
ストレージ層に送信されるため、データベース階層とストレージ層との間にあるネットワ
ークトラフィックは、既存のデータベースシステムにおいてよりもはるかに少なくてよい
。いくつかの実施形態では、各リドゥログは、各リドゥログが変更を指定する対応するデ
ータページのサイズのほぼ10分の1であってよい。データベース階層及び分散型ストレ
ージシステムから送信される要求が非同期であってよいこと、及び複数の係る要求が一度
に送信中であってよいことに留意されたい。
1個のデータを返すことができることである。これを行うために、データベースはそれぞ
れが異なる機能を実行するいくつかの異なる構成要素(または階層)含んでよい。例えば
、従来のデータベースは3つの階層、つまりクエリーパーシング、最適化、及び実行を実
行するための第1の階層、トランザクション性(transactionality)、
回復、及び耐久性を提供するための第2の階層、及びローカルでアタッチされたディスク
でまたはネットワークでアタッチされたストレージのどちらかでストレージを提供する第
3の階層を有すると見なされてよい。上述されたように、従来のデータベースをスケーリ
ングしようとする以前の試みは、通常、データベースの3つすべての階層を複製し、それ
らの複製されたデータベースインスタンスを複数のマシン全体で分散することを伴ってい
た。
いてとは異なってデータベースシステムの機能性を仕切ってよく、スケーリングを実装す
るために複数のマシン全体で(完全なデータベースインスタンスよりもむしろ)機能構成
要素のサブセットだけを分散してよい。例えば、いくつかの実施形態では、クライアント
が面する階層は、どのデータが記憶されるべきなのか、または取り出されるべきなのかを
指定するが、どのようにしてデータを記憶するのか、または取り出すのかは指定しない要
求を受信するように構成されてよい。この階層は、要求のパーシング及び/または最適化
(例えば、SQLのパーシング及び要求)を実行してよい。一方、別の階層が、クエリー
の実行に責任を負ってよい。いくつかの実施形態では、第3の階層が結果のトランザクシ
ョン性及び一貫性を提供することに責任を負ってよい。例えば、この階層は、いわゆるA
CIDプロパティのいくらか、特にデータベースをターゲットとするトランザクションの
原子性を強化するよう構成されてよく、データベースの中で一貫性を維持し、データベー
スをターゲットとするトランザクション間で独立性を保証する。いくつかの実施形態では
、第4の階層が次いで多様な種類の障害が存在する場合に記憶されているデータの耐久性
を提供することに責任を負ってよい。例えば、この階層は、ロギングの変更、データベー
スクラッシュからの回復、基礎的な記憶ボリュームに対するアクセスの管理、及び/また
は基礎的な記憶ボリュームにおけるスペース管理に責任を負ってよい。
クの多様な構成要素を示すブロック図である。この例に示されるように、データベースイ
ンスタンスは、それぞれがデータベースインスタンスの機能性の一部を提供する、複数の
機能構成要素(または層)を含んでよい。この例では、データベースインスタンス100
は、(110として示される)クエリーパーシング及びクエリー最適化層、(120とし
て示される)クエリー実行層、(130として示される)トランザクション性及び一貫性
管理層、並びに(140として示される)耐久性及びスペース管理層を含む。上述された
ように、いくつかの既存のデータベースシステムでは、データベースインスタンスのスケ
ーリングは、(図1に示される層のすべてを含んだ)データベースインスタンス全体を1
回または複数回複製して、次いで層を互いに縫い合わせるためにグルーロジックを追加す
ることを含んでよい。いくつかの実施形態では、本明細書に説明されるシステムは、代わ
りにデータベース階層から別個のストレージ層に耐久性及びスペース管理層140の機能
性をオフロードしてよく、その機能性をストレージ層の複数のストレージノード全体で分
散してよい。
れるデータベースインスタンスの上半分の構造の多くを保持してよいが、バックアップ動
作、復元動作、スナップショット動作、回復動作、及び/または多様なスペース管理動作
の少なくとも部分に対する責任を記憶階層に再配分してよい。このようにして機能性を再
配分し、データベース階層と記憶階層との間でログ処理をしっかりと結合することは、ス
ケーラブルデータベースを提供する以前の手法と比較されるときに性能を改善し、可用性
を高め、コストを削減してよい。例えば、(実際のデータページよりもサイズがはるかに
小さい)リドゥログレコードだけがノード全体で送り出される、または書込み動作のレー
テンシパスの中で持続してよいので、ネットワーク及び入出力帯域幅の要件が削減されて
よい。さらに、データページの生成は、入信書込み動作を遮ることなく、(フォアグラウ
ンド処理が許すので)各ストレージノードでバックグラウンドで独立して実行できる。い
くつかの実施形態では、ログ構造化された非上書きストレージの使用が、例えばデータペ
ージの移動またはコピーよりむしろメタデータ操作を使用することによって、バックアッ
プ動作、復元動作、スナップショット動作、ポイントインタイムリカバリ動作、及びボリ
ューム増大動作をより効率的に実行できるようにしてよい。いくつかの実施形態では、ス
トレージ層は、複数のストレージノード全体でクライアントの代わりに記憶されたデータ
の複製(及び/またはリドゥログレコード等の、そのデータと関連付けられたメタデータ
)に対する責任を負ってもよい。例えば、データ(及び/またはメタデータ)は、(例え
ば、ストレージノードの集合体が独自の物理的に別個の独立したインフラストラクチャで
実行する単一の「可用性ゾーン」の中で等)ローカルに、及び/または単一の領域のもし
くは異なる領域の可用性ゾーン全体で複製されてよい。
タベース動作のために標準的なまたはカスタムのアプリケーションプログラミングインタ
フェース(API)をサポートしてよい。例えば、APIは、データベースの作成、テー
ブルの作成、テーブルの改変、ユーザーの作成、ユーザーの削除、テーブルでの1行また
は複数行の挿入、値のコピー、テーブルの中からのデータの選択(例えば、テーブルの問
合せ)、クエリーの取消しまたはアボート、スナップショットの作成のための動作、及び
/または他の動作をサポートしてよい。
ライアントプログラム(例えば、アプリケーション)及び/または加入者(ユーザー)か
らの読取り要求及び/または書込み要求を受信し、次いで要求をパースし、関連付けられ
たデータベース動作(複数の場合がある)実施するための実行計画を作成するデータベー
スエンジンヘッドノードサーバを含んでよい。例えば、データベースエンジンヘッドノー
ドは、複雑なクエリー及び接合の結果を得るために必要な一連のステップを作成してよい
。いくつかの実施形態では、データベースエンジンヘッドノードは、データベース階層と
別個の分散型データベース最適化ストレージシステムとの間の通信だけではなく、データ
ベースシステムのデータベース階層とクライアント/加入者との間の通信も管理してよい
。
ースまたはODBCインタフェースを通してエンドクライアントからSQL要求を受信す
ること、及びローカルでSQL処理及び(ロッキングを含んでよい)トランザクション管
理を実行することに責任を負ってよい。ただし、データベースエンジンヘッドノード(ま
たはデータベースエンジンヘッドノードの多様な構成要素)は、データページをローカル
で生成するよりむしろ、リドゥログレコードを生成してよく、リドゥログレコードを別個
の分散型ストレージシステムの適切なノードに送り出してよい。いくつかの実施形態では
、分散型ストレージシステムのためのクライアント側ドライバは、データベースエンジン
ヘッドノードでホストされてよく、それらのリドゥログレコードが向けられるセグメント
(またはセグメントのデータページ)を記憶する1つのストレージシステムノード(また
は複数のストレージシステムノード)にリドゥログレコードを送ることに責任を負ってよ
い。例えば、いくつかの実施形態では、各セグメントは保護グループを形成する複数のス
トレージシステムノードでミラーリングされてよい(またはそれ以外の場合、耐久的にさ
れてよい)。係る実施形態では、クライアント側ドライバは、各セグメントが記憶される
ノードを追跡調査してよく、クライアント要求が受信されるときに(例えば非同期で、及
び実質的にほぼ同時に並列で)セグメントが記憶されるノードのすべてにリドゥログを送
ってよい。クライアント側ドライバが(リドゥログレコードがストレージノードに書き込
まれていることを示すことがある)保護グループのストレージノードの書込み選抜グルー
プ(quorum)から肯定応答を受信するとすぐに、クライアント側ドライバはデータ
ベース階層に(例えば、データベースエンジンヘッドノードに)要求された変更の肯定応
答を送信してよい。例えば、データが保護グループを使用することによって耐久的にされ
る実施形態では、データベースエンジンヘッドノードは、クライアント側ドライバが書込
み選抜グループを構成するために十分なストレージノードインスタンスから回答を受信す
るまで及び受信しない限り、トランザクションをコミットできないことがある。同様に、
特定のセグメントに向けられる読取り要求の場合、クライアント側ドライバは、(例えば
非同期で、及び実質的に同時に並列で)セグメントが記憶されるノードのすべてに読取り
要求を送ってよい。クライアント側ドライバは保護グループのストレージノードの読取り
選抜グループから要求されたデータを受信するとすぐに、クライアント側ドライバはデー
タベース階層に(例えば、データベースエンジンヘッドノードに)要求されたデータを返
してよい。
ジンヘッドノード)は、最近アクセスされたデータページが一時的に保持されるキャッシ
ュを含んでよい。係る実施形態では、係るキャッシュに保持されるデータページをターゲ
ットとする書込み要求が受信されると、対応するリドゥログレコードをストレージ層に送
り出すことに加えて、データベースエンジンはそのキャッシュに保持されているデータペ
ージのコピーに変更を適用してよい。ただし、他のデータベースシステムにおいてとは異
なり、このキャッシュに保持されるデータページはストレージ層にフラッシュされること
はなく、該データページはいつでも(例えば、キャッシュに入れられたコピーに最も最近
に適用された書込み要求のリドゥログレコードがストレージ層に送信され、肯定応答され
た後のいつでも)廃棄されてよい。キャッシュは、異なる実施形態で、一度に多くても一
人の書込み者(または複数の読取り者)によるキャッシュへのアクセスを制御するための
多様なロッキング機構のいずれかを実装してよい。ただし、係るキャッシュを含む実施形
態では、キャッシュは複数のノード全体で分散れるのではなく、所与のデータベースイン
スタンスのためにデータベースエンジンヘッドノードだけに存在してよいことに留意され
たい。したがって、管理するキャッシュコヒーレンシーまたは一貫性問題がないことがあ
る。
るデータベース階層の異なるノードでのデータの読取り専用コピー等、システムでの同期
または非同期の読取りレプリカの使用をサポートしてよい。係る実施形態では、所与のデ
ータベースのデータベースエンジンヘッドノードが特定のデータページに向けられる読取
り要求を受信すると、データベースエンジンヘッドノードはこれらの読取り専用コピーの
内のいずれか1つ(または特定の1つ)に要求を送ってよい。いくつかの実施形態では、
データベースエンジンヘッドノードのクライアント側ドライバは、(例えば、これらの他
のノードにそのキャッシュを無効にするように促すために)キャッシュに入れられたデー
タページに対する更新及び/または失効についてこれらの他のノードに通知するように構
成されてよい(その後これらの他のノードはストレージ層から更新されたデータページの
更新済みのコピーを要求してよい)。
側ドライバは、記憶階層にプライベートインタフェースを曝露してよい。いくつかの実施
形態では、クライアント側ドライバは従来のiSCSIインタフェースを1つまたは複数
の他の構成要素(例えば、他のデータベースエンジンまたは仮想コンピューティングサー
ビス構成要素)に曝露してもよい。いくつかの実施形態では、記憶階層でのデータベース
インスタンスのためのストレージは、制限なくサイズを増大することがあり、それと関連
付けられた、制限されない数のIOPSを有することがある単一のボリュームとしてモデ
ル化されてよい。ボリュームが作成されるとき、ボリュームは特定のサイズで、(例えば
、ボリュームがどのように複製されるのかを指定する)特定の可用性/耐久性特徴で、及
び/またはボリュームと関連付けられたIOPSレートで(例えば、ピークと持続の両方
)作成されてよい。例えば、いくつかの実施形態では、さまざまな異なる耐久性モデルが
サポートされてよく、ユーザー/加入者は自らのデータベースのために、複製コピー、ゾ
ーン、もしくは領域の数、及び/またはその耐久性、性能、及びコストの目的に基づいて
複製が同期であるのか、それとも非同期であるのかを指定できてよい。
を維持してよく、ストレージノード間で追加のホップを必要とすることなく、読取り要求
及び書込み要求を実行するために必要なストレージノードのそれぞれに非同期要求を直接
的に送信してよい。例えば、いくつかの実施形態で、データベースに対する変更を行う要
求に応えて、クライアント側ドライバは、ターゲットとされたデータページのストレージ
を実装している1つまたは複数のノードを決定し、それらのストレージノードに対してそ
の変更を指定するリドゥログレコード(複数の場合がある)を送るように構成されてよい
。ストレージノードは、次いで、リドゥログレコードに指定される変更を将来のある時点
でターゲットとされたデータページに適用することに責任を負ってよい。書込みはクライ
アント側ドライバに肯定応答されるので、クライアント側ドライバは、ボリュームが耐久
的となる点を先に進めてよく、データベース階層に対してコミットを肯定応答してよい。
上述されたように、いくつかの実施形態では、クライアント側ドライバはストレージノー
ドサーバにデータページを絶対に送信しないことがある。これは、ネットワークトラフィ
ックを削減するだけではなく、チェックポイントまたは以前のデータベースシステムでの
フォアグラウンド処理スループットを制約するバックグラウンド書込み者スレッドの必要
性を削除してもよい。
ッシュによって提供されてよい。ただし、大規模故障イベントは一般的すぎて、メモリ内
複製だけを許可できないので、書込み要求は耐久性を必要としてよい。したがって、本明
細書に説明されるシステムは、記憶階層内のデータストレージを2つの領域、つまりリド
ゥログレコードがデータベース階層から受信されるときにリドゥログレコードが書き込ま
れる小さなアペンド専用ログ構造化領域、及びバックグラウンドでデータページの新しい
バージョンを作成するために、ログレコードがともに合体するより大きな領域として実装
することによって、フォアグラウンドレーテンシパス内にあるリドゥログレコード書込み
動作のコストを最小限に抑えるように構成されてよい。いくつかの実施形態では、メモリ
内構造は、インスタンス化されたデータブロックが参照されるまで連鎖ログレコード後方
へ、データページの前回のリドゥログレコードを指すデータページごとに維持される。こ
の手法は、読取りがおもにキャッシュに入れられるアプリケーション内を含んで、混合し
た読取り‐書込みワークロードに優れた性能を提供してよい。
のアクセスは、(ランダム入出力動作よりむしろ)一連の順次入出力動作から構成されて
よいため、行われている変更は互いに密接にパックされてよい。データページに変更する
たびに、永続データストレージに対する2つの入出力動作(リドゥログのための動作及び
修正されたデータページ自体のための動作)が生じる既存のシステムとは対照的に、いく
つかの実施形態では、本明細書に説明されるシステムはリドゥログレコードの受信に基づ
いて分散型ストレージシステムのストレージノードでデータページを合体させることによ
ってこの「書込み増幅」を回避してよい。
タベーススナップショットを撮ることに責任を負ってよい。ただし、記憶階層はログ構造
化ストレージを実装するため、データページ(例えば、データブロック)のスナップショ
ットを撮ることはデータページ/ブロックに最も最近適用されたリドゥログレコードと関
連付けられたタイムスタンプ(またはデータページ/ブロックの新しいバージョンを作成
するために複数のリドゥログレコードを合体させるための最も最近の動作と関連付けられ
たタイムスタンプ)を記録すること、及びページ/ブロックの以前のバージョン及び時間
内に記録された点までのあらゆる以後のログエントリのガベージコレクションを妨げるこ
とを含んでよい。係る実施形態では、データベーススナップショットを撮ることは、オフ
ボリュームバックアップ戦略を利用するときに必要とされるだろう、データブロックの読
取り、コピー、または書込みを必要としないことがある。いくつかの実施形態では、ユー
ザー/加入者はアクティブデータセットに加えてオンボリュームスナップショットのため
にどれほど多くの追加スペースを保つことを希望するのかを選ぶことができることがある
が、修正されたデータだけが追加のスペースを必要とするので、スナップショットのスペ
ース要件は最小であってよい。異なる実施形態では、スナップショットは、不連続(例え
ば、各スナップショットは時間の特定の時点でのデータページ内のデータのすべてに対す
るアクセスを提供してよい)または連続(例えば、各スナップショットは2つの時点の間
のデータページに存在するデータのすべてのバージョンに対するアクセスを提供してよい
)であってよい。いくつかの実施形態では、以前のスナップショットに戻ることは、その
スナップショット以降のすべてのリドゥログレコード及びデータページが無効であり、ガ
ベージコレクション可能であることを示すためにログレコードを記録すること、及びスナ
ップショット点後のすべてのデータベースキャッシュエントリを廃棄することを含んでよ
い。係る実施形態では、ストレージシステムは、ストレージシステムが通常の順方向読取
り/書込み処理で行うのと同様に、要求されるように、及びすべてのノード全体でバック
グラウンドで、ブロック単位でリドゥログレコードをデータブロックに適用するので、前
進復帰は必要とされないことがある。クラッシュ回復は、それによってノード全体で並列
且つ分散型にされてよい。
スシステムアーキテクチャの一実施形態が図2に示される。示されている実施形態では、
(データベースクライアント250aから250nとして示される)多くのクライアント
がネットワーク260を介してウェブサービスプラットホーム200と対話するように構
成されてよい。ウェブサービスプラットホーム200は、データベースサービス210、
分散型データベース最適化ストレージサービス220、及び/または1つまたは複数の他
の仮想コンピューティングサービス230の1つまたは複数のインスタンスとインタフェ
ースをとるように構成されてよい。所与の構成要素の1つまたは複数が存在してよい場合
、本明細書でのその構成要素に対する参照は単数形または複数形のどちらかで行われてよ
いことが留意される。ただしどちらの形の使用も他方を排除することを目的としていない
。
、マイクロプロセッサもしくはコンピュータシステム)によって直接的にまたは間接的に
実行可能な命令として、またはこれらの技法の組合せを使用してコンピュータハードウェ
アの中で直接的に実装されてよい。例えば、図2の構成要素はそれぞれが図10に示され
、以下に説明されるコンピュータシステム実施形態に類似してよい、いくつかのコンピュ
ーティングノード(つまり、単にノード)を含むシステムによって実装されてよい。多様
な実装形態では、所与のサービスシステム構成要素(例えば、データベースサービスの構
成要素またはストレージサービスの構成要素)の機能性は、特定のノードによって実装さ
れてよい、またはいくつかのノード全体で分散されてよい。いくつかの実施形態では、所
与のノードは複数のサービスシステム構成要素(例えば、複数のデータベースサービスシ
ステム構成要素)の機能性を実装してよい。
、スナップを生成する要求等)を含むウェブサービス要求を、ネットワーク260を介し
てウェブサービスプラットホーム200に提出するように構成可能な任意のタイプのクラ
イアントを包含してよい。例えば、所与のクライアント250は、ウェブブラウザの適切
なバージョンを含んでよい、またはウェブブラウザによって提供される実行環境に対する
拡張部として、またはウェブブラウザによって提供される実行環境の中で実行するように
構成されるプラグインモジュールまたは他のタイプのコードモジュールを含んでよい。代
わりに、クライアント250(例えば、データベースサービスクライアント)は、データ
ベースアプリケーション(もしくはデータベースアプリケーションのユーザーインタフェ
ース)、メディアアプリケーション、オフィスアプリケーション、または1つまたは複数
のデータベースを記憶する、及び/または1つまたは複数のデータベースにアクセスする
ために永続記憶装置リソースを利用してよい任意の他のアプリケーション等のアプリケー
ションを包含してよい。いくつかの実施形態では、係るアプリケーションは、必ずしもす
べてのタイプのウェブベースのデータに対する完全なブラウザサポートを実装しなくても
ウェブサービス要求を生成し、処理するための(例えば、ハイパテキスト転送プロトコル
(HTTP)の適切なバージョンのための)十分なプロトコルサポートを含んでよい。す
なわち、クライアント250は、ウェブサービスプラットホーム200と直接的に対話す
るように構成されるアプリケーションであってよい。いくつかの実施形態では、クライア
ント250は、表象状態転送(Representational State Tra
nsfer)(REST)様式ウェブサービスアーキテクチャ、ドキュメントベースもし
くはメッセージベースのウェブサービスアーキテクチャ、または別の適切なウェブサービ
スアーキテクチャに従ってウェブサービス要求を生成するよう構成されてよい。
アント)は、データベースのウェブサービスベースのストレージへのアクセスを、他のア
プリケーションに、それらのアプリケーションにはトランスペアレントな方法で提供する
ように構成されてよい。例えば、クライアント250は、オペレーティングシステムまた
はファイルシステムと統合して、本明細書に説明されるストレージモデルの適切な変形に
従ってストレージを提供するように構成されてよい。ただし、オペレーティングシステム
またはファイルシステムは、ファイル、ディレクトリ、及び/またはフォルダの従来のフ
ァイルシステム階層等の、アプリケーションに異なるストレージインタフェースを提示し
てよい。係る実施形態では、アプリケーションは図1のストレージシステムサービスモデ
ルを利用するために修正される必要はないことがある。代わりに、ウェブサービスプラッ
トホーム200へのインタフェースをとることの詳細は、オペレーティングシステム環境
の中で実行するアプリケーションの代わりに、クライアント250及びオペレーティング
システムまたはファイルシステムによって調整されてよい。
00にウェブサービス要求(例えば、スナップショット要求、スナップショット要求のパ
ラメータ、読取り要求、スナップショットの復元等)を伝達し、ウェブサービスプラット
ホーム200から応答を受信してよい。多様な実施形態では、ネットワーク260は、ク
ライアント250とプラットホーム200との間でウェブベースの通信を確立するために
必要なネットワーキングハードウェア及びプロトコルの任意の適切な組合せを包含してよ
い。例えば、ネットワーク260は、集合的にインターネットを実装する多様な電気通信
ネットワーク及びサービスプロバイダを概して包含してよい。また、ネットワーク260
は、公衆無線ネットワークまたは構内無線ネットワークだけではなく、ローカルエリアネ
ットワーク(LAN)または広域ネットワーク(WAN)等の構内ネットワークも含んで
よい。例えば、所与のクライアント250とウェブサービスプラットホーム200の両方
とも、独自の内部ネットワークを有する企業の中でそれぞれプロビジョニングされてよい
。係る実施形態では、ネットワーク260は、インターネットとウェブサービスプラット
ホーム200との間だけではなく、所与のクライアント250とインターネットとの間に
ネットワーキングリンクを確立するために必要なハードウェア(例えば、モデム、ルータ
、開閉器、ロードバランサ、プロキシサーバ等)及びソフトウェア(例えば、プロトコル
スタック、財務会計ソフト、ファイアウォール/セキュリティソフトウェア等)を含んで
よい。いくつかの実施形態では、クライアント250は、公衆インターネットよりむしろ
構内ネットワークを使用してウェブサービスプラットホーム200と通信してよい。例え
ば、クライアント250は、データベースサービスシステム(例えば、データベースサー
ビス210及び/または分散型データベース最適化ストレージサービス220を実装する
システム)と同じ企業の中でプロビジョニングされてよい。係る場合、クライアント25
0は、構内ネットワーク260(例えば、インターネットベースの通信プロトコルを使用
してよいが、公にアクセス可能ではないLANまたはWAN)を通して完全にプラットホ
ーム200と通信してよい。
タページのレコード)にアクセスする要求等のウェブサービス要求を受信し、処理するよ
うに構成される1つまたは複数のサービスエンドポイントを実装するように構成されてよ
い。例えば、ウェブサービスプラットホーム200は、特定のエンドポイントを実装する
ように構成されるハードウェア及び/またはソフトウェアを含んでよく、したがってその
エンドポイントに向けられたHTTPベースのウェブサービス要求は適切に受信され、処
理される。一実施形態では、ウェブサービスプラットホーム200は、クライアント25
0からウェブサービス要求を受信し、ウェブサービス要求を、処理のためにデータベース
サービス210、分散型データベース最適化ストレージサービス220、及び/または別
の仮想コンピューティングサービス230を実装するシステムの構成要素に転送するよう
に構成されるサーバシステムとして実装されてよい。他の実施形態では、ウェブサービス
プラットホーム200は、大規模なウェブサービス要求処理ロードを動的に管理するよう
に構成されるロードバランス機能及び他の要求管理機能を実装する(例えば、クラスタト
ポロジの)いくつかの別個のシステムとして構成されてよい。多様な実施形態では、ウェ
ブサービスプラットホーム200は、REST様式またはドキュメントベースの(例えば
、SOAPベースの)タイプのウェブサービス要求をサポートするように構成されてよい
。
ェブサービス要求に対するアドレス可能なエンドポイントとして機能することに加えて、
多様なクライアント管理機能を実装してよい。例えば、プラットホーム200は、例えば
要求側クライアント250のアイデンティティ、クライアント要求の数及び/または頻度
、クライアント250の代わりに記憶されているまたは取り出されるデータテーブル(ま
たはデータテーブルのレコード)のサイズ、クライアント250によって使用される全体
的な記憶帯域幅、クライアント250によって要求されるストレージのクラス、または任
意の他の測定可能なクライアント使用パラメータを追跡調査することによって、ストレー
ジリソースを含むウェブサービスのクライアント使用の計量及びアカウンティングを調整
してよい。プラットホーム200は、財務会計システム及び請求書作成システムを実装し
てもよい、またはクライアント使用活動の報告及び請求書作成のために外部システムによ
って照会され、処理されてよい使用データのデータベースを維持してもよい。特定の実施
形態では、プラットホーム200は、クライアント250から受け取られる要求の割合及
びタイプ、係る要求によって活用される帯域幅、係る要求のためのシステム処理レーテン
シ、システム構成要素活用(例えば、ストレージサービスシステムの中のネットワーク帯
域幅及び/またはストレージ活用)、要求から生じるエラーの割合及びタイプ、記憶され
、要求されるデータページもしくはそのレコードの特徴(例えば、サイズ、データタイプ
等)を反映する測定基準、または任意の他の適切な測定基準等、さまざまなストレージサ
ービスシステム操作測定基準を収集する、監視する、及び/または統合するよう構成され
てよい。いくつかの実施形態では、係る測定基準はシステム構成要素を調整し、維持する
ためにシステム管理者によって使用されてよい。一方、他の実施形態では、係る測定基準
(または係る測定基準の関連性のある部分)は、係るクライアントがデータベースサービ
ス210、分散型データベース最適化ストレージサービス220、及び/または別の仮想
コンピューティングサービス230(またはそれらのサービスを実装する基礎的なシステ
ム)の使用を監視できるようにするためにクライアント250に曝露されてよい。
御手順も実装してよい。例えば、特定のデータベースにアクセスする所与のウェブサービ
ス要求の場合、プラットホーム200は、要求と関連付けられるクライアント250が特
定のデータベースにアクセスする権限を与えられているかどうかを確かめるように構成さ
れてよい。プラットホーム200は、例えばアイデンティティ、パスワード、もしくは他
の信用証明書を特定のデータベースと関連付けられた信用証明書に対して評価する、また
は特定のデータベースに対する要求されたアクセスを、特定のデータベースに対するアク
セス制御リストに対して評価することによって係る権限付与を決定してよい。例えば、ク
ライアント250が特定のデータベースにアクセスするほど十分な信用証明書を有してい
ない場合、プラットホーム200は、例えばエラー状態を示す応答を要求側クライアント
250に返すことによって対応するウェブサービス要求を拒絶してよい。多様なアクセス
制御方針は、データベースサービス210、分散型データベース最適化ストレージサービ
ス220、及び/または他の仮想コンピューティングサービス230によってアクセス制
御情報のレコードまたはリストとして記憶されてよい。
210を実装するデータベースシステムの特徴にそれを通してアクセスしてよい一次イン
タフェースを表してよいが、ウェブサービスプラットホーム200が係る特徴に対する単
独のインタフェースを表す必要がないことが留意される。例えば、ウェブサービスインタ
フェースとは別個であってよい代替のAPIは、データベースシステムを提供する企業に
とって内部のクライアントがウェブサービスプラットホーム200を迂回できるようにす
るために使用されてよい。本明細書に説明される例の多くで、分散型データベース最適化
ストレージサービス220が、クライアント250にデータベースサービスを提供するコ
ンピューティングシステムまたは企業システムにとって内部であってよく、外部クライア
ント(例えば、ユーザーまたはクライアントアプリケーション)に曝露されないことがあ
ることに留意されたい。係る実施形態では、内部「クライアント」(例えば、データベー
スサービス210)は、(例えば、これらのサービスを実装するシステムの間で直接的に
APIを通して)分散型データベース最適化ストレージサービス220とデータベースサ
ービス210との間の実線として示されるローカルネットワークまたは構内ネットワーク
上で分散型データベース最適化ストレージサービス220にアクセスしてよい。係る実施
形態では、クライアント250の代わりにデータベースを記憶する上での分散型データベ
ース最適化ストレージサービス220の使用はそれらのクライアントにとってトランスペ
アレントであってよい。他の実施形態では、分散型データベース最適化ストレージサービ
ス220は、データベース管理のためにデータベースサービス210に依存するアプリケ
ーション以外のアプリケーションに、データベースまたは他の情報のストレージを提供す
るために、ウェブサービスプラットホーム200を通してクライアント250に曝露され
てよい。これは、ウェブサービスプラットホーム200と分散型データベース最適化スト
レージサービス220の間の破線によって図2に示される。係る実施形態では、分散型デ
ータベース最適化ストレージサービス220のクライアントは、ネットワーク260を介
して(例えば、インターネット上で)分散型データベース最適化ストレージサービス22
0にアクセスしてよい。いくつかの実施形態では、仮想コンピューティングサービス23
0は、クライアント250の代わりにコンピューティングサービス230を実行する上で
使用されるオブジェクトを記憶するために(例えば、仮想コンピューティングサービス2
30と分散型データベース最適化ストレージサービス220との間で直接的にAPIを通
して)分散型データベース最適化ストレージサービス220からストレージサービスを受
信するように構成されてよい。これは、仮想コンピューティングサービス230と分散型
データベース最適化ストレージサービス220との間の破線によって図2に示される。い
くつかのケースでは、プラットホーム200のアカウンティングサービス及び/または信
用証明書発行(credentialing)サービスは、管理クライアント等の内部ク
ライアントにとって、または同じ企業の中のサービス構成要素間では不必要となってよい
。
散型データベース最適化ストレージサービス220によって実装されてよいことに留意さ
れたい。係る記憶方針の例は、耐久性方針(例えば、記憶されるデータベース(またはデ
ータベースのデータページ)のインスタンスの数、及びデータベースが記憶される異なる
ノードの数を示す方針)、及び/または(要求トラフィックを一様にしようとしてデータ
ベースまたはデータベースのデータページを、異なるノード、ボリューム、及び/または
ディスク全体で分散してよい)ロードバランシング方針を含んでよい。さらに、異なる記
憶方針は、サービスの多様な1つによって異なるタイプの記憶された項目に適用されてよ
い。例えば、いくつかの実施形態では、分散型データベース最適化ストレージサービス2
20は、データページに対するよりもリドゥログレコードに対してより高い耐久性を実装
してよい。
ストレージサービスを含むデータベースシステムの多様な構成要素を示すブロック図であ
る。この例では、データベースシステム300は、いくつかのデータベースのそれぞれの
ためのそれぞれのデータベースエンジンヘッドノード320、及び(データベースクライ
アント350aから350nとして示されるデータベースシステムのクライアントにとっ
て可視であってよい、または可視でないことがある)分散型データベース最適化ストレー
ジサービス310を含む。この例で示されるように、データベースクライアント350a
から350nの内の1つまたは複数は、データベースヘッドノード320(例えば、それ
ぞれがそれぞれのデータベースインスタンスの構成要素である、ヘッドノード320a、
ヘッドノード320b、またはヘッドノード320c)に、ネットワーク360を介して
アクセスしてよい(例えば、これらの構成要素はネットワークアドレス指定可能且つデー
タベースクライアント350aから350nにアクセス可能であってよい)。ただし、デ
ータベースクライアント350aから350nの代わりに、1つまたは複数のデータベー
スのデータページ(及びリドゥレコード及び/またはそれと関連付けられた他のメタデー
タ)を記憶し、本明細書に説明されるようにデータベースシステムの他の機能を実行する
ためにデータベースシステムによって利用されてよい分散型データベース最適化ストレー
ジサービス310は、異なる実施形態では、ネットワークアドレス指定可能且つストレー
ジクライアント350aから350nにアクセス可能であってよい、またはアクセス可能
でないことがある。例えば、いくつかの実施形態では、分散型データベース最適化ストレ
ージサービス310は、ストレージクライアント350aから350nに非可視である方
法で多様な記憶動作、アクセス動作、ロギング変更動作、回復動作、ログレコード操作動
作、及び/またはスペース管理動作を実行してよい。
例えばアプリケーション)及び/または加入者(ユーザー)から要求(例えば、スナップ
ショット要求等)を受信し、次いで要求をパースし、要求を最適化し、関連付けられたデ
ータベース動作(複数の場合がある)を実施するための実行計画を作成する単一のデータ
ベースエンジンヘッドノード320を含んでよい。図3に示される例では、データベース
エンジンヘッドノード320aのクエリーパーシング、最適化、及び実行構成要素305
は、データベースクライアント350aから受信され、データベースエンジンヘッドノー
ド320aがその構成要素であるデータベースインスタンスをターゲットとするクエリー
のためにこれらの機能を実行してよい。いくつかの実施形態では、クエリーパーシング、
最適化、及び実行構成要素305はデータベースクライアント350aに、書込み肯定応
答、要求されたデータページ(及びデータページの部分)、エラーメッセージ、及びまた
は他の応答を適宜に含んでよいクエリー応答を返してよい。この例に示されるように、デ
ータベースエンジンヘッドノード320aは、分散型データベース最適化ストレージサー
ビス310の中で多様なストレージノードに読取り要求及び/またはリドゥログレコード
を送り、分散型データベース最適化ストレージサービス310から書込み肯定応答を受信
し、分散型データベース最適化ストレージサービス310から要求されたデータページを
受信し、及び/またはデータページ、エラーメッセージ、または他の応答を(同様にそれ
らをデータベースクライアント350aに返してよい)クエリーパーシング、最適化、及
び実行構成要素305に返してよい、クライアント側ストレージサービスドライバ325
も含んでよい。
タページが一時的に保持されてよいデータページキャッシュ335を含む。図3に示され
るように、データベースエンジンヘッドノード320aは、データベースエンジンヘッド
ノード320aが構成要素であるデータベースインスタンスでトランザクション性及び一
貫性を提供することに責任を負ってよいトランザクション及び一貫性管理構成要素330
も含んでよい。例えば、この構成要素は、データベースインスタンス及び該データベース
インスタンスに向けられるトランザクションの原子性、一貫性、及び独立性のプロパティ
を保証することに責任を負ってよい。図3に示されるように、データベースエンジンヘッ
ドノード320aは、多様なトランザクションのステータスを追跡調査し、コミットしな
いトランザクションのあらゆるローカルでキャッシュに入れられた結果をロールバックす
るためにトランザクション及び一貫性管理構成要素330によって利用されてよいトラン
ザクションログ340及びアンドゥログ345も含んでよい。
320c)のそれぞれが類似する構成要素を含んでよく、データベースクライアント35
0aから350nの内の1つまたは複数によって受信され、それが構成要素であるそれぞ
れのデータベースインスタンスに向けられるクエリーのために類似する機能を実行してよ
いことに留意されたい。
システムは、1つまたは複数のストレージノードでの記憶のために多様な論理ボリューム
、セグメント、及びページでデータを編成してよい。例えば、いくつかの実施形態では、
各データベースは論理ボリュームによって表され、各論理ボリュームはストレージノード
の集合体上でセグメント化される。ストレージノード内の特定のストレージノード上で生
きる各セグメントは、隣接ブロックアドレスのセットを含む。いくつかの実施形態では、
各データページはセグメントに記憶され、したがって各セグメントは1つまたは複数のデ
ータページの集合体及びそれが記憶する各データページの(リドゥログとも呼ばれる)変
更ログ(例えば、リドゥログレコードのログ)を記憶する。本明細書に詳細に説明される
ように、ストレージノードは(本明細書でULRとも呼ばれてよい)リドゥログレコード
を受信し、リドゥログレコードを合体させて、(例えば、ゆったりと及び/またはデータ
ページもしくはデータベースクラッシュに対する要求に応えて)対応するデータページ及
び/または追加のもしくは代替のログレコードの新しいバージョンを作成するように構成
されてよい。いくつかの実施形態では、データページ及び/または変更ログは(クライア
ントによって指定されてよく、クライアントの代わりにデータベースシステムでデータベ
ースが維持されている)可変構成に従って複数のストレージノード全体でミラーリングさ
れてよい。例えば、異なる実施形態では、データログまたは変更ログの1つのコピー、2
つのコピー、または3つのコピーがデフォルト構成、アプリケーションに特有の耐久性優
先度、またはクライアントによって指定される耐久性優先度に従って、1つ、2つ、また
は3つの異なる可用性ゾーンもしくは領域のそれぞれに記憶されてよい。
ース最適化ストレージシステムによってデータの編成を説明するために使用されてよい。
ーションが理解するストレージのきわめて耐久性のある単位を表す論理概念である。すな
わち、ボリュームはデータベースの多様なユーザーページに対する書込み動作の単一の一
貫性がある順序付けられたログとしてユーザー/クライアント/アプリケーションに見え
る分散型ストアである。各書込み動作は、ボリュームの中で単一のユーザーページのコン
テンツに対する論理的な順序付けられた変形を表すユーザーログレコード(ULR)で符
号化されてよい。上述されたように、ULRは、本明細書でリドゥログレコードと呼ばれ
てもよい。各ULRは、一意の識別子(例えば、論理シーケンス番号(LSN))を含ん
でよい。各ULRは、ULRに高い耐久性及び可用性を提供するために、保護グループ(
PG)を形成する、分散型ストア内の1つまたは複数の同期セグメントに持続してよい。
ボリュームは、バイトの可変サイズの連続範囲にLSN型の読取り/書込みインタフェー
スを提供してよい。
た複数のエクステントから構成されてよい。係る実施形態では、ボリュームはボリューム
エクステントの変わりやすい連続シーケンスから構成されるストレージの単位を表してよ
い。ボリュームに向けられる読取り及び書込みは、構成するボリュームエクステントに対
する対応する読取り及び書込みにマッピングされてよい。いくつかの実施形態では、ボリ
ュームのサイズは、ボリュームエクステントを追加するまたはボリュームの最後からボリ
ュームエクステントを削除することによって変更されてよい。
される耐久性の単位である。すなわち、セグメントは、特有の固定サイズバイト範囲のデ
ータに、限られたベストエフォート型の耐久性(例えば、ストレージノードである、故障
の永続的であるが冗長ではない単一点)を提供する。多様な実施形態では、このデータは
、いくつかの場合では、ユーザーアドレス指定可能なデータのミラーであってよい、また
はこのデータはボリュームメタデータまたはイレイジャーコーディングされたビット等の
他のデータであってよい。所与のセグメントは、正確に1つのストレージノード上で生き
てよい。ストレージノードの中で、複数のセグメントが各SSD上で生きてよく、各セグ
メントは1つのSSDに制限されてよい(例えば、セグメントは複数のSSDに及ばない
ことがある)。いくつかの実施形態では、セグメントはSSD上で連続領域を占有するよ
うに要求されないことがある。むしろ、各SSDにセグメントのそれぞれによって所有さ
れる領域を記述する割当てマップがあってよい。上述されたように、保護グループは複数
のストレージノードに渡って拡散される複数のセグメントから構成されてよい。いくつか
の実施形態では、セグメントは、(サイズが作成時に定義される)バイトの固定サイズの
隣接範囲に、LSN型読取り/書込みインタフェースを提供してよい。いくつかの実施形
態では、各セグメントはセグメントUUID(例えば、セグメントの汎用一意識別子)に
よって識別されてよい。
実施形態では、各ページは、オペレーティングシステムによって定義されるサイズのメモ
リの(例えば、バーチャルメモリ、ディスク、または他の物理メモリの)ブロックであり
、本明細書では用語「データブロック」によって参照されてもよい。すなわち、記憶ペー
ジは隣接セクタのセットであってよい。記憶ページは、ヘッダ及びメタデータがあるログ
ページでの単位だけではなく、SSDでの割当ての単位としても役立ってよい。いくつか
の実施形態では、及び本明細書に説明されるデータベースシステムの文脈では、用語「ペ
ージ」または「記憶ページ」は、通常、4096バイト、8192バイト、16384バ
イト、または32768バイト等の2の倍数であってよいデータベース構成によって定義
されるサイズの類似したブロックを指してよい。
ゥログレコード)を記憶するために使用される記憶ページのタイプである。いくつかの実
施形態では、ログページは、サイズが記憶ページと同一であってよい。各ログページは、
例えばそれが属するセグメントを識別するメタデータ等、そのログページについてのメタ
データを含むヘッダを含んでよい。ログページが編成の単位であり、必ずしも書込み動作
に含まれるデータの単位ではないことがあることに留意されたい。例えば、いくつかの実
施形態では、標準的な転送処理の間、書込み動作は、一度の1つのセクタをログの末尾に
書き込んでよい。
クラスであってよい。例えば、ストレージシステムのユーザー/クライアント/アプリケ
ーションによって作成され、理解されるユーザーログレコード(ULR)は、ボリューム
内のユーザーデータに対する変更を示すために使用されてよい。ストレージシステムによ
って生成される制御ログレコード(CLR)は、現在の無条件ボリューム耐久性(unc
onditional volume durable)LSN(VDL)等のメタデー
タを追跡調査するために使用される制御情報を含んでよい。ヌルログレコード(NLR)
は、いくつかの実施形態では、ログセクタまたはログページの未使用のスペースを充填す
るためのパディングとして使用されてよい。いくつかの実施形態では、これらのクラスの
それぞれの中に多様なタイプのログレコードがあってよく、ログレコードのタイプはログ
レコードを解釈するために呼び出される必要がある関数に対応してよい。例えば、1つの
タイプは特定の圧縮フォーマットを使用する圧縮フォーマットのユーザーページのすべて
のデータを表してよく、第2のタイプは、ユーザーページの中のバイト範囲の新しい値を
表してよく、第3のタイプは、整数として解釈されるバイトのシーケンスに対する増分動
作を表してよく、第4のタイプはページの中の別の場所に1バイト範囲をコピーすること
を表してよい。いくつかの実施形態では、特にULRの場合、ログレコードタイプは、(
整数または列挙型によってよりむしろ)バージョニング及び開発を簡略化してよいGUI
Dによって識別されてよい。
グレコードに特有であるデータまたはパラメータ値である。例えば、いくつかの実施形態
では、大部分(またはすべての)ログレコードが含み、ストレージシステム自体が理解す
るパラメータまたは属性のセットがあってよい。これらの属性は、セクタサイズに比較し
て相対的に小さくてよい共通のログレコードヘッダ/構造の部分であってよい。さらに、
大部分のログレコードは、そのログレコードタイプに特有の追加のパラメータまたはデー
タを含んでよく、この追加情報はそのログレコードのペイロードと見なされてよい。いく
つかの実施形態では、特定のULRのペイロードがユーザーページサイズよりも大きい場
合、ペイロードは、そのペイロードがユーザーページのためのすべてのデータを含む絶対
ULR(AULR)によって置き換えられてよい。これは、ストレージシステムがユーザ
ーページのサイズに等しいULRのペイロードのサイズに対する上限を課すことができる
ようにしてよい。
はログヘッダとともに記憶されてよいことに留意されたい。他の実施形態では、ペイロー
ドは別の場所に記憶されてよく、そのペイロードが記憶される場所に対するポインタはロ
グヘッダとともに記憶されてよい。さらに他の実施形態では、ペイロードの一部はヘッダ
に記憶されてよく、ペイロードの残りは別個の場所に記憶されてよい。ペイロード全体が
ログヘッダとともに記憶される場合、これは帯域内ストレージと呼ばれてよい。それ以外
の場合、ストレージは帯域外であると呼ばれてよい。いくつかの実施形態では、大部分の
大きなAULRのペイロードは(以下に説明される)ログのコールドゾーンで帯域外で記
憶されてよい。
ステムのユーザー/クライアントに可視である特定のボリュームのためのそのアラインメ
ントである。ユーザーページは論理概念であり、特定のユーザーページのバイトは任意の
記憶ページにそのまま記憶されてよい、または記憶されないことがある。特定のボリュー
ムのユーザーページのサイズは、そのボリュームの記憶ページサイズとは無関係であって
よい。いくつかの実施形態では、ユーザーページサイズはボリュームごとに設定可能であ
ってよく、ストレージノード上の異なるセグメントは異なるユーザーページサイズを有し
てよい。いくつかの実施形態では、ユーザーページサイズは、セクタサイズ(例えば、4
KB)の倍数となるように制約されてよく、上限(例えば、64KB)を有してよい。他
方、記憶ページサイズは、ストレージノード全体にとって固定であってよく、基礎的なハ
ードウェアに対する変更がない限り変化しないことがある。
めに使用される記憶ページのタイプである。いくつかの実施形態では、データページに記
憶されるあらゆる1個のデータがログレコードと関連付けられ、各ログレコードは(デー
タセクタとも呼ばれる)データページの中のセクタに対するポインタを含んでよい。いく
つかの実施形態では、データページは各セクタによって提供されるメタデータ以外の任意
の埋込みメタデータを含まないことがある。データページ内のセクタ間には関係性がなく
てよい。代わりに、ページへの編成は、セグメントへのデータの割当ての粒度の表現とし
てのみ存在してよい。
単一のバーチャルマシンである。各ストレージノードは、複数のローカルにアタッチされ
たSSDを含んでよく、1つまたは複数のセグメントへのアクセスにネットワークAPI
を提供してよい。いくつかの実施形態では、多様なノードはアクティブリスト上または(
例えば、ノードが応答するには低速である、またはそれ以外の場合、正常に機能しないが
、完全に使用不可ではない場合等)劣化したリスト上にあってよい。いくつかの実施形態
では、クライアント側ドライバは、ノードが交換されるべきかどうか、及びいつノードが
交換されるべきかを判断するため、及び/または観察された性能に基づいて、いつ及びど
のようにして多様なノードの間でデータを再配分するのかを決定するために、ノードをア
クティブまたは劣化として分類するのを支援してよい(または、分類するのに責任を負っ
てよい)。
リッドステートドライブ、電池によって支援されるRAM、不揮発性RAMデバイス(例
えば、1つまたは複数のNV−DIMM)、または別のタイプの永続ストレージデバイス
等の、その記憶ボリュームによって利用されるストレージのタイプに関わりなく、ストレ
ージノードによって見られるローカルブロック記憶ボリュームを指してよい。SSDは、
必ずしも直接的にハードウェアにマッピングされない。例えば、異なる実施形態では、単
一のソリッドステートストレージデバイスは、各ボリュームが複数のセグメントに分割さ
れ、複数のセグメントに渡ってストライピングされる複数のローカルボリュームに分けら
れる可能性がある、及び/または単一ドライブは単に管理の容易さのために複数のボリュ
ームに分割されてよい。いくつかの実施形態では、各SSDは単一の固定場所で割当てマ
ップを記憶してよい。このマップは、特定のセグメントによってどの記憶ページが所有さ
れているのか、及び(データページと対照的に)これらのページの内のどれがログページ
であるのかを示してよい。いくつかの実施形態では、記憶ページは、転送処理が割当てを
待機する必要がなくてよいように各セグメントに事前に割り当てられてよい。割当てマッ
プに対するあらゆる変更は、新規に割り当てられた記憶ページがセグメントによって使用
される前に耐久的にされる必要があることがある。
って示される。この例では、データベースシステム400は、相互接続460上でデータ
ベースエンジンヘッドノード420と通信する分散型データベース最適化ストレージシス
テム410を含む。図3に示される例でのように、データベースエンジンヘッドノード4
20は、クライアント側ストレージサービスドライバ425を含んでよい。この例では、
分散型データベース最適化ストレージシステム410は(430、440、及び450と
して示されるストレージシステムサーバノードを含んだ)複数のストレージシステムサー
バノードを含み、複数のストレージシステムサーバノードのそれぞれは、それが記憶する
セグメント(複数の場合がある)のためのデータページ及びリドゥログのストレージ、多
様なセグメント管理機能を実行するように構成されるハードウェア及び/またはソフトウ
ェアを含む。例えば、各ストレージシステムサーバノードは以下の動作、つまり、複製(
例えば、ストレージノードの中で等ローカルに)、データページを生成するためのリドゥ
ログの合体、スナップショット(例えば、作成、復元、削除等)、ログ管理(例えば、ロ
グレコードの操作)、クラッシュ回復、及び/または(例えば、セグメントの)スペース
管理の内のいずれかまたはすべての少なくとも一部を実行するように構成されるハードウ
ェア及び/またはソフトウェアを含んでよい。各ストレージシステムサーバノードは、デ
ータブロックがクライアント(例えば、ユーザー、クライアントアプリケーション、及び
/またはデータベースサービス加入者)の代わりに記憶されてよい(例えば、SSD等の
)複数のアタッチされたストレージデバイスも有してよい。
数の場合がある)433、セグメントリドゥログ(複数の場合がある)435、セグメン
ト管理機能437、及びアタッチされたSSD471から478を含む。再び、ラベル「
SSD」はソリッドステートドライブを指してよい、または指さないこともあるが、基礎
的なハードウェアに関わりなく、より概してローカルブロック記憶ボリュームを指してよ
いことに留意されたい。同様に、ストレージシステムサーバノード440は、データペー
ジ(複数の場合がある)443、セグメントリドゥログ(複数の場合がある)445、セ
グメント管理機能447、及びアタッチされたSSD481から488を含み、ストレー
ジシステムサーバノード450は、データページ(複数の場合がある)453、セグメン
トリドゥログ(複数の場合がある)455、セグメント管理機能457、及びアタッチさ
れたSSD491から498を含む。
単位であり、書込みが部分的だけに完了されるリスクなしに書き込むことができるSSD
での最大サイズであってよい。例えば、多様なソリッドステートドライブ及びスピニング
メディアのセクタサイズは4KBであってよい。本明細書に説明される分散型データベー
ス最適化ストレージシステムのいくつかの実施形態では、ありとあらゆるセクタは、セク
タがその一部であるより高レベルのエンティティに関わりなく、セクタの始まりに64ビ
ット(8バイト)のCRCを含んで有してよい。係る実施形態では、(セクタがSSDか
ら読み取られるたびに確証されてよい)このCRCは破損を検出する際に使用されてよい
。いくつかの実施形態では、ありとあらゆるセクタは、その値がセクタをログセクタ、デ
ータセクタ、または初期化されていないセクタとして該セクタを識別する「セクタタイプ
」バイトを含んでもよい。例えば、いくつかの実施形態では、0のセクタタイプバイト値
は、セクタが初期化されていないことを示してよい。
システムサーバノードのそれぞれは、例えばリドゥログを受信し、データページ等を送り
返すために、データベースエンジンヘッドノードとの通信を管理するノードサーバのオペ
レーティングシステムで実行中のプロセスのセットを実装してよい。いくつかの実施形態
では、分散型データベース最適化ストレージシステムに書き込まれるすべてのデータブロ
ックは、(例えば、リモートキー値耐久性バックアップストレージシステムで)長期の及
び/またはアーカイブのストレージにバックアップされてよい。
化ストレージシステムの使用を示すブロック図である。この例では、1つまたは複数のク
ライアントプロセス510が、データベースエンジン520及び分散型データベース最適
化ストレージシステム530を含むデータベースシステムによって維持される1つまたは
複数のデータベースにデータを記憶してよい。図5に示される例では、データベースエン
ジン520がデータベース階層構成要素560、及び(分散型データベース最適化ストレ
ージシステム530とデータベース階層構成要素560との間のインタフェースとして働
く)クライアント側ドライバ540を含む。いくつかの実施形態では、データベース階層
構成要素560は、図3のクエリーパーシング、最適化、及び実行構成要素305、並び
にトランザクション及び一貫性管理構成要素330によって実行される機能等の機能を実
行してよい、及び/またはデータページ、トランザクションログ、及び/またはアンドゥ
ログ(例えば、図3のデータページキャッシュ335、トランザクションログ340、及
びアンドゥログ345によって記憶されるもの)を記憶してよい。
要素560に(ストレージノード535aから535nの内の1つまたは複数に記憶され
るデータをターゲットとする読取り要求及び/または書込み要求を含んでよい)データベ
ースクエリー要求515を送信してよく、データベース階層構成要素560からデータベ
ースクエリー応答517(例えば、書込み肯定応答及び/または要求されたデータを含む
応答)を受信してよい。データページに書き込む要求を含む各データベースクエリー要求
515は、分散型データベース最適化ストレージシステム530への以後のルーティング
のためにクライアント側ドライバ540に送信されてよい、1つまたは複数のレコード書
込み要求541を生成するためにパースされ、最適化されてよい。この例では、クライア
ント側ドライバ540は、それぞれのレコード書込み要求541に対応する1つまたは複
数のリドゥログレコード531を生成してよく、リドゥログレコード531を分散型デー
タベース最適化ストレージシステム530のストレージノード535の特定のストレージ
ノードに送信してよい。分散型データベース最適化ストレージシステム530は、データ
ベースエンジン520に(具体的には、クライアント側ドライバ540に)各リドゥログ
レコード531の対応する書込み肯定応答532を返してよい。クライアント側ドライバ
540は、これらの書込み肯定応答をデータベース階層構成要素560に(書込み応答5
42として)渡してよく、データベース階層構成要素560は次いでデータベースクエリ
ー応答517の内の1つとして1つまたは複数のクライアントプロセス510に対応する
応答(例えば、書込み肯定応答)を送信してよい。
、1つまたは複数のレコード読取り要求543を生成するためにパースされ、最適化され
てよく、レコード読取り要求543は分散型データベース最適化ストレージシステム53
0への以後のルーティングのためにクライアント側ドライバ540に送信されてよい。こ
の例では、クライアント側ドライバ540は、分散型データベース最適化ストレージシス
テム530のストレージノード535の特定のストレージノードにこれらの要求を送信し
てよく、分散型データベース最適化ストレージシステム530はデータベースエンジン5
20に(具体的には、クライアント側ドライバ540に)要求されたデータページ533
を返してよい。クライアント側ドライバ540は、戻りデータレコード544としてデー
タベース階層構成要素560に返されたデータページを送信してよく、データベース階層
構成要素560は次いでデータベースクエリー応答517として1つまたは複数のクライ
アントプロセス510にデータページを送信してよい。
534が、分散型データベース最適化ストレージシステム530からデータベースエンジ
ン520に(具体的には、クライアント側ドライバ540に)送信されてよい。これらの
メッセージは、クライアント側ドライバ540から、エラー報告メッセージ及び/または
損失報告メッセージ545として、データベース階層構成要素560に、及び次いで1つ
または複数のクライアントプロセス510に、データベースクエリー応答517とともに
(または代わりに)渡されてよい。
I531から534、及びクライアント側ドライバ540のAPI541から545は、
データベースエンジン520が分散型データベース最適化ストレージシステム530のク
ライアントであるかのように、分散型データベース最適化ストレージシステム530の機
能性をデータベースエンジン520に曝露してよい。例えば、データベースエンジン52
0は、データベースエンジン520及び分散型データベース最適化ストレージシステム5
30の組合せによって実装されるデータベースシステムの多様な動作(例えば、記憶動作
、アクセス動作、ロギング変更動作、回復動作、及び/またはスペース管理動作)を実行
するために(またはそれらの実行を容易にするために)(クライアント側ドライバ540
を通して)リドゥログレコードまたは要求データページをこれらのAPIを通して書き込
んでよい。図5に示されるように、分散型データベース最適化ストレージシステム530
は、それぞれが複数のアタッチされたSSDを有してよいストレージノード535aから
535nにデータブロックを記憶してよい。いくつかの実施形態では、分散型データベー
ス最適化ストレージシステム530は、多様なタイプの冗長性方式の適用によって、記憶
されているデータブロックに高い耐久性を提供してよい。
ストレージシステム530との間のAPI呼出し及び応答(例えば、API531から5
34)、及び/またはクライアント側ドライバ540とデータベース階層構成要素560
との間のAPI呼出し及び応答(例えば、API541から545)は、(例えば、ゲー
トウェイ制御プレーンによって管理される)安全なプロキシ接続上で実行されてよい、ま
たは公衆ネットワーク上でもしくは代わりにバーチャルプライベートネットワーク(VP
N)接続等のプライベートチャネル上で実行されてよいことに留意されたい。本明細書に
説明されるデータベースシステムの構成要素への、及びデータベースシステムの構成要素
の間のこれらの及び他のAPIは、シンプルオブジェクトアクセスプロトコル(SOAP
)技術及び表象状態転送(REST)技術を含むが、これに限定されるものではない異な
る技術に従って実装されてよい。例えば、これらのAPIは、SOAP APIまたはR
ESTful APIとして実装されてよいが、必ずしも実装されない。SOAPは、ウ
ェブベースのサービスとの関連で情報を交換するためのプロトコルである。RESTは分
散型ハイパーメディアシステム用のアーキテクチャスタイルである。(RESTfulウ
ェブサービスとも呼ばれてよい)RESTful APIは、HTTP及びREST技術
を使用して実装されるウェブサービスAPIである。本明細書に説明されるAPIは、い
くつかの実施形態では、データベースエンジン520及び/または分散型データベース最
適化ストレージシステム530との統合をサポートするために、C、C++、Java、
C#、及びPerlを含むが、これに限定されるものではない多様な言語でクライアント
ライブラリでラップされてよい。
、データベースエンジンによって実行される構成要素と、別個の分散されたデータベース
最適化ストレージシステムで実行される構成要素との間で仕切られてよい。1つの特定の
例では、(例えば、単一のデータブロックを、そのデータブロックにレコードを追加する
ことによって更新するために)何かをデータベースに挿入する要求をクライアントプロセ
ス(またはクライアントプロセスのスレッド)から受信することに応えて、データベース
エンジンヘッドノードの1つまたは複数の構成要素は、クエリーパーシング、最適化、及
び実行を実行してよく、クエリーの各部分をトランザクション及び一貫性管理構成要素に
送信してよい。トランザクション及び一貫性管理構成要素は、他のクライアントプロセス
(またはクライアントプロセスのスレッド)が同時に同じ行を修正しようとしていないこ
とを保証してよい。例えば、トランザクション及び一貫性管理構成要素は、この変更がデ
ータベースにおいて原子的に、一貫して、耐久的に、及び独立して実行されることを保証
することに責任を負ってよい。例えば、トランザクション及び一貫性管理構成要素は、分
散型データベース最適化ストレージサービスのノードの1つに送信されるリドゥログレコ
ードを生成し、ACIDプロパティがこのトランザクションについて満たされていること
を保証する順序で及び/またはタイミングでリドゥログレコードを(他のクライアント要
求に応えて生成される他のリドゥログとともに)分散型データベース最適化ストレージサ
ービスに送信するために、データベースエンジンヘッドノードのクライアント側ストレー
ジサービスドライバとともに機能してよい。対応するストレージノードは、(ストレージ
サービスによって「更新レコード」と見なされてよい)リドゥログレコードを受信すると
、データブロックを更新し、データブロックのリドゥログを更新してよい(例えば、デー
タブロックに向けられるすべての変更のレコード)。いくつかの実施形態では、データベ
ースエンジンは、この変更のためにアンドゥログレコードを生成することに責任を負って
よく、アンドゥログのためのリドゥログレコードを生成することにも責任を負ってよく、
この両方ともトランザクション性を保証するために(データベース階層で)ローカルに使
用されてよい。ただし、従来のデータベースシステムにおいてとは異なり、本明細書に説
明されるシステムは、(変更をデータベース階層で適用し、修正されたデータブロックを
ストレージシステムに送るよりむしろ)データブロックに変更を適用するための責任をス
トレージシステムに移してよい。さらに、図8から図9Bで本明細書に説明されるように
、多様な実施形態では、システム全体のチェックポイントは、ストレージシステムによっ
ても実行されてよい多様なログレコード演算に起因するデータベースシステムクラッシュ
からの高速回復とともに、データベースシステムで回避されてよい。
、いくつかの実施形態では、ログエントリページ及び物理アプリケーションページが、S
SDデバイスと関連付けられたページの単一のヒープから割り当てられてよい。この手法
は、未指定のままとなるために、および自動的に使用に適合するためにログページ及びデ
ータページによって消費される相対的な記憶量を残すという優位点を有してよい。また、
手法は、ページが使用され、準備なしに随意に転用されるまでページを準備されないまま
にできるという優位点も有してよい。他の実施形態では、割当てモデルはストレージデバ
イスをログエントリ及びデータページのための別々のスペースに仕切ってよい。一度係る
割当てモデルが図6のブロック図に示され、以下に説明される。
トレージノード(または永続ストレージデバイス)にデータ及びメタデータがどのように
記憶されてよいのかを示すブロック図である。この例では、SSDストレージスペース6
00は、610と名前が付けられたスペースの部分にSSDヘッダ及び他の固定メタデー
タを記憶する。SSDストレージスペース600は、620と名前が付けられたスペース
の部分にログページを記憶し、追加のログページのために初期化され、確保される、63
0と名前が付けられたスペースを含む。(640として示される)SSDストレージスペ
ース600の一部分は初期化されているが、割り当てられておらず、(650として示さ
れる)スペースの別の部分は初期化されておらず、割り当てられていない。最後に、66
0と名前が付けられたSSDストレージスペース600の部分はデータページを記憶する
。
されたログページスロット(一時的)は625として示される。最後の確保されたログペ
ージスロットは635として示され、最後の使用可能なログページスロットは645とし
て示される。この例では、最初の使用されたデータページスロット(一時的)は665と
して示される。いくつかの実施形態では、SSDストレージスペース600の中でのこれ
らの要素(615、625、635、645、及び665)のそれぞれの位置は、それぞ
れのポインタによって識別されてよい。
まりにパックされてよい。ログページが解放されるために開く穴は、アドレススペースの
さらに先に入る追加のログページスロットが使用される前に再使用されてよい。例えば、
最悪の場合、最初のn個のログページスロットが有効なログデータを含み、この場合、n
は今まで同時に存在した有効なログページの最大数である。この例では、有効データペー
ジはフラットストレージスペースの最後にパックされてよい。データページが解放される
ことにより開く穴は、アドレススペースでより下方の追加のデータページスロットが使用
される前に再使用されてよい。例えば、最悪の場合、最後のmのデータページが有効なデ
ータを含み、この場合mは今まで同時に存在した有効なデータページの最大数である。
セットの部分になることができる前に、ログページスロットは有効な将来のログエントリ
ページのために混同できない値に初期化される必要がある。廃棄されたログページは新し
い有効なログページについて絶対に混同されることがないほど十分なメタデータを有する
ので、これは、リサイクルされるログページスロットに暗黙に当てはまる。ただし、スト
レージデバイスが最初に初期化されるとき、またはアプリケーションデータページを記憶
するために潜在的に使用されたスペースが再利用されるとき、ログページスロットは、ロ
グページスロットがログページスロットプールに加えられる前に初期化される必要がある
。いくつかの実施形態では、ログスペースのバランスを取り戻す/再利用することは、バ
ックグラウンドタスクとして実行されてよい。
可能なログページスロットと最後の確保されたログページスロット(625)との間に領
域を含む。いくつかの実施形態では、このプールは、(例えば、最後の確保されたログペ
ージスロット635を識別するポインタに対する更新を持続させることによって)新しい
ログページスロットの再初期化なしに最後の使用可能なログページスロット(625)ま
で安全に増大してよい。この例では、(ポインタ645によって識別される)最後の使用
可能なログページスロットを超えて、プールは、初期化されたログページスロットを持続
し、最後の使用可能なログページスロット(645)のためのポインタを持続的に更新す
ることによって、(ポインタ665によって識別される)最初の使用されたデータページ
スロットまで成長してよい。この例では、650として示される、SSDストレージスペ
ース600の以前に初期化されておらず、割り当てられていない部分は、ログページを記
憶するためにとりあえず利用されてよい。いくつかの実施形態では、カレントログページ
スロットプールは、最後の確保されたログページスロット(635)のポインタに対する
更新を持続することによって(ポインタによって識別される)最後の使用されたログペー
ジスロットの位置まで縮小されてよい。
よって識別される)最後の使用可能なログページスロットと、SSDストレージスペース
600の最後との間に領域を含む。いくつかの実施形態では、データページプールは、最
後の使用可能なログページスロット(645)のポインタに対する更新を持続するによっ
て、最後の確保されたログページスロット(635)に対するポインタによって識別され
る位置まで安全に成長してよい。この例では、640として示される、SSDストレージ
スペース600の以前に初期化されたが、割り当てられていない部分は、データページを
記憶するためにとりあえず利用されてよい。これを超えて、プールは、最後の確保された
ログページスロット(635)及び最後の使用可能なログページスロット(645)のポ
インタに対する更新を持続し、ログページよりむしろデータページを記憶するために、6
30及び640として示されるSSDストレージスペース600の部分を効果的に割り当
てし直すことによって、最後の使用されたログページスロット(625)のポインタによ
って識別される位置まで安全に成長してよい。いくつかの実施形態では、データページス
ロットプールは、追加のログページスロットを初期化し、最後の使用可能なログページス
ロット(645)のポインタに対する更新を持続することによって、最初の使用されたデ
ータページスロット(665)のポインタによって識別される位置まで安全に縮小されて
よい。
ジプールのページサイズは、優れたパッキング挙動を容易にしつつも、独立して選択され
てよい。係る実施形態では、有効なログページが、アプリケーションデータによって形成
されるスプーフィングされたログページにリンクする可能性はないことがあり、壊れたロ
グと依然として書き込まれていない次のページにリンクする有効なログテールとを区別す
ることが可能なことがある。図6に示される割当て手法を利用する実施形態では、起動時
、最後の確保されたログページスロット(635)に対するポインタによって識別される
位置までのログページスロットのすべてが迅速に且つ連続して読み取られてよく、(推論
されるリンキング/順序付けを含む)ログインデックス全体が再構築されてよい。係る実
施形態では、すべてはLSN順序制御制約から推論できるので、ログページ間の明示的な
リンキングの必要性がないことがある。
ホットログを含む部分、コールドログを含む部分、及びユーザーページデータを含む部分
から構成されてよい。ゾーンは、必ずしもSSDの隣接領域ではない。むしろ、ゾーンは
、記憶ページの粒度で点在することがある。さらに、セグメント及びそのプロパティにつ
いてのメタデータを記憶するセグメントごとにルートページがあってよい。例えば、セグ
メントのルートページはセグメントのためのユーザーページサイズ、セグメント内のユー
ザーページの数、(フラッシュ番号(flush number)の形で記録されてよい
)ホットログゾーンの現在の始まり/ヘッド、ボリュームエポック、及び/またはアクセ
ス制御メタデータを記憶してよい。
信されるにつれ、クライアントからの新しい書込みを受け入れてよい。ページの以前のバ
ージョンからのデルタの形をとるユーザーページ/データページに対する変更を指定する
デルタユーザーログレコード(DULR)及び完全なユーザーページ/データページのコ
ンテンツを指定する絶対ユーザーログレコード(AULR)の両方とも、ログに完全に書
き込まれてよい。ログレコードは、ほぼ、ログレコードが受信される順序でこのゾーンに
追加されてよく(例えば、ログレコードがLSNでソートされるのではない)、それらは
ログページに渡って広がることがある。例えばログレコードは独自のサイズの表示を含ん
でよい等、ログレコードは自己記述的である必要がある。いくつかの実施形態では、ガベ
ージコレクションはこのゾーンで実行されない。代わりに、スペースは、すべての必要と
されるログレコードがコールドログにコピーされた後にログの始まりから切り詰めること
によって再利用されてよい。ホットゾーンのログセクタは、セクタが作成されるたびに最
も最近の既知の無条件VDLで注釈されてよい。条件付きのVDL CLRは、それらが
受信されるにつれホットゾーンに書き込まれてよいが、最も最近に書き込まれたVDL
CLRだけが意味を持ってよい。
にはフラッシュ番号が割り当てられる。フラッシュ番号は、各ログページの中のあらゆる
セクタの部分として書き込まれてよい。フラッシュ番号は、2つのログページを比較する
ときに、どのログページが後に書き込まれたのかを決定するために使用されてよい。フラ
ッシュ番号は単調に増加し、SSD(またはストレージノード)に対して調べられて(s
coped)よい。例えば、単調に増加するフラッシュ番号のセットは、SSD上のすべ
てのセグメント(またはストレージノード上のすべてのセグメント)の間で共有される。
記憶されてよい。このゾーンでは、AULRはそのサイズに応じて必ずしもデータをイン
ラインで記憶しないことがある。例えば、AULRが大きなペイロードを有する場合、ペ
イロードのすべてまたは一部がデータゾーンに記憶されてよく、AULRはそのデータが
データゾーンのどこに記憶されているのかを指してよい。いくつかの実施形態では、コー
ルドログゾーンのログページは、セクタ単位でよりむしろ、一度に1全ページ、書き込ま
れてよい。コールドゾーンのログページは一度に全ページ書き込まれるため、全セクタ内
のフラッシュ番号が同一ではないコールドゾーンのどのようなログページも不完全に書き
込まれたページと見なされてよく、無視されてよい。いくつかの実施形態では、コールド
ログゾーンでは、DULRは(最大2ログページまで)複数のログページに及ぶことがで
きることがある。しかし、AULRは、例えば合体動作が単一の原子的な書込みでDUL
RをAULRで置き換えることができるように、複数のログセクタに及ぶことができない
ことがある。
をコピーすることによってポピュレートされる。係る実施形態では、LSNが現在の無条
件ボリューム耐久性LSN(VDL)以下であるログレコードだけがコールドログゾーン
にコピーされる資格があってよい。ホットログゾーンからコールドログゾーンにログレコ
ードを移動するとき、(多くのCLR等の)いくつかのログレコードは、それらがもはや
必要ではないため、コピーされる必要がないことがある。さらにユーザーページのなんら
かの追加の合体がこの点で実行されてよく、このことが必要とされるコピーの量を削減し
てよい。いくつかの実施形態では、いったん所与のホットゾーンログページが完全に書き
込まれ、もはや最新のホットゾーンログページではなく、ホットゾーンログページ上のす
べてのULRがコールドログゾーンに無事にコピーされると、ホットゾーンログページは
解放され、再使用されてよい。
レコード等、もはやサポートされていないログレコードによって占められているスペース
を再利用するために、ガベージコレクションがコールドログゾーンで行われてよい。例え
ば、ログレコードは同じユーザーページに対する以後のAULRがあるときにサポートさ
れなくなってよく、ログレコードによって表されるユーザーページのバージョンはSSD
での保持に必要とされない。いくつかの実施形態では、ガベージコレクションプロセスは
、2つ以上の隣接するログページをマージし、2つ以上の隣接するログページをそれらの
ページが置き換えているログページからの旧式ではないログレコードのすべてを含むより
少ない新しいログページで置き換えることによってスペースを再利用してよい。新しいロ
グページには、それらが置き換えているログページのフラッシュ番号よりも大きい新しい
フラッシュ番号が割り当てられてよい。これらの新しいログページの書込みが完了した後
に、置き換えられたログページが空きページプールに加えられてよい。いくつかの実施形
態では、あらゆるポインタを使用するログページの明示的な連鎖がないことがあることに
留意されたい。代わりに、ログページのシーケンスはそれらのページに対するフラッシュ
番号によって暗黙に決定されてよい。ログレコードの複数のコピーが検出されるたびに、
最高のフラッシュ番号のログページに存在するログレコードが有効であると見なされてよ
く、他はもはやサポートされないと見なされてよい。
の粒度がデータゾーン(記憶ページ)の外の粒度とは異なってよいため、なんらかのフラ
グメンテーションがあってよい。いくつかの実施形態では、このフラグメンテーションを
管理するために、システムは各データページによって使用されるセクタの数を追跡調査し
てよく、ほぼ全データページから優先的に割り当ててよく、(データを新しい場所に、そ
れが依然として関連している場合に移動することを必要としてよい)ほぼ空のデータペー
ジのガベージコレクションを優先的に行ってよい。セグメントに割り当てられるページが
、いくつかの実施形態では3つのゾーンの間で転用されてよいことに留意されたい。例え
ば、セグメントに割り当てられていたページが解放されると、ページはある期間そのセグ
メントと関連付けられたままとなってよく、後にそのセグメントの3つのゾーンのいずれ
かで使用されてよい。あらゆるセクタのセクタヘッダは、セクタが属するゾーンを示して
よい。いったんページ内のすべてのセクタが空くと、ページは、ゾーンに渡って共有され
る共通の空き記憶ページプールに返されてよい。この空き記憶ページの共有は、いくつか
の実施形態では、フラグメンテーションを削減(または回避)してよい。
システムは、メモリ内に多様なデータ構造を維持してよい。例えば、セグメントに存在す
るユーザーページごとに、ユーザーページテーブルが、このユーザーページが「クリアさ
れる」かどうか(つまり、このユーザーページがすべてのゼロを含んでいるかどうか)、
該ページのためのコールドログゾーンからの最新のログレコードのLSN、及びページの
ホットログゾーンからのすべてのログレコードの場所のアレイ/リストを示すビットを記
憶してよい。ログレコードごとに、ユーザーページテーブルはセクタ番号、そのセクタの
中のログレコードのオフセット、そのログページの中で読み取るセクタの数、(ログレコ
ードが複数のログページに及ぶ場合)第2のログページのセクタ番号、及びそのログペー
ジの中で読み取るセクタの数を記憶してよい。いくつかの実施形態では、ユーザーページ
テーブルは、コールドログゾーンからのあらゆるログレコードのLSN、及び/またはA
ULRがコールドログゾーンにある場合、最新のAULRのペイロードのセクタ番号のア
レイを記憶してもよい。
形態では、LSNインデックスはメモリに記憶されてよい。LSNインデックスは、コー
ルドログゾーンの中のログページにLSNをマッピングしてよい。コールドログゾーンの
ログレコードがソートされていることを考えれば、それはログページあたり1つのエント
リを含むためであってよい。ただし、いくつかの実施形態では、あらゆる旧式ではないL
SNがインデックスに記憶され、対応するセクタ番号、オフセット、及びログレコードご
とのセクタの数にマッピングされてよい。
形態では、ログページテーブルはメモリに記憶されてよく、ログページテーブルはコール
ドログゾーンのガベージコレクションの間に使用されてよい。例えば、ログページテーブ
ルはどのログレコードがもはやサポートされていないのか(例えば、どのログレコードの
ガベージコレクションを行うことができるのか)、及び各ログページでどれほど多くの空
きスペースが使用できるのかを識別してよい。
めに他のエクステントと結合できる(連結できる、またはストライピングできるのかのど
ちらか)ストレージの高度に耐久性の単位を表す論理概念であってよい。各エクステント
は、単一の保護グループでのメンバーシップによって耐久的にされてよい。エクステント
は、LSN型の読取り/書込みインタフェースを、作成時に定義される固定サイズを有す
る隣接バイトサブレンジに提供してよい。エクステントに対する読取り/書込み動作は、
含む側の保護グループによって1つまたは複数の適切なセグメント読取り/書込み動作に
マッピングされてよい。本明細書に使用されるように、用語「ボリュームエクステント」
は、ボリュームの中のバイトの特有のサブレンジを表すために使用されるエクステントを
指してよい。
れる保護グループによって表される複数のエクステントから構成されてよい。いくつかの
実施形態では、異なるエクステントに向けられるログレコードはインタリーブされたLS
Nを有してよい。ボリュームに対する変更が特定のLSNまで耐久的となるためには、そ
のLSNまでのすべてのログレコードが、それらが属しているエクステントに関わりなく
耐久的である必要があってよい。いくつかの実施形態では、クライアントは、まだ耐久的
にされていない未決ログレコードを追跡調査してよく、いったん特定のLSNまでのすべ
てのULRが耐久的にされると、クライアントはボリュームの保護グループの内の1つに
ボリューム耐久性LSN(VDL)メッセージを送信してよい。VDLは、保護グループ
のすべての同期ミラーセグメントに書き込まれてよい。これは「無条件VDL」と呼ばれ
ることがあり、それはセグメントで起こる書込み活動とともに多様なセグメントに(また
はより詳細には、多様な保護グループに)周期的に持続されてよい。いくつかの実施形態
では、無条件VDLはログセクタヘッダに記憶されてよい。
にDULRまたはAULRを書き込み、次いでユーザーページテーブルを更新することを
含んでよい)クライアントから受信されたDULRまたはAULRを書き込むこと、(ユ
ーザーページのデータセクタの位置を突き止め、あらゆる追加のDULRを適用する必要
なしにデータセクタを返すことを含んでよい)コールドユーザーページを読み取ること、
(ユーザーページの最も最新のAULRのデータセクタの位置を突き止めることを含み、
ユーザーページに、それを返す前にあらゆる以後のDULRを適用してよい)ホットユー
ザーページを読み取ること、(適用された最後のDULRを置き換えるAULRを作成す
るためにユーザーページのDULRを合体させることを含んでよい)DULRをAULR
で置き換えること、ログレコードを操作すること等を含んでよい。本明細書に説明される
ように、合体は、ユーザーページのより最近のバージョンを作成するためにユーザーペー
ジの初期のバージョンにDULRを適用するプロセスである。(別のDULRが書き込ま
れるまで)合体の前に書き込まれたすべてのDULRは要求に応じて読み取られ、適用さ
れる必要はないことがあるため、ユーザーページを合体させることは読取りレーテンシを
削減するのに役立ってよい。また、合体は、(ログレコードが存在することを必要とする
スナップショットがないならば)旧いAULR及びDULRをもはやサポートされなくす
ることによってストレージスペースを再利用するのに役立ってよい。いくつかの実施形態
では、合体動作は、最も最新のAULRを場所を見つけ、DULRのいずれも省略するこ
となく、あらゆる以後のDULRを順番に適用することを含んでよい。上述されたように
、いくつかの実施形態では、合体はホットログゾーンの中で実行されないことがある。代
わりに、合体はコールドログゾーンの中で実行されてよい。いくつかの実施形態では、合
体は、ログレコードがホットログゾーンからコールドログゾーンにコピーされるにつれて
実行されてもよい。
ェーンの長さが合体動作の所定の閾値を超える場合、システム全体での方針、アプリケー
ション特有の方針、またはクライアントによって指定される方針に従って))、またはク
ライアントに読み取られているユーザーページごとに、ページの未決のDULRチェーン
のサイズによってトリガされてよい。
図である。この例では、(アドレス範囲715aから715eとして示される)多様なア
ドレス範囲715のそれぞれに対応するデータが(セグメント745aから745nとし
て示される)異なるセグメント745として記憶される。すなわち、多様なアドレス範囲
715のそれぞれに対応するデータは(エクステント725aから725b、及びエクス
テント735aから735hとして示される)異なるエクステントに編成されてよく、こ
れらのエクステントの多様なエクステントが、(ストライプセット720a及びストライ
プセット720bとして示されるもの等の)ストライピングを行って、または行わないで
(730aから730fとして示される)異なる保護グループ730に含まれてよい。こ
の例では、保護グループ1はイレイジャーコーディングの使用を示す。この例では、保護
グループ2及び3、並びに保護グループ6及び7は互いのミラーリングされたデータセッ
トを表す。一方、保護グループ4は単一インスタンス(非冗長)データセットを表す。こ
の例では、保護グループ8は、他の保護グループを結合する複数階層保護グループを表す
(例えば、これは複数領域保護グループを表してよい)。この例では、ストライプセット
1(720a)及びストライプセット2(720b)は、いくつかの実施形態で、エクス
テント(例えば、エクステント725a及び725b)がどのようにしてボリュームの中
にストライピングされてよいのかを示す。
5aから715c)のデータを含むエクステントaからc(735aから735c)を含
み、これらのエクステントはセグメント1から4(745aから745d)にマッピング
される。保護グループ2(730b)は、範囲4(715d)からストライピングされた
データを含むエクステントd(735d)を含み、このエクステントはセグメント5から
7(745eから745g)にマッピングされる。同様に、保護グループ3(730c)
は、範囲4(715d)からストライピングされたデータを含むエクステントe(735
e)を含み、セグメント8から9(745hから745i)にマッピングされ、保護グル
ープ4(730d)は、範囲4(715d)からストライピングされたデータを含むエク
ステントf(735f)を含み、セグメント10(745j)にマッピングされる。この
例では、保護グループ6(730e)は、範囲5(715e)からストライピングされた
データを含むエクステントg(735g)を含み、セグメント11から12(745kか
ら745l)にマッピングされ、保護グループ7(730f)は、やはり範囲5(715
e)からストライピングされたデータを含むエクステントh(735h)を含み、セグメ
ント13−14(745mから745n)にマッピングされる。
テムは、ストレージノードのデータページの中に記憶されているデータに対する多様なア
クセス要求(例えば、書込み要求)に応えてリドゥログレコードを生成し、リドゥログレ
コードが生成されたそれぞれのデータページを記憶するストレージノードにリドゥログレ
コードを送信するように構成されてよい。ストレージノードは、特定のデータページのた
めの合体イベントを検出し、それに応じて特定のデータページのために合体動作を実行し
てよい。典型的なデータベースシステムは、一方、周期的な間隔で記憶されるデータに適
用される生成されたリドゥログのすべてをフラッシュし、このようにしてデータベースに
よって実行されるアクセス要求及び他のタスクの処理を中断させるシステム全体のチェッ
クポイントを適用してよい。
ージシステムサーバノード(複数の場合がある)430、440、450等)のログ構造
化ストレージシステムの多様な構成要素によって実行されているとして説明されてよいが
、方法はいくつかの場合、いずれの特定の構成要素によっても実行される必要はない。例
えば、いくつかの場合、図8の方法は、いくつかの実施形態に従ってなんらかの他の構成
要素またはコンピュータシステムによって実行されてよい。また、いくつかの場合、デー
タベースシステム400の構成要素は、図4の例に示されるのとは異なって組み合されて
よい、または存在してよい。多様な実施形態では、図8の方法は分散型データベース最適
化ストレージシステムの1台または複数のコンピュータによって実行されてよく、その内
の1つは図10のコンピュータシステムとして示される。図8の方法は、システム全体の
チェックポイント回避のための方法の1つの例の実装として示される。他の実装では、図
8の方法は追加のブロック、または図示されるよりも少ないブロックを含んでよい。
クされるリドゥログレコードが維持されてよい。これらのリドゥログレコード(上述され
たように、ULRと呼ばれることがある)は、ユーザーデータに対する変更を記述してよ
い。リドゥログレコードは、データページ等のユーザーデータの特定の部分にリンクされ
てよい。例えば、いくつかの実施形態では、リドゥログレコードは、特定のデータページ
に最終的にリンクされるリドゥログレコードの連鎖を形成し、各リドゥログレコードはデ
ータページのための以前に受信されたリドゥログレコードを指す。この例を使用すると、
3つのリドゥログレコードが特定のデータページにリンクされる場合には、最も最近に受
信されたリドゥログレコードは次に最も最近に受信されたリドゥログレコードを指し、次
に最も最近に受信されたリドゥログレコードは同様に3番目に最も最近に受信されたリド
ゥログレコードを指し、3番目に最も最近に受信されたリドゥログレコードはデータペー
ジの最も最近に保存された状態を指す。前のリドゥログレコードに対する各ポインタによ
って示されるリドゥログレコードの論理的な順序付けが、係るリドゥログレコードが係る
順序で物理的に記憶されることを暗示しないことに留意されたい。図6に関して上述され
たように、これらのリドゥログレコードは、いくつかの実施形態では、ユーザーデータの
他の部分にリンクされた他のリドゥログレコードとインタリーブされてよい。したがって
、前の例は制限的となることを目的としていない。
0等のストレージノードにデータが記憶されてよい、1つまたは複数のデータベースを管
理してよいデータベースエンジンヘッドノード420等のデータベースシステムから受信
されてよい。しかしながら、少なくともいくつかの実施形態では、ストレージノードは、
ストレージノードがデータを記憶するための1つまたは複数の追加のデータベースシステ
ムまたはノードからリドゥログレコードを受信してよい。これらの他のデータベースシス
テムまたはノードは、ストレージノードにそのそれぞれのデータベースのために記憶され
ているデータの特定の部分にリンクされたリドゥログレコードを送信してもよい。
6は、係るリドゥログレコードがどのようにして受信され、処理され、ストレージノード
に記憶されてよいのかの多様な実施形態を説明する。多様な形式のメタデータが、データ
ページ等の特定の部分データにリンクされるリドゥログレコードの数つまりカウント等の
記憶されているリドゥログレコードのために維持されてよい。例えば、上記に示された例
でのように、3つのリドゥログレコードが特定のデータページにリンクされる場合、次い
で特定のデータページのリドゥログレコードカウントは3で維持されてよい。多様な他の
ログレコードに対するポインタまたはデータページの最も最近に保存された状態に対する
ポインタ等、サイズまたは物理的な場所、及びリドゥログレコードがリンクされるデータ
の部分等のリドゥログレコードに関する他のメタデータが維持されてよい。
ドゥログレコード自体に対する変更、それらがリンクされる特定のデータページに対する
変更、またはリドゥログレコードを活用することによって、またはリドゥログレコードに
関して実行される動作もしくは他の方法もしくは技法に応えて行われてよい。例えば、8
30で示されるように、合体動作が実行され、データページの現在の状態を生成するため
に特定のデータページにリンクされる1つまたは複数のリドゥログレコードを適用する場
合、次いでリドゥログレコードカウントは特定のデータページに対するリドゥログレコー
ドカウントからそれらの適用されたリドゥログレコードを削除するために更新されてよい
。
ジにリンクされる1つまたは複数のリドゥログレコードに少なくとも部分的に基づいて、
820で示されるように検出されてよい。検出された合体イベントは、合体動作が特定の
データページに対して実行されてよいことを示してよい。少なくともいくつかの実施形態
では、特定のデータページのための合体イベントを検出することは、他のデータページに
ついて検出された合体イベントとは関係なく、または他のデータページについて検出され
た合体イベントを考慮せずに発生してよい。特定のデータページが、多くのリドゥログレ
コードが受信される「ホット」データページであってよいシナリオを考える。リドゥログ
レコードはめったに他のデータページのために受信されることはない。合体イベントを検
出することは、合体閾値を超えるそれぞれのデータページにリンクされるリドゥログレコ
ードの数に基づいてよく、したがって、このシナリオでは、合体イベントは他のデータペ
ージについてより、特定の「ホット」データページについてより頻繁に検出されてよい。
ージノード監視構成要素またはプロセスの一部として実行されてよく、読取り要求、書込
み要求、及び他のアクセス要求を処理するフォアグラウンドプロセスは、合体イベントの
検出の前に(または合体イベントの検出を遅延させて)実行されてよい。合体イベントの
検出は、ストレージノードの作業負荷が作業負荷閾値未満であるとき等、周期的な間隔ま
たは非周期的な間隔で発生してよい。
合体イベントを検出するための多様な方法及び技法が実装されてよい。例えば、少なくと
もいくつかの実施形態では、合体閾値は合体イベントを検出するために活用されてよい。
合体閾値は、合体イベントが検出される前に特定のデータページにリンクされてよいリド
ゥログレコードの数を定義してよい。例えば、特定のデータページが、10リドゥログレ
コードの合体閾値を超える11リドゥログレコードを有する場合、次いで合体イベントが
検出されてよい。異なる合体閾値は異なるデータページに活用されてよい。例えば、デー
タページにリンクされた頻繁なリドゥログレコードを受信する「ホット」データページの
シナリオを再度考える。リドゥログレコードをあまり頻繁に受信しないデータページより
も高い合体閾値は、「ホット」データページに活用され、このようにして「ホット」デー
タページに対して実行される合体動作の数を削減してよい。代わりに、いくつかの実施形
態では、同じ合体閾値または類似する合体閾値が活用されてよい。合体閾値は、多様な他
の技法または構成部品と結合されてもよい。例えば、他の構成部品を使用していつ合体閾
値が超えられる可能性があるのかを計算し、タイマまたは他の構成要素を設定して、合体
イベント検出を実行するバックグラウンドモニタまたは他のプロセスに対し、特定のデー
タページのリドゥログレコードカウントが調べられるべきであることを示すこと。
ジの特定のセットに対する)合体閾値が決定されてよい。例えば、いくつかの実施形態で
は、合体閾値はユーザー定義の合体閾値に従って決定されてよい。ユーザー定義の合体閾
値は、要求され、決定され、もしくはデータベースエンジンヘッドノード420等のデー
タベースシステムからストレージノードに対して示される合体閾値であってよい、または
データベースシステムのクライアントは合体イベントを検出するために使用される合体閾
値を与えてよい。いくつかの実施形態では、合体閾値はストレージノードの作業負荷また
は性能に基づいて決定されてよい。例えば、いくつかの実施形態では、作業負荷測度また
は性能測度が、合体動作を実行するための能力が低いことを示す場合、次いで合体閾値は
、検出される合体イベントの数がストレージノードによってその現在の作業負荷で処理さ
れ得るように増加されてよい。いくつかの実施形態では、リドゥログレコードが特定のデ
ータページについて受信されるレートつまり頻度が計算され、合体閾値を決定するために
使用されてよい。少なくともいくつかの実施形態では、リドゥログレコードのサイズ、物
理記憶でのリドゥログレコードの場所、リドゥログレコードを記憶するために利用可能な
スペース、及び/または合体動作がデータページの以前に記憶されたバージョンにリドゥ
ログレコードを適用するために実行されてよい時刻等の多様な他の特徴が合体閾値を決定
するために使用されてよい。
ジにリンクされる1つまたは複数のリドゥログレコードが、830で示されるように特定
のデータページをその現在の状態で生成するために特定のデータの以前に記憶されたバー
ジョンに適用されてよい。少なくともいくつかの実施形態では、特定のデータページにリ
ンクされるリドゥログレコードを適用することは合体動作の一部として実行される。上述
されたような合体動作つまり合体は、ユーザーページのより最近のバージョンを作成する
ためにDULR等のリドゥログレコードをユーザーページの初期のバージョンに適用して
よい。いくつかの実施形態では、合体動作は、最も最近のAULR(例えば、データペー
ジの以前に記憶されたバージョン)の位置を突き止め、DULRのいずれも省略すること
なくあらゆる以後のDULRを順に適用することを含んでよい。例えば、3つのDULR
が受信され、AULRにリンクされている場合、最初に受信されたDULRがAULRに
適用される(このようにして、以前に記憶されたデータページを基準にして最初に受信さ
れた変更を適用する)。次いで、次に受信されたDULRが適用され、最後に最も最近の
DULRが適用され、ストレージノードでのDULRの受信に基づいて決定される順にD
ULRを適用する。いくつかの実施形態では、新しいAULRは特定のデータページの現
在の状態として生成される。リドゥログレコードカウント等の上述されたメタデータは、
リドゥログレコードの適用を反映し、リドゥログレコードカウントに関して、その数をカ
ウントから削除するために更新されてよい。
830で示されるリドゥログレコードの適用との間で発生してよい、または実行されてよ
い。例えば、該検出及び該適用を実行するストレージノードの作業負荷が、リドゥログレ
コードを適用することの実行と、合体イベントの検出との間の遅延を決定してよい。同様
に、合体イベントの検出に応えるリドゥログレコードの適用はバックグラウンドプロセス
の一部として実行されてよい、すなわち削減される、つまり多様なアクセス要求(例えば
、読取り要求または書込み要求)の処理等、フォアグラウンドプロセスを実行しないとき
にだけ実行される。遅延した合体動作またはデータページのためのリドゥログの適用は、
データページがいつリドゥログレコードを適用させるべきであるのかの順序、シーケンス
、またはタイミングを決定する、先入先出し(FIFO)待ち行列または優先順位待ち行
列等のデータ構造に入れられてよい。例えば、上述されたシナリオでのように、「ホット
」データページが検出された合体イベントを有する場合、別のデータページの代わりに「
ホット」データページに対するリドゥログの適用を実行する方がより効率的であることが
ある。バックグラウンドプロセスとしてリドゥログレコードの適用を遅延するまたは実行
する結果として、合体イベントが検出されたデータページにリンクされる1つまたは複数
の追加のリドゥログレコードが受信されてよい。少なくともいくつかの実施形態では、こ
れらの追加のリドゥログレコードは、他のリドゥログレコードがデータページの以前に記
憶されたバージョンに適用されるときに適用されてよい。
ストレージサービスの一部として実装されてよい。上記図8に関して上述された多様な方
法及び技法は、これらの複数のストレージノードによって互いと無関係に実行されてよい
。各ストレージノードは、合体イベントを検出すること、及びそれに応じて同時にまたは
互いと異なるときに1つまたは複数のリドゥログレコードを適用することを実行するだけ
ではなく、異なる合体閾値または同じ合体閾値を決定してもよい。
ッシュ回復を実行するための方法を明示する一連の図を示す図9Aを参照する。典型的な
データベースシステムにおけるクラッシュ回復は達成が困難なプロセスである。これらの
典型的なシステムでは、データベースシステム故障からの回復時、データベースのクリー
ンなバージョンが得られ、次いでディスクに記憶されていないトランザクションからのリ
ドゥログレコードのすべてが、データベースをデータベースシステム故障の前のその現在
の状態に復元するためにリプレイされなければならず、データベースにアクセスできるよ
うになる前に多大な復元時間を生じさせる。図9Aは、一方、クラッシュ回復を実行する
ためのより高速且つより効率的な技法を提供してよい分散型データベースシステム用の高
速クラッシュ回復の説明を提供する。
ベースクライアント906は、図2に上述されたネットワーク260上で、データベース
を実装する、図4に関して上述されたデータベースヘッドノード430等のデータベース
ヘッドノード902と通信する。ストレージノード908は、データベースヘッドノード
902によって実装されるデータベースのためのログ構造化データストレージを実装する
1つまたは複数のストレージノードであってよい。多様なアクセス要求が受信され、その
後ストレージノード908からアクセスされたデータを取り出すと、データベースヘッド
ノード902によってサービスを提供されてよい。図8に関して上述されたもの等のリド
ゥログレコードが生成され、ユーザーデータを送信する代わりにストレージノード908
に送信されてよい。リドゥログレコードはストレージノード908で維持されてよい。少
なくともいくつかの実施形態では、合体動作は、図8に関して上述されたように等、合体
イベントの検出に応えて実行されてよい。
ノード故障は、電源喪失、利用可能なメモリなし、システム障害等の、データベースヘッ
ドノードが機能を続行できないようにさせる任意のタイプのシステム故障であることがあ
る。データベースクライアント906とデータベースヘッドノード902との間の通信は
、図に示されるように送信または受信されないことがある。したがって、データベースに
対するアクセスは提供され得ない。同様に、ストレージノード908とデータベースヘッ
ドノード902との間の通信が送信または受信されないことがあり、したがってデータベ
ースのために記憶されているデータに対する要求が処理されないことがある。
たヘッドノードアプリケーションプログラムのバージョン、または異なるハードウェアで
起動されたヘッドノードの別のインスタンスであってよい新しいデータベースヘッドノー
ド904がオンラインにされてよい。ストレージノード908との接続は、示されるよう
に、データベースヘッドノード904によって確立されてよい。シーン998は、ストレ
ージノード908との接続の確立時、データベースヘッドノード902で実装されたのと
同じデータベースが、新しいデータベースヘッドノード904でのアクセスのために利用
可能にされてよいことを示す。読取り要求または書込み要求等のアクセス要求は、ネット
ワーク260を介してデータベースクライアント906から新しいデータベースヘッドノ
ード904に送信されてよい。リドゥログレコードはすでに、アクセス要求にサービスを
提供するために新しいデータベースヘッドノード908にデータベースのために記憶され
ているデータのカレントバージョンを提供してよいストレージノード908に送信されて
いたので、新しいデータベースヘッドノード904は、データベースヘッドノード故障の
前にデータの現在の状態を入手するためにこれらのリドゥログレコードをリプレイする必
要がないことがある。ストレージノード908は、特定のデータに対する要求が受信され
るとき特定のデータの以前に記憶されていたバージョンにリドゥログレコードを適用して
よい。代わりに、特定のデータの現在の状態は、図8に関して上述されたように合体イベ
ントが検出されるとき等、あらゆるリドゥログレコードがすでに適用されている特定に向
けられた状態でストレージノードにすでに記憶されていてよい。
ッシュ回復を実行する方法を示す流れ図である。多様な実施形態では、データベースヘッ
ドノード故障が発生することがある。このヘッドノード故障はあらゆる通信、修正、また
は故障したデータベースヘッドノードによって実装され、管理されるデータベースへの他
の形のアクセスを妨げることがある。例えば、図2に説明されるデータベースクライアン
ト250等のデータベースシステムクライアントは、故障したデータベースヘッドノード
に読取り要求または書込み要求を送信できないことがある。データベースヘッドノードの
故障は、例えば図2に上述されたウェブサービスプラットホーム200、または何らかの
他のシステムもしくは構成要素によって検出されてよい。ヘッドノードの故障に応えて、
再起動されたデータベースヘッドノードまたは新しいデータベースヘッドノード(例えば
、以前に故障したヘッドノードと同じまたは異なるハードウェア上でホストされる新しい
データベースヘッドノード仮想インスタンス)が、回復動作を実行するように命令されて
よい。いくつかの実施形態では、この回復動作はこれらの要素に制限されていないが、回
復動作は図9Bに示される多様な要素を含んでよい。
回復は実行され、さまざまな方法で完了していると決定されてよい。例えば、データベー
スヘッドノードアプリケーションは、多様なテストを実行すること、多様な装置を有効に
すること等、実行するために準備するときに多様な状態を有することがある。このプロセ
スの一部として、ノード故障からの回復の完了を示してよいデータベースヘッドノードに
ついて準備完了した状態が決定されてよい。910に示されるように、データベースノー
ド故障からの回復時、1台または複数のストレージノードとの接続が確立され、920に
示されるように、データベースのためにデータを記憶することが確立されてよい。
図4に説明されるデータベースヘッドノード320または440等のデータベースヘッド
ノードによって実装され、管理されてよい。上述された読取り要求または書込み要求等の
データベースアクセス要求を実装することの一部として、データベースヘッドノードで処
理されてよい。少なくともいくつかの実施形態では、データベースに対する変更を反映す
るリドゥログレコードは、ストレージノードに記憶されるデータに対する変更を反映する
、図4で上述されたストレージノード450等の1つまたは複数のストレージノードに送
信される。特定のデータページまたはデータの他の部分等の、変更されるデータを記憶す
るストレージノードは、変更される、データページ等のデータの部分にリンクされるリド
ゥログレコードを受信してよい。これらのリドゥログレコードは、データページのカレン
トバージョンに対する要求に応えて、または合体イベントの検出に応えて等、なんらかの
他の時に、データページ等のデータの部分の以前に記憶されていたバージョンに適用され
てよい(例えば、合体動作)。データベースのためのリドゥログレコードは、上述された
多様な方法で、データベースヘッドノードで実装されるデータベースのために維持される
ので、いくつかの実施形態では、ストレージノードはデータベースヘッドノードに、デー
タベースヘッドノード故障の時刻まで最新であると保証されるデータの現在の状態を送信
してよい。
アント側ストレージサービスドライバ425は、どのストレージノードがデータベースの
ためにデータを記憶するのか、及びデータベースのどの部分がストレージノードに記憶さ
れるのかを示す情報を維持してよい。接続要求、または何らかの他の通信メッセージは、
図4に関して上述された多様な通信方法の1つを使用して送信されてよい。同様に、肯定
応答、及びストレージノード及び/またはデータベースヘッドノードのステータスについ
ての他の情報が交換されてよい。
タベースは、930に示されるように、アクセスのために利用可能にされてよい。いくつ
かの実施形態では、アクセスは1つまたは複数のアクセス要求(例えば、読取り要求、書
込み要求)に提供されてよい。データベースの可用性の表示が生成され、クライアントに
送信されてよい。例えば、データベースがアクセスに利用可能である旨のメッセージがデ
ータベースクライアントに送信されてよい。係るメッセージは、図2に説明されるウェブ
サービスプラットホーム200、またはなんらかの他の通信プラットホームもしくは装置
を介して送信されてよい。上述されたように、典型的なデータベースシステムでは、リド
ゥログレコードのリプレイは、データベースを利用可能にする前に実行されなければなら
ない。しかし、少なくともいくつかの実施形態では、データベースはリドゥログレコード
をリプレイせずに利用可能にされてよい。リドゥログレコードとともに使用されるときの
用語「リプレイ」が概してデータの以前に記憶されていたバージョンに対して1つまたは
複数のリドゥログレコードを適用することを意味することに留意されたい。
故障を検出できてよい、またはそれ以外の場合データベースヘッドノード故障を認識させ
られてよい。データベースヘッドノード故障の検出に応えて、ストレージノードは、スト
レージノードで受信されたリドゥログレコードに対する切り詰め演算を実行してよい。切
り詰め演算は、データベースヘッドノードの故障の前に完了しなかったシステムトランザ
クションの一部であるリドゥログレコードを決定してよい、または識別してよい。これら
の識別されたリドゥログレコードは、それらがリンクされているデータページにそれらが
適用され得ないように、削除されてよい、またはそれ以外の場合、マークされてよい、移
動されてよい、もしくは識別されてよい。例えば、記憶ページが特定のデータページのた
めに5リドゥログレコードを維持し、最も最近の3リドゥログレコードが、データベース
ヘッドノード故障の前に完了しなかったシステムトランザクションの一部である場合、次
いでストレージノードは、2つの最も旧いリドゥログレコードだけを適用することによっ
てデータページの現在の状態を生成するときに最も最近の3リドゥログレコードを無視し
てよい。少なくともいくつかの実施形態では、切り詰め演算は、回復されたデータベース
ヘッドノードと接続を確立できるようになる前に、影響を受けたリドゥログレコードがあ
るストレージノードに対して実行されてよい。データベースエンジンヘッドノードは、い
くつかの実施形態では、データベースヘッドノードの故障前に完了しなかったシステムト
ランザクションの一部であるリドゥログレコードを同様に決定し、または識別し、これら
の識別されたリドゥログレコードが、それらがリンクされているデータページにそれらが
適用され得ないように削除されてよい、またはそれ以外の場合マークされてよい、移動さ
れてよい、または識別されてよい旨の通知をストレージノードに送信するように構成され
てよい。例えば、図3に関して上述されたクライアント側ストレージサービスドライバ3
25等のクライアント側ストレージサービスドライバは、上述された技法を実行してよい
。切り詰め演算を説明するこれらの技法は、いくつかの実施形態では、バックグラウンド
プロセスの一部として実行されてよい。
クションを実行する、または実装するための動作または他の形の1つもしくは複数のタス
クであってよい。ユーザートランザクションは、受信されたアクセス要求から多様なタス
クまたは動作を実行するために複数のシステムトランザクションを含んでよい。例えば、
データベースに対する挿入命令が受信されてよい。ユーザートランザクションとして、こ
の挿入命令は、挿入を実行するために、例えばb−ツリー等のデータベースデータ構造に
作用する等、挿入を実行するための複数のシステムトランザクションを含んでよい。少な
くともいくつかの実施形態では、不完全なユーザートランザクションは、ユーザートラン
ザクションであり、該ユーザートランザクションに含まれるシステムトランザクションの
すべてが完了していない(または耐久的にされていない)可能性がある。同様に、システ
ムトランザクションは不完全なことがある。ユーザートランザクション及びシステムトラ
ンザクションの一部としてデータベースのために記憶されたデータに対して行われた変更
を反映するリドゥログレコードは、いくつかの実施形態では、特定のユーザートランザク
ション及び/またはシステムトランザクションで識別されてよい。
するための方法を示す流れ図である。上述されたように、少なくともいくつかの実施形態
では、アクセス要求が受信されてよく、アクセスのためにデータベースを利用できるよう
にしたデータベースヘッドノード。アクセス要求は、読取り要求、書込み要求、またはデ
ータベースのために記憶されているデータを入手するもしくは修正するための任意の他の
要求であってよい。図9Cが示すように、アクセス要求は、940で示されるようにデー
タベースに対して受信されてよい。それに応じて、950示されるように1つまたは複数
のストレージノードからの1つまたは複数のデータページに対する要求が行われてよい(
クライアントからのアクセス要求及びデータベースヘッドノードからのデータ要求の両方
とも、上記図5に関してより詳細に扱われている)。要求された1つまたは複数のデータ
ページの現在の状態は、960に示されるように、ストレージノードから受信されてよい
。上述されたように、この現在の状態は、データページの以前に記憶されたバージョンま
で以前に受信されたリドゥログレコードをリプレイする、もしくはデータページの以前に
記憶されたバージョンに以前に受信されたリドゥログレコードを適用することによって、
または現在の状態であるデータページの以前に記憶されたバージョンを返すことによって
生成されてよい。多様な実施形態では、各データページまたは要求されたデータの一部は
、(例えばゆったりと)データに対する要求を受信することに応えて、その現在の状態を
決定させる、生成させる、及び/または送り返させてよい。
ードで維持されてよい。上述されたようなアンドゥログレコードは、不完全なユーザート
ランザクションが発生した場合に等、データに対して行われた変更をアンドゥするために
データベースのために記憶されるデータに適用される変更を記録してよい。ユーザートラ
ンザクションは、(複数のシステムトランザクション等の)データベースのために記憶さ
れるデータに対する複数の変更を含み、1つまたは複数のリドゥログレコード及び1つま
たは複数のアンドゥログレコードを生成してよい。ユーザートランザクションは、ユーザ
ートランザクションの変更のすべてがコミットされなかった(例えば、耐久的にされなか
った)ときに不完全であることがある。図3に関して上述されたトランザクションログ3
40等のトランザクションテーブルは、どのユーザートランザクション、及びストレージ
ノードに記憶されているデータのその関連付けられた部分が、データベースヘッドノード
故障前にコミットされず、したがって不完全であるのかを示すために実装されてよい。9
70で示されるように、受信されたデータページがトランザクションテーブルによって示
される等、不完全なユーザートランザクションによって影響を及ぼされるかどうかに関し
て決定が下されてよい。はいである場合、肯定の出口が示すように、次いでアンドゥログ
レコードの1つまたは複数が、不完全なトランザクションによって行われた変更をアンド
ゥして、972に示すように、データページの新しい現在の状態を生成するためにデータ
ページに適用されてよい。アンドゥログレコードが適用された、つまり不完全なユーザー
トランザクションによってデータページが影響を及ぼされなかった後、次いでデータペー
ジの現在の状態が、980で示されるようにアクセス要求にサービスを提供するために提
供されてよい。
ーザートランザクションによって影響を受けたデータの部分を決定する、または識別する
バックグラウンドプロセスが実行されてよい。不完全なユーザートランザクションによっ
て影響を受けた、データページ等のデータの部分の現在の状態に対する要求が送受されて
よい。アンドゥログレコードは、次いで、不完全なユーザートランザクションによってこ
れらのデータページに向けられた変更をアンドゥするために適用されてよい。多様な実施
形態では、データベースキャッシュが、アンドゥログレコードが適用された後にこれらの
データページで更新されてよい。
ースの状態を初期の状態に復元するために使用されてよい。例えば、アクセスのためにデ
ータベースを利用可能にする前に、要求は、データベースのためのデータを以前に記録さ
れたスナップショットに対応する状態に復元するためにストレージノードに送信されてよ
い。スナップショットは、以前に受信されたリドゥログレコードを、記録されたスナップ
ショット点(例えば、タイムスタンプまたはマーカ)までリプレイできるようにする、ス
トレージノードに記憶されるリドゥログのためのタイムスタンプまたは他のマーカまたは
インジケータを識別することによって記録されてよく、該復元は複数のリドゥログの1つ
または複数をデータの以前のバージョンに適用することを含む。ストレージノードにスナ
ップショットを実装する追加説明が上記に示される。
ータベースシステムの多様な構成要素によって実行されるとして説明されてよいが、方法
は、いくつかの場合、いずれの特定の構成要素によっても実行される必要はない。例えば
、いくつかの場合、図9Bから図9Cは、いくつかの実施形態に従って、なんらかの他の
構成要素またはコンピュータシステムによって実行されてよい。また、いくつかの場合、
データベースシステム400の構成部品は、データベースシステム400の構成要素は、
図4の例に示されるのとは異なって組み合されてよい、または存在してよい。多様な実施
形態では、図9Bから図9Cの方法は分散型データベースシステムの1台または複数のコ
ンピュータによって実行されてよく、その内の1つは図10のコンピュータシステムとし
て示される。図9Bから図9Cの方法は、分散型データベースシステムの高速クラッシュ
回復のための方法の例の実装として示される。他の実装では、図9Bから図9Cの方法は
追加のブロック、または図示されるよりも少ないブロックを含んでよい。
任意の組合せによって実装されてよい。例えば、一実施形態では、方法は、プロセッサに
結合されたコンピュータ可読記憶媒体に記憶されるプログラム命令を実行する1台または
複数のプロセッサを含むコンピュータシステム(例えば、図10のコンピュータシステム
)によって実装されてよい。プログラム命令は、本明細書に説明される機能性(例えば、
本明細書に説明されるデータベースサービス/システム及び/またはストレージサービス
/システムを実装する多様なサーバ及び他の構成要素の機能性)を実装するように構成さ
れてよい。
なくとも一部を実装するように構成されるコンピュータシステムを示すブロック図である
。例えば、コンピュータシステム1000は、異なる実施形態で、データベース階層のデ
ータベースエンジンヘッドノード、またはデータベース階層のクライアントの代わりにデ
ータベース及び関連付けられたメタデータを記憶する別個の分散型データベース最適化ス
トレージシステムの複数のストレージノードの内の1つを実装するように構成されてよい
。コンピュータシステム1000は、パーソナルコンピュータシステム、デスクトップコ
ンピュータ、ラップトップコンピュータまたはノートパソコン、メインフレームコンピュ
ータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュ
ータ、消費者装置、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、ま
たは一般的に任意のタイプのコンピューティング装置を含むが、これに限定されることが
ない多様なタイプの装置のいずれかであってよい。
システムメモリ1020に結合される(いずれかが、単一スレッドまたはマルチスレッド
であってよい複数のコアを含んでよい)1台または複数のプロセッサ1010を含む。コ
ンピュータシステム1000は、I/Oインタフェース1030に結合されるネットワー
クインタフェース1040をさらに含む。多様な実施形態では、コンピュータシステム1
000は、1台のプロセッサ1010を含んだユニプロセッサシステム、または数台のプ
ロセッサ1010(例えば、2、4、8、または別の適切な数)を含んだマルチプロセッ
サシステムであってよい。プロセッサ1010は、命令を実行できる任意の適切なプロセ
ッサであってよい。例えば、多様な実施形態では、プロセッサ1010は、x86、Po
werPC、SPARC、もしくはMIPS ISA等のさまざまな命令セットアーキテ
クチャ(ISA)または任意の他の適切なISAのいずれかを実装する汎用プロセッサま
たは組み込みプロセッサであってよい。マルチプロセッサシステムでは、プロセッサ10
10のそれぞれが、一般に同じISAを実装してよいが、必ずしも同じISAを実装しな
いこともある。コンピュータシステム1000は、通信ネットワーク(例えば、インター
ネット、LAN等)上で他のシステム及び/または構成要素と通信するための1台または
複数のネットワーク通信装置(例えば、ネットワークインタフェース1040)も含む。
例えば、システム1000で実行中のクライアントアプリケーションは、単一のサーバ上
、または本明細書で説明されるデータベースシステムの構成要素の内の1つまたは複数の
実装するサーバのクラスタ上で実行中のサーバアプリケーションと通信するためにネット
ワークインタフェース1040を使用してよい。別の例では、コンピュータシステム10
00上で実行中のサーバアプリケーションのインスタンスは、他のコンピュータシステム
(例えば、コンピュータシステム1090)の上で実装されてよいサーバアプリケーショ
ン(または別のサーバアプリケーション)の他のインスタンスと通信するために、ネット
ワークインタフェース1040を使用してよい。
ストレージデバイス1060及び/または1台または複数のI/Oデバイス1080も含
む。多様な実施形態では、永続ストレージデバイス1060は、ディスクドライブ、テー
プドライブ、ソリッドステートメモリ、他の大容量記憶装置、または任意の他の永続スト
レージデバイスに相当してよい。コンピュータシステム1000(または、コンピュータ
システム1000上で動作する分散アプリケーションもしくはオペレーティングシステム
)は、所望されるように、命令及び/またはデータを永続ストレージデバイス1060に
記憶してよく、必要に応じて記憶されている命令及び/またはデータを取り出してよい。
例えば、いくつかの実施形態では、コンピュータシステム1000は、ストレージシステ
ムサーバノードをホストしてよく、永続記憶装置1060はそのサーバノードにアタッチ
されるSSDを含んでよい。
アクセス可能な命令及びデータを記憶するように構成される1つまたは複数のシステムメ
モリ1020を含む。多様な実施形態では、システムメモリ1020は、任意の適切なメ
モリ技術(例えば、キャッシュ、スタティックランダムアクセスメモリ(SRAM)、D
RAM、RDRAM、EDO RAM、DDR 10RAM、同期ダイナミックRAM(
SDRAM)、Rambus RAM、EEPROM、不揮発性/フラッシュタイプメモ
リ、または任意の他のタイプのメモリの内の1つまたは複数)を使用して実装されてよい
。システムメモリ1020は、本明細書に説明される方法及び技法を実装するためにプロ
セッサ(複数の場合がある)1010によって実行可能であるプログラム命令1025を
含んでよい。多様な実施形態では、プログラム命令1025は、プラットホームネイティ
ブバイナリ、Java(商標)バイトコード等の任意のインタープリター型言語で、また
はC/C++、Java(商標)等の任意の他の言語で、またはその任意の組合せで符号
化されてよい。例えば、示されている実施形態では、プログラム命令1025は、データ
ベース階層のデータベースエンジンヘッドノードの、または異なる実施形態で、データ階
層のクライアントの代わりにデータベース及び関連付けられたメタデータを記憶する別個
の分散型データベース最適化ストレージシステムの複数のストレージノードの内の1つの
機能性を実装するために実行可能なプログラム命令を含む。いくつかの実施形態では、プ
ログラム命令1025は、複数の別個のクライアント、サーバノード、及び/または他の
構成要素を実装してよい。
UX(登録商標)、Solaris(商標)、MacOS(商標)、Windows(商
標)等の多様なオペレーティングシステムの内のいずれかであってよいオペレーティング
システム(不図示)を実装するために実行可能な命令を含んでよい。プログラム命令10
25のいずれかまたはすべては、多様な実施形態に従ってプロセスを実行するためにコン
ピュータシステム(または他の電子機器)をプログラミングするために使用されてよい、
その上に記憶されている命令を有する非一過性のコンピュータ可読記憶媒体を含んでよい
コンピュータプログラム製品、つまりソフトウェアとして提供されてよい。非一過性のコ
ンピュータ可読記憶媒体は、マシン(例えば、コンピュータ)によって読取り可能な形(
例えば、ソフトウェア、処理アプリケーション)をとる情報を記憶するための任意の機構
を含んでよい。一般的に言えば、非一過性のコンピュータアクセス可能記憶媒体は、例え
ばI/Oインタフェース1030を介してコンピュータシステム1000に結合される、
ディスクまたはDVD/CD−ROM等の磁気媒体または光学媒体等の、コンピュータ可
読記憶媒体または記憶媒体を含んでよい。また、非一過性のコンピュータ可読記憶媒体は
、コンピュータシステム1000のいくつかの実施形態では、システムメモリ1020ま
たは別のタイプのメモリとして含まれてよい、RAM(例えば、SDRAM、DDR S
DRAM、RDRAM、SRAM等)、ROM等の任意の揮発性媒体または不揮発性媒体
を含んでもよい。他の実施形態では、プログラム命令は、ネットワークインタフェース1
040を介して実装されてよい等、ネットワークリンク及び/または無線リンク等の通信
媒体を介して伝達される、光信号、音響信号、または他の形の伝搬信号(例えば、搬送波
、赤外線信号、デジタル信号等)を使用して通信されてよい。
成されてよいデータストア1045を含んでよい。例えば、本明細書に説明されるデータ
ベース階層の機能を実行する際に使用されるトランザクションログ、アンドゥログ、キャ
ッシュに入れられたページデータ、または他の情報等の、データベース階層によって(例
えば、データベースエンジンヘッドノード上に)記憶されるとして本明細書に説明される
情報は、データストア1045にもしくは1つまたは複数のノード上のシステムメモリ1
020の別の部分に、永続記憶装置1060に、及び/または1つまたは複数のリモート
ストレージデバイス1070に異なるときに及び多様な実施形態で記憶されてよい。同様
に、記憶階層によって記憶されているとして本明細書に説明される情報(例えば、本明細
書に説明される分散型ストレージシステムの機能を実行する上で使用されるリドゥログレ
コード、合体データページ、及び/または他の情報)は、データストア1045にもしく
は1つまたは複数のノード上のシステムメモリ1020の別の部分に、永続記憶装置10
60に、及び/または1つまたは複数のリモートストレージデバイス1070に異なると
きに及び多様な実施形態で記憶されてよい。一般に、システムメモリ1020(例えば、
システムメモリ1020の中のデータストア1045)、永続記憶装置1060、及び/
またはリモートストレージ1070は、データブロック、データブロックのレプリカ、デ
ータブロックと関連付けられたメタデータ、及び/またはその状態、データベース構成情
報、及び/または本明細書に説明される方法及び技法を実装する上で使用できる任意の他
の情報を記憶してよい。
メモリ1020と、ネットワークインタフェース1040または他の周辺インタフェース
を通してを含んだシステムのあらゆる周辺装置との間のI/Oトラフィックを調整するよ
うに構成されてよい。いくつかの実施形態では、I/Oインタフェース1030は、1つ
の構成要素(例えば、システムメモリ1020)から別の構成要素(例えば、プロセッサ
1010)による使用に適したフォーマットにデータ信号を変換するために任意の必要な
プロトコル、タイミング、または他のデータ変形を実行してよい。いくつかの実施形態で
は、I/Oインタフェース1030は、例えばペリフェラルコンポーネントインターコネ
クト(PCI)バス規格、またはユニバーサルシリアルバス(USB)規格の変形等の多
様なタイプの周辺バスを通してアタッチされるデバイスに対するサポートを含んでよい。
いくつかの実施形態では、I/Oインタフェース1030の機能は、例えばノースブリッ
ジ及びサウスブリッジ等、2つ以上の別々の構成要素に分割されてよい。また、いくつか
の実施形態では、システムメモリ1020へのインタフェース等、I/Oインタフェース
1030の機能性のいくつかまたはすべては、プロセッサ1010の中に直接的に組み込
まれてよい。
(本明細書に説明される1つまたは複数のストレージシステムサーバノード、データベー
スエンジンヘッドノード、及び/またはデータベースシステムのクライアントを実装して
よい)他のコンピュータシステム1090等の、ネットワークにアタッチされる他のデバ
イスとの間でデータを交換できるように構成されてよい。さらに、ネットワークインタフ
ェース1040は、コンピュータシステム1000と多様なI/O装置1050及び/ま
たはリモートストレージ1070との間の通信を可能にするように構成されてよい。入出
力装置1050は、いくつかの実施形態では、1つまたは複数のディスプレイ端末、キー
ボード、キーパッド、タッチパッド、スキャン装置、音声認識装置もしくは光学認識装置
、または1つまたは複数のコンピュータシステム1000によってデータを入力するまた
は取り出すために適した任意の他の装置を含んでよい。複数の入出力装置1050は、コ
ンピュータシステム1000に存在してよい、またはコンピュータシステム1000を含
む分散型システムの多様なノードで分散されてよい。いくつかの実施形態では、類似する
入出力装置はコンピュータシステム1000とは別個であってよく、ネットワークインタ
フェース1040上で等、有線接続または無線接続を通してコンピュータシステム100
0を含む分散型システムの1つまたは複数のノードと対話してよい。ネットワークインタ
フェース1040は、一般に1つまたは複数の無線ネットワークプロトコル(例えば、W
i−Fi/IEEE 802.11、または別の無線ネットワーキング規格)をサポート
してよい。ただし、多様な実施形態では、ネットワークインタフェース1040は、例え
ば他のタイプのイーサネット(登録商標)ネットワーク等、任意の適切な有線汎用データ
ネットワークまたは無線汎用データネットワークを介する通信をサポートしてよい。さら
に、ネットワークインタフェース1040は、Fibre Channel SAN等の
ストレージエリアネットワークを介して、または任意の他の適切なタイプのネットワーク
及び/またはプロトコルを介して、アナログ音声ネットワークまたはデジタルファイバ通
信ネットワーク等の電気通信ネットワーク/電話網を介する通信をサポートしてよい。多
様な実施形態では、コンピュータシステム1000は、図10に示される構成要素より多
い、少ない、または異なる構成要素(例えば、ディスプレイ、ビデオカード、オーディオ
カード、周辺装置、ATMインタフェース、イーサネットインタフェース、フレームリレ
ーインタフェース等の他のネットワークインタフェース等)を含んでよい。
ずれも1つまたは複数のウェブサービスとして実装されてよいことに留意されたい。例え
ば、データベースシステムのデータベース階層の中のデータベースエンジンヘッドノード
は、データベースサービス、及び/または本明細書に説明される分散型ストレージシステ
ムを利用する他のタイプのデータストレージサービスをウェブサービスとしてのクライア
ントに提示してよい。いくつかの実施形態では、ウェブサービスは、ネットワーク上で相
互運用可能なマシン対マシンの対話をサポートするように設計されたソフトウェアシステ
ム及び/またはハードウェアシステムによって実装されてよい。ウェブサービスは、ウェ
ブサービス記述言語(WSDL)等のマシン処理可能なフォーマットで記述されるインタ
フェースを有してよい。他のシステムは、ウェブサービスのインタフェースの記述によっ
て規定される方法でウェブサービスと対話してよい。例えば、ウェブサービスは、他のシ
ステムが呼び出してよい多様な動作を定義してよく、多様な動作を要求するときに他のシ
ステムが準拠することを期待されてよい特定のアプリケーションプログラミングインタフ
ェース(API)を定義してよい。
ータ及び/またはデータを含むメッセージを使用することによって要求されてよい、また
は呼び出されてよい。係るメッセージは、拡張マークアップ言語(XML)等の特定のマ
ークアップ言語に従ってフォーマットされてよい、及び/またはシンプルオブジェクトア
クセスプロトコル(SOAP)等のプロトコルを使用してカプセル化されてよい。ウェブ
サービス要求を実行するために、ウェブサービスクライアントは、要求を含むメッセージ
をアセンブルし、ハイパテキスト転送プロトコル(HTTP)等のインターネットベース
のアプリケーション層転送プロトコルを使用して、メッセージをウェブサービスに対応す
るアドレス可能なエンドポイント(例えば、ユニフォームリソースロケータ(URL))
に伝達してよい。
象状態転送(「RESTful」)技法を使用して実装されてよい。例えば、RESTf
ul技法に従って実装されるウェブサービスは、SOAPメッセージの中でカプセル化さ
れるよりむしろ、PUT、GET、またはDELETE等のHTTP方法の中に含まれる
パラメータを通して呼び出されてよい。
1.データベースサービスの少なくとも1つのデータベースエンジンヘッドノードであっ
て、
ストレージノードが特定のデータページを含んだ複数のデータページにデータベースの
ためのデータを記憶し、1つまたは複数のリドゥログレコードのそれぞれが特定のデータ
ページの中に記憶されるデータに対する1つまたは複数のアクセス要求に応えて生成され
る、分散型ストレージサービスを実装する複数のストレージノードの内の1つのストレー
ジノードに記憶される複数のデータページの内の特定のデータページにリンクされる1つ
または複数のリドゥログレコードを生成する、
ストレージノードに1つまたは複数のリドゥログレコードを送信する
ように構成される、少なくとも1つのデータベースエンジンヘッドノードと、
分散型ストレージサービスの前記ストレージノードであって、
特定のデータページにリンクされる受信された1つまたは複数のリドゥログレコードを
記憶する、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードが合体閾値を
超えると判断する、及び
合体動作が特定のデータページにリンクされる1つまたは複数のリドゥログレコードを
特定のデータページの以前に記憶されたバージョンに適用して、特定のデータページをそ
の現在の状態で生成することを含む、該合体動作を実行する
ように構成されるストレージノードと、
を含んだシステム。
2.ストレージノードが複数のデータページのそれぞれのためにリドゥログレコードカウ
ントを維持するようにさらに構成され、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードが合体閾値を
超えると判断するために、少なくとも1つの計算ノードが、特定のデータページのために
維持されるリドゥログレコードカウントが合体閾値を超えると判断するようにさらに構成
される、
節1に記載のシステム。
3.ストレージノードが、合体動作を実行することに応えて、特定のデータページにリン
クされる1つまたは複数のリドゥログレコードをリドゥログレコードカウントから削除す
るためにリドゥログレコードカウントを更新するようにさらに構成される、節2に記載の
システム。
4.データベースエンジンヘッドノードが、ストレージノードに記憶される複数のデータ
ページの別のデータページにリンクされる、1つまたは複数の他のリドゥログページを以
前に生成し、送信しており、
データベースエンジンヘッドノードが、
データベースエンジンヘッドノード故障からの回復時に、特定のデータページの現在の
状態、及び他のデータページの現在の状態に対する要求をストレージノードに送信する
ようにさらに構成され、
ストレージノードが、
特定のデータページの現在の状態、及び他のデータページの現在の状態に対する要求を
データベースエンジンヘッドノードから受信する、及び
特定のデータページに対する要求を受信することに応えて、データベースエンジンヘッ
ドノードに特定のデータページの以前に生成された現在の状態を送信し、
他のデータページに対する要求を受信することに応えて、
他のデータページにリンクされる1つまたは複数の他のリドゥログレコードを他のデー
タページの以前に記憶されたバージョンに適用して、他のデータページをその現在の状態
で生成するために合体動作を実行する、及び
データベースエンジンヘッドノードに他のデータページの現在の状態を送信する
ようにさらに構成される、
節1に記載のシステム。
5.1台または複数のコンピューティング装置によって、
データベースのために記憶される特定のデータページにリンクされる1つまたは複数の
リドゥログレコードを維持すること、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードに少なくとも
部分的に基づいて特定のデータページのための合体イベントを検出すること、及び
特定のデータページのための合体イベントを検出することに応えて、特定のデータペー
ジにリンクされる1つまたは複数のリドゥログレコードを特定のデータページの以前に記
憶されたバージョンに適用して、特定のデータページをその現在の状態で生成すること
を実行すること
を含む、方法。
6.特定のデータページのための合体イベントを該検出することが非周期的に発生する、
節5に記載の方法。
7.特定のデータページのための合体イベントを該検出することが、特定のデータページ
にリンクされる1つまたは複数のリドゥログレコードが合体閾値を超えると判断すること
をさらに含む、節5に記載の方法。
8.特定のデータページのための合体イベントを該検出することが、ユーザー定義の合体
閾値に従って合体閾値を決定することをさらに含む、節7に記載の方法。
9.データベースのために記憶される異なるデータページにリンクされる1つまたは複数
の追加のリドゥログレコードを維持することと、
異なるデータページにリンクされる1つまたは複数の追加のリドゥログレコードが別の
合体閾値を超えると判断することであって、該他の合体閾値が該合体閾値とは異なる、判
断することと、
をさらに含む、節7に記載の方法。
10.1台または複数のコンピューティング装置がともに分散型ストレージサービスを実
装する複数のストレージノードの内の1つのストレージノードを実装し、1つまたは複数
のリドゥログレコードが、それぞれが複数のストレージノード全体でデータベースのため
に記憶される特定のデータページを含んだ複数のデータページの内の1つにリンクされる
複数のリドゥログレコードに含まれ、複数のリドゥログレコードがデータベースシステム
から受信される、節5に記載の方法。
11.複数のストレージノードの内の1つまたは複数の他のストレージノードが、1つま
たは複数の他のストレージノードに記憶される複数のデータページの内の異なるデータペ
ージを該維持する、該検出する、及び該適用することを実行する、節10に記載の方法。
12.該検出すること及び該適用することが、1つまたは複数の他のストレージノードに
記憶されるデータページの内の異なるデータページのために異なる時間に実行される、節
12に記載の方法。
13.1台または複数のコンピューティング装置がともに、分散型ストレージサービスを
実装する複数のストレージノードの内の1つのストレージノードを実装し、
特定のデータページのための合体イベントを検出することに応えて、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードを特定のデー
タページの以前に記憶されたバージョンに適用して、特定のデータページをその現在の状
態で生成する前に、ストレージノードによって実行される他のプロセスの作業負荷に少な
くとも部分的に基づいて1つまたは複数のリドゥログレコードを該適用することの開始を
遅延させること、
をさらに含む、節5に記載の方法。
14.1台または複数のコンピューティング装置によって実行されるときに、
データベースのために記憶される特定のデータページにリンクされる1つまたは複数の
リドゥログレコードを維持すること、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードが合体閾値を超
えると判断すること、及び、
特定のデータページにリンクされる1つまたは複数のリドゥログレコードを特定のデー
タページの以前に記憶されたバージョンに適用して、特定のデータページをその現在の状
態で生成すること、
を実装するプログラム命令を記憶する非一過性のコンピュータ可読記憶媒体。
15.1台または複数のコンピューティング装置がともに、分散型ストレージサービスの
ストレージノードを実装し、プログラム命令が、1台または複数のコンピューティング装
置によって実行されるときに、ストレージノードの性能に少なくとも部分的に基づいて合
体閾値を決定することをさらに実装する、節14に記載の非一過性のコンピュータ可読記
憶媒体。
16.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、特定のデータページにリンクされる受信されたリドゥログレコードの頻度に少な
くとも部分的に基づいて合体閾値を決定することをさらに実装する、節14に記載の非一
過性のコンピュータ可読記憶媒体。
17.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、記憶空間可用性に少なくとも部分的に基づいて合体閾値を決定することをさらに
実装する、節14に記載の非一過性のコンピュータ可読記憶媒体。
18.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、1つまたは複数のリドゥログレコードを該適用することが実行されてよいときの
時刻に少なくとも部分的に基づいて合体閾値を決定することをさらに実装する、節14に
記載の非一過性のコンピュータ可読記憶媒体。
19.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、特定のデータページにリンクされる1つまたは複数のリドゥログレコードの1つ
または複数のサイズに少なくとも部分的に基づいて合体閾値を決定することをさらに実装
する、節14に記載の非一過性のコンピュータ可読記憶媒体。
20.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、特定のデータページにリンクされる1つまたは複数のリドゥログレコードのため
の1つまたは複数の記憶場所に少なくとも部分的に基づいて合体閾値を決定することをさ
らに実装する、節14に記載の非一過性のコンピュータ可読記憶媒体。
21.特定のデータページにリンクされる1つまたは複数のリドゥログレコードを特定の
データページの以前に記憶されたバージョンに該適用して、特定のデータページをその現
在の状態で生成することがバックグラウンドプロセスとして実行される、節14に記載の
非一過性のコンピュータ可読記憶媒体。
22.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、特定のデータページにリンクされる1つまたは複数のリドゥログレコードを特定
のデータページの以前に記憶されたバージョンに適用して、特定のデータページをその現
在の状態で生成することに応えて、特定のデータページのリドゥログレコードカウントを
更新して、リドゥログレコードカウントから特定のデータページにリンクされる1つまた
は複数のリドゥログレコードを削除するようにさらに構成される、節14に記載の非一過
性のコンピュータ可読記憶媒体。
23.プログラム命令が、1台または複数のコンピューティング装置によって実行される
ときに、
特定のデータページにリンクされる別のリドゥログレコードを受信すること、及び
特定のデータページにリンクされる他のリドゥログレコードを含むために特定のデータ
ページのためのリドゥログレコードカウントを更新すること
を実装する、節22に記載の非一過性のコンピュータ可読記憶媒体。
、ソフトウェアで、ハードウェアで、またはソフトウェア及びハードウェアの組合せで手
動で実装されてよい。任意の方法の順序は変更されてよく、多様な要素が追加、再順序付
け、結合、省略、修正等、されてよい。
と当業者に明らかになるように、多数の変形形態及び修正形態が加えられてよい。続く特
許請求の範囲が、すべての係る修正形態及び変更を包含すると解釈され、したがって上記
説明は制限的な意味よりむしろ例示的な意味で考えられることが意図される。
Claims (15)
- 少なくとも1つのプロセッサと、
ストレージボリュームの異なる各々の部分にアクセスするために、
少なくとも部分的にデータストアで受信されたアクセス要求に基づいて、前記データストアに記憶された前記ストレージボリュームの前記異なる各々の部分を記憶する複数のデータページの個々のデータページのための合体イベントを独立して検出させ、
前記検出された合体イベントに応答して前記個々のデータページのための各々の合体動作を前記少なくとも1つのプロセッサに、少なくとも実行させるプログラム命令を記憶するメモリを備え、前記プログラム命令は、前記少なくとも1つのプロセッサに、
前記データストアに記憶された前記複数のデータページに対する記述変更ログにアクセスして、前記個々のデータページに対する変更を取得させ、
前記個々のデータページに対して前記取得された変更を適用して、前記個々のデータページの異なるバージョンを生成させ、
受信されるアクセス要求にサービスを提供するために、前記個々のデータページの前記異なるバージョンで前記個々のデータページを置き換えさせるシステム。 - 合体イベントを独立して検出するために、前記方法は、前記少なくとも1つのプロセッサに、
前記個々のデータページに対する前記検出された合体イベントを始動する各々の閾値基準を評価させ、前記個々のデータページの1つに対する前記検出された合体イベントの1つのために前記それぞれの閾値基準は、前記個々のデータページの他の1つに対する前記検出された合体イベントの他の1つのための前記各々の閾値基準とは異なる請求項1に記載のシステム。 - 前記方法は、さらに、前記少なくとも1つのプロセッサに前記複数のデータページに対する前記記述変更ログに記載された変更の各々のカウントを追跡させ、
前記各々の閾値基準の前記評価は、前記変更の各々のカウントが前記各々の閾値基準を超えることを判断するために、前記記述変更ログに記述の前記変更のカウントを前記個々のデータページに対する前記各々の閾値基準に対して比較する請求項2に記載のシステム。 - 前記方法は、さらに、前記少なくとも1つのプロセッサに、
前記各々の閾値基準の評価に先立って、少なくとも部分的に、前記1つの個々のデータページがアクセスされる頻度に基づいて、前記1つの個々のデータページに対する前記各々の閾値基準を変更することを実施させる請求項2に記載のシステム。 - 合体イベントを独立して検出するために、前記方法は、前記少なくとも1つのプロセッサに、合体動作を実行する能力に従って、前記個々のデータページに対しする前記検出された合体イベントを始動する閾値基準を決定させる請求項1に記載のシステム。
- 合体イベントを独立して検出するために、前記方法は、前記少なくとも1つのプロセッサに、前記記述変更ログに追加の変化を記憶するための利用可能な空間に従って、前記個々のデータページに対する前記検出された合体イベントを始動する閾値基準を決定させる請求項1に記載のシステム。
- 前記少なくとも1つのプロセッサは、分離されたデータベースの代わりに、前記複数のデータページを記憶する分散型データストアのための第1のストレージノードの一部として実装され、前記分散型データストアは、前記データベースの代わりに、他のデータページを記憶する第2のストレージノードをさらに実装し、前記第2のストレージノードは、前記第1のストレージノードとは独立して合体イベントを検出し且つ合体動作を実行する請求項1に記載のシステム。
- 少なくとも1つのプロセッサによって実行される方法であって、
ストレージボリュームの異なる各々の部分にアクセスするために、
少なくとも部分的にデータストアで受信されたアクセス要求に基づいて、前記データストアに記憶された前記ストレージボリュームの前記異なる各々の部分を記憶する複数のデータページの個々のデータページのための合体イベントを独立して検出すること、
前記検出された合体イベントに応答して前記個々のデータページに対するそれぞれの合体動作を実行すること、且つ 前記データストアに記憶された前記複数のデータページに対する記述変更ログにアクセスして前記個々のデータページに対する変更を取得すること、
前記個々のデータページに対して前記取得された変更を適用して、前記個々のデータページの異なるバージョンを生成すること、
受信されるアクセス要求にサービスを提供するために、前記個々のデータページの前記異なるバージョンで前記個々のデータページを置き換えること
を含む方法。 - 合体イベントを独立して検出することは、
前記検出された合体イベントを始動する各々の閾値基準を評価し、前記個々のデータページの1つに対する前記検出された合体イベントの1つのために前記それぞれの閾値基準は、前記個々のデータページの他の1つに対する前記検出された合体イベントの他の1つのための前記各々の閾値基準とは異なる請求項8に記載の方法。 - 前記方法は、前記複数のデータページに対する前記記述変更ログに記載された変更の各々のカウントを追跡することをさらに備え、
前記各々の閾値基準の前記評価は、前記変更の各々のカウントが前記各々の閾値基準を超えることを判断するために、前記記述変更ログに記述の前記変更のカウントを前記個々のデータページに対する前記各々の閾値基準に対して比較する請求項9に記載の方法。 - 前記方法は、前記各々の閾値基準の評価に先立って、少なくとも部分的に、前記1つの個々のデータページがアクセスされる頻度に基づいて、前記1つの個々のデータページに対する前記各々の閾値基準を変更することをさらに備える請求項9に記載の方法。
- 合体イベントを独立して検出することは、合体動作の能力に従って、個々のデータページに対する前記検出された合体イベントを始動する閾値基準を決定することを備える請求項8に記載の方法。
- 合体イベントを独立して検出することは、前記記述変更ログに追加の変更を記憶するための利用可能な空間に従って、前記個々のデータページに対する前記検出された合体イベントを始動する閾値基準を決定することを備える請求項8に記載の方法。
- 前記合体イベントを独立して検出することおよび前記各々の合体動作を実行することは、分離されたデータベースに代わって、前記複数のデータページを記憶する分散型データストアのための第1のストレージノードによって実行され、前記分散型データストアは、前記データベースに代わって、他のデータページを記憶する第2のストレージノードをさらに実装し、且つ前記第2のストレージノードは、前記第1のストレージノードとは独立して合体イベントを検出し且つ合体動作を実行する請求項8に記載の方法。
- 少なくとも1つのプロセッサに、
ストレージボリュームの異なる各々の部分にアクセスするために、
少なくとも部分的にデータストアで受信されたアクセス要求に基づいて、前記データストアに記憶された前記ストレージボリュームの前記異なる各々の部分を記憶する複数のデータページの個々のデータページのための合体イベントを独立して検出させること、
前記検出された合体イベントに応答して前記個々のデータページに対するそれぞれの合体動作を実行させること、且つ 前記データストアに記憶された前記複数のデータページに対する記述変更ログにアクセスして前記個々のデータページに対する変更を取得すること、
前記個々のデータページに対して前記取得された変更を適用して、前記個々のデータページの異なるバージョンを生成すること、
受信されるアクセス要求にサービスを提供するために、前記個々のデータページの前記異なるバージョンで前記個々のデータページを置き換えること
を実行させるプログラム命令が記憶された非一時的なコンピュータ可読記憶媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361799632P | 2013-03-15 | 2013-03-15 | |
US61/799,632 | 2013-03-15 | ||
US14/201,517 US9672237B2 (en) | 2013-03-15 | 2014-03-07 | System-wide checkpoint avoidance for distributed database systems |
US14/201,517 | 2014-03-07 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016501817A Division JP6196368B2 (ja) | 2013-03-15 | 2014-03-13 | 分散型データベースシステムのシステム全体のチェックポイント回避 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017216010A JP2017216010A (ja) | 2017-12-07 |
JP6538780B2 true JP6538780B2 (ja) | 2019-07-03 |
Family
ID=51532997
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016501817A Active JP6196368B2 (ja) | 2013-03-15 | 2014-03-13 | 分散型データベースシステムのシステム全体のチェックポイント回避 |
JP2017157333A Active JP6538780B2 (ja) | 2013-03-15 | 2017-08-17 | 分散型データベースシステムのシステム全体のチェックポイント回避 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016501817A Active JP6196368B2 (ja) | 2013-03-15 | 2014-03-13 | 分散型データベースシステムのシステム全体のチェックポイント回避 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9672237B2 (ja) |
EP (2) | EP2973055A4 (ja) |
JP (2) | JP6196368B2 (ja) |
KR (2) | KR101771246B1 (ja) |
CN (2) | CN105210062B (ja) |
AU (3) | AU2014235185B2 (ja) |
CA (2) | CA2907086C (ja) |
WO (1) | WO2014151260A1 (ja) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
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 |
US9672237B2 (en) | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
US9514007B2 (en) | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
US9152330B2 (en) * | 2014-01-09 | 2015-10-06 | Netapp, Inc. | NVRAM data organization using self-describing entities for predictable recovery after power-loss |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
JP2015225603A (ja) * | 2014-05-29 | 2015-12-14 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム |
US10082980B1 (en) * | 2014-06-20 | 2018-09-25 | EMC IP Holding Company LLC | Migration of snapshot in replication system using a log |
US9798728B2 (en) | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
US9671960B2 (en) | 2014-09-12 | 2017-06-06 | Netapp, Inc. | Rate matching technique for balancing segment cleaning and I/O workload |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9558078B2 (en) | 2014-10-28 | 2017-01-31 | Microsoft Technology Licensing, Llc | Point in time database restore from storage snapshots |
US9870386B1 (en) * | 2014-10-31 | 2018-01-16 | Amazon Technologies, Inc. | Reducing I/O operations for on-demand demand data page generation |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
JP5916974B1 (ja) * | 2014-11-19 | 2016-05-11 | 株式会社インフォメックス | データ検索装置、プログラム、及び記録媒体 |
US9292332B1 (en) | 2014-12-11 | 2016-03-22 | Amazon Technologies, Inc. | Live updates for virtual machine monitor |
CN105760398A (zh) * | 2014-12-18 | 2016-07-13 | 中兴通讯股份有限公司 | 一种日志记录系统及日志记录操作方法 |
US9535798B1 (en) * | 2014-12-19 | 2017-01-03 | Amazon Technologies, Inc. | Systems and methods for maintaining virtual component checkpoints on an offload device |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9762460B2 (en) | 2015-03-24 | 2017-09-12 | Netapp, Inc. | Providing continuous context for operational information of a storage system |
US9710317B2 (en) | 2015-03-30 | 2017-07-18 | Netapp, Inc. | Methods to identify, handle and recover from suspect SSDS in a clustered flash array |
US9740566B2 (en) | 2015-07-31 | 2017-08-22 | Netapp, Inc. | Snapshot creation workflow |
US10025947B1 (en) * | 2015-11-30 | 2018-07-17 | Ims Health Incorporated | System and method to produce a virtually trusted database record |
US10649976B1 (en) * | 2015-12-18 | 2020-05-12 | Amazon Technologies, Inc. | Using a global sequence number for replicating mutating data |
KR101758558B1 (ko) * | 2016-03-29 | 2017-07-26 | 엘에스산전 주식회사 | 에너지 관리 서버 및 그를 갖는 에너지 관리 시스템 |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US9852202B1 (en) | 2016-09-23 | 2017-12-26 | International Business Machines Corporation | Bandwidth-reduced coherency communication |
CN108269049B (zh) * | 2016-12-30 | 2021-01-12 | 广东精点数据科技股份有限公司 | 一种状态转移对象的数据检测方法及装置 |
US11074267B2 (en) * | 2017-03-20 | 2021-07-27 | Sap Se | Staged approach to automatic data discovery and performance |
US10909143B1 (en) * | 2017-04-14 | 2021-02-02 | Amazon Technologies, Inc. | Shared pages for database copies |
US10769035B2 (en) | 2017-04-28 | 2020-09-08 | International Business Machines Corporation | Key-value index recovery by log feed caching |
US10268502B2 (en) * | 2017-06-29 | 2019-04-23 | Intel Corporation | Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory |
CN109542329B (zh) * | 2017-09-21 | 2022-04-12 | 阿里云计算有限公司 | 日志写入方法、存储管理设备及系统 |
US11354301B2 (en) | 2017-11-13 | 2022-06-07 | LendingClub Bank, National Association | Multi-system operation audit log |
US11243941B2 (en) | 2017-11-13 | 2022-02-08 | Lendingclub Corporation | Techniques for generating pre-emptive expectation messages |
US10579240B2 (en) * | 2018-02-09 | 2020-03-03 | Picmonkey, Llc | Live-rendered and forkable graphic edit trails |
US11593496B2 (en) * | 2018-04-23 | 2023-02-28 | EMC IP Holding Company LLC | Decentralized data protection system for multi-cloud computing environment |
CN110262929B (zh) * | 2018-08-13 | 2020-01-07 | 武汉达梦数据库有限公司 | 一种保证复制事务一致性的方法以及相应的复制装置 |
US10728255B2 (en) * | 2018-09-24 | 2020-07-28 | Nutanix, Inc. | System and method for protection of entities across availability zones |
US10949548B2 (en) * | 2018-10-18 | 2021-03-16 | Verizon Patent And Licensing Inc. | Systems and methods for providing multi-node resiliency for blockchain peers |
CN113849372A (zh) * | 2018-10-22 | 2021-12-28 | 创新先进技术有限公司 | 一种数据库容量的确定方法和装置 |
US10628242B1 (en) | 2018-12-24 | 2020-04-21 | Lendingclub Corporation | Message stream processor microbatching |
US11061927B2 (en) * | 2019-04-03 | 2021-07-13 | Sap Se | Optimization of relocated queries in federated databases using cross database table replicas |
US11170029B2 (en) | 2019-05-31 | 2021-11-09 | Lendingclub Corporation | Multi-user cross-device tracking |
CN110502494B (zh) * | 2019-08-30 | 2022-03-18 | 北京思维造物信息科技股份有限公司 | 日志处理方法、装置、计算机设备及存储介质 |
CN110968463B (zh) * | 2019-12-19 | 2022-08-30 | 北京五八信息技术有限公司 | 一种确定群组中各数据节点类型的方法及装置 |
CN113010480B (zh) * | 2020-03-26 | 2024-03-19 | 腾讯科技(深圳)有限公司 | 日志处理方法、装置、电子设备及计算机可读存储介质 |
US11334277B2 (en) * | 2020-04-07 | 2022-05-17 | Vmware Inc. | Issuing efficient writes to erasure coded objects in a distributed storage system with two tiers of storage |
US11625370B2 (en) | 2020-04-07 | 2023-04-11 | Vmware, Inc. | Techniques for reducing data log recovery time and metadata write amplification |
US11334276B2 (en) * | 2020-04-07 | 2022-05-17 | Vmware Inc. | Using segment pre-allocation to support large segments |
US11467746B2 (en) | 2020-04-07 | 2022-10-11 | Vmware, Inc. | Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging |
CN111913913B (zh) * | 2020-08-07 | 2024-02-13 | 北京星辰天合科技股份有限公司 | 访问请求的处理方法和装置 |
US11593229B2 (en) * | 2020-09-23 | 2023-02-28 | Netapp, Inc. | Data protection methods and systems for a networked storage environment |
US11474719B1 (en) * | 2021-05-13 | 2022-10-18 | Vmware, Inc. | Combining the metadata and data address spaces of a distributed storage object via a composite object configuration tree |
Family Cites Families (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0373037A (ja) * | 1989-05-26 | 1991-03-28 | Hitachi Ltd | データベース障害回復方法 |
JPH03130842A (ja) | 1989-10-17 | 1991-06-04 | Toshiba Corp | データベースシステムの同時実行制御装置 |
EP0465018B1 (en) | 1990-06-29 | 1997-05-14 | Oracle Corporation | Method and apparatus for optimizing undo log usage |
JPH0827755B2 (ja) * | 1991-02-15 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データの単位を高速度でアクセスする方法 |
US5280612A (en) | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US5452445A (en) | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
US5455944A (en) * | 1993-03-16 | 1995-10-03 | International Business Machines Corporation | Method for managing logging and locking of page free space information in a transaction processing system |
US5530850A (en) | 1993-10-25 | 1996-06-25 | International Business Machines Corporation | Data storage library array with log-structured file system which allows simultaneous write and garbage collection |
EP0675451A3 (en) | 1994-03-30 | 1996-12-04 | Siemens Stromberg Carlson | Distributed database architecture and system for managing a distributed database for development in an open network. |
US5574902A (en) * | 1994-05-02 | 1996-11-12 | International Business Machines Corporation | Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store |
JP3593366B2 (ja) | 1994-09-19 | 2004-11-24 | 株式会社日立製作所 | デ−タベ−ス管理方法 |
US5692184A (en) * | 1995-05-09 | 1997-11-25 | Intergraph Corporation | Object relationship management system |
US5870758A (en) | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6041423A (en) | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
US5845292A (en) * | 1996-12-16 | 1998-12-01 | Lucent Technologies Inc. | System and method for restoring a distributed checkpointed database |
US5907848A (en) | 1997-03-14 | 1999-05-25 | Lakeview Technology, Inc. | Method and system for defining transactions from a database log |
US7031987B2 (en) | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US6240413B1 (en) | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US7930278B2 (en) | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6233585B1 (en) | 1998-03-12 | 2001-05-15 | Crossworlds Software, Inc. | Isolation levels and compensating transactions in an information system |
US6317754B1 (en) | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
JP3450786B2 (ja) | 1999-03-05 | 2003-09-29 | ミツビシ・エレクトリック・リサーチ・ラボラトリーズ・インコーポレイテッド | 異なるデータファイルを調停する方法 |
JP3763992B2 (ja) | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6615219B1 (en) | 1999-12-29 | 2003-09-02 | Unisys Corporation | Database management system and method for databases having large objects |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US6631374B1 (en) | 2000-09-29 | 2003-10-07 | Oracle Corp. | System and method for providing fine-grained temporal database access |
EP1332444A4 (en) | 2000-10-09 | 2005-10-12 | Maximum Availability Ltd | METHOD AND APPARATUS FOR PROCESSING DATA |
US20020107835A1 (en) | 2001-02-08 | 2002-08-08 | Coram Michael T. | System and method for adaptive result set caching |
US6832229B2 (en) | 2001-03-09 | 2004-12-14 | Oracle International Corporation | System and method for maintaining large-grained database concurrency with a log monitor incorporating dynamically redefinable business logic |
US20040249869A1 (en) | 2001-06-25 | 2004-12-09 | Kenneth Oksanen | Method and system for restarting a replica of a database |
US7305421B2 (en) * | 2001-07-16 | 2007-12-04 | Sap Ag | Parallelized redo-only logging and recovery for highly available main memory database systems |
WO2003009139A1 (en) | 2001-07-16 | 2003-01-30 | Transact In Memory, Inc. | Parallelized redo-only logging and recovery for highly available main memory database systems |
US7136883B2 (en) * | 2001-09-08 | 2006-11-14 | Siemens Medial Solutions Health Services Corporation | System for managing object storage and retrieval in partitioned storage media |
US6732171B2 (en) | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
US7305386B2 (en) | 2002-09-13 | 2007-12-04 | Netezza Corporation | Controlling visibility in multi-version database systems |
US7089253B2 (en) | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US6976022B2 (en) | 2002-09-16 | 2005-12-13 | Oracle International Corporation | Method and mechanism for batch processing transaction logging records |
US8489742B2 (en) | 2002-10-10 | 2013-07-16 | Convergys Information Management Group, Inc. | System and method for work management |
US7308456B2 (en) | 2002-12-19 | 2007-12-11 | International Business Machines Corporation | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7937551B2 (en) | 2003-01-21 | 2011-05-03 | Dell Products L.P. | Storage systems having differentiated storage pools |
CA2422176C (en) * | 2003-03-14 | 2009-07-21 | Ibm Canada Limited - Ibm Canada Limitee | Method and apparatus for interrupting updates to a database to provide read-only access |
US7890466B2 (en) * | 2003-04-16 | 2011-02-15 | Oracle International Corporation | Techniques for increasing the usefulness of transaction logs |
US7039773B2 (en) | 2003-04-29 | 2006-05-02 | Oracle International Corporation | Method and mechanism for efficient implementation of ordered records |
US7287034B2 (en) * | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US7328226B1 (en) | 2003-06-30 | 2008-02-05 | Symantec Operating Corporation | Coordinated distributed log-based snapshots in a multi-host environment |
US20050203783A1 (en) * | 2004-02-27 | 2005-09-15 | Allen Michelle M. | Automated real-time event planning system and method |
JP2005276094A (ja) | 2004-03-26 | 2005-10-06 | Hitachi Ltd | 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム |
US7146386B2 (en) | 2004-03-29 | 2006-12-05 | Microsoft Corporation | System and method for a snapshot query during database recovery |
US20060020634A1 (en) | 2004-07-20 | 2006-01-26 | International Business Machines Corporation | Method, system and program for recording changes made to a database |
US7650356B2 (en) | 2004-08-24 | 2010-01-19 | Microsoft Corporation | Generating an optimized restore plan |
US7403945B2 (en) * | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
US20060136933A1 (en) * | 2004-12-17 | 2006-06-22 | Microsoft Corporation | Server-side eventing for managed server applications |
US7814057B2 (en) | 2005-04-05 | 2010-10-12 | Microsoft Corporation | Page recovery using volume snapshots and logs |
US7716645B2 (en) | 2005-06-10 | 2010-05-11 | International Business Machines Corporation | Using atomic sets of memory locations |
US7620660B2 (en) * | 2005-06-30 | 2009-11-17 | Microsoft Corporation | Pre-image logging for database recovery |
US7873683B2 (en) | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US20070083570A1 (en) | 2005-10-11 | 2007-04-12 | Fineberg Samuel A | File system versioning using a log |
US7885922B2 (en) | 2005-10-28 | 2011-02-08 | Oracle International Corporation | Apparatus and method for creating a real time database replica |
ES2582364T3 (es) | 2005-12-19 | 2016-09-12 | Commvault Systems, Inc. | Sistemas y métodos para realizar replicación de datos |
JP2007200182A (ja) | 2006-01-30 | 2007-08-09 | Hitachi Ltd | ストレージ装置、及びストレージシステム |
JP5124989B2 (ja) | 2006-05-26 | 2013-01-23 | 日本電気株式会社 | ストレージシステム及びデータ保護方法とプログラム |
JP2008003932A (ja) | 2006-06-23 | 2008-01-10 | Sony Corp | データ記憶装置、データ記憶方法およびコンピュータプログラム |
US7882064B2 (en) | 2006-07-06 | 2011-02-01 | Emc Corporation | File system replication |
US8069191B2 (en) | 2006-07-13 | 2011-11-29 | International Business Machines Corporation | Method, an apparatus and a system for managing a snapshot storage pool |
US8935206B2 (en) | 2007-01-31 | 2015-01-13 | Hewlett-Packard Development Company, L.P. | Snapshots in distributed storage systems |
US8370715B2 (en) | 2007-04-12 | 2013-02-05 | International Business Machines Corporation | Error checking addressable blocks in storage |
US8086650B1 (en) | 2007-06-15 | 2011-12-27 | Ipswitch, Inc. | Method for transforming and consolidating fields in log records from logs generated on different operating systems |
US8326897B2 (en) | 2007-12-19 | 2012-12-04 | International Business Machines Corporation | Apparatus and method for managing data storage |
US7979670B2 (en) | 2008-01-24 | 2011-07-12 | Quantum Corporation | Methods and systems for vectored data de-duplication |
US8401994B2 (en) | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
JP2011515727A (ja) | 2008-02-12 | 2011-05-19 | ネットアップ,インコーポレイテッド | ハイブリッド媒体ストレージシステムアーキテクチャ |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8074014B2 (en) | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US8266114B2 (en) | 2008-09-22 | 2012-09-11 | Riverbed Technology, Inc. | Log structured content addressable deduplicating storage |
US8341128B1 (en) | 2008-05-09 | 2012-12-25 | Workday, Inc. | Concurrency control using an effective change stack and tenant-based isolation |
US9104662B2 (en) | 2008-08-08 | 2015-08-11 | Oracle International Corporation | Method and system for implementing parallel transformations of records |
US9842004B2 (en) | 2008-08-22 | 2017-12-12 | Red Hat, Inc. | Adjusting resource usage for cloud-based networks |
EP2350837A4 (en) * | 2008-09-15 | 2012-10-17 | Virsto Software Corp | STORAGE MANAGEMENT SYSTEM FOR VIRTUAL MACHINES |
US8255373B2 (en) | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
US8229890B2 (en) | 2008-12-15 | 2012-07-24 | International Business Machines Corporation | Opening document stored at multiple database replicas |
US8429134B2 (en) | 2009-09-08 | 2013-04-23 | Oracle International Corporation | Distributed database recovery |
WO2011031900A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
US8392479B1 (en) | 2009-09-14 | 2013-03-05 | Symantec Corporation | Method and apparatus for optimizing storage space allocation for computer data |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8250213B2 (en) | 2009-11-16 | 2012-08-21 | At&T Intellectual Property I, L.P. | Methods and apparatus to allocate resources associated with a distributive computing network |
CN101706811B (zh) * | 2009-11-24 | 2012-01-25 | 中国科学院软件研究所 | 一种分布式数据库系统事务提交方法 |
US8396831B2 (en) | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US20110161496A1 (en) | 2009-12-28 | 2011-06-30 | Nicklin Jonathan C | Implementation and management of internet accessible services using dynamically provisioned resources |
WO2011082138A1 (en) | 2009-12-31 | 2011-07-07 | Commvault Systems, Inc. | Systems and methods for performing data management operations using snapshots |
US8671074B2 (en) | 2010-04-12 | 2014-03-11 | Microsoft Corporation | Logical replication in clustered database system with adaptive cloning |
JP5536568B2 (ja) | 2010-07-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを集約して処理する方法、システム、およびプログラム |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US20120041899A1 (en) | 2010-08-10 | 2012-02-16 | Palo Alto Research Center Incorporated | Data center customer cost determination mechanisms |
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
CN102012849B (zh) * | 2010-11-19 | 2012-10-24 | 中国人民大学 | 一种基于闪存的数据库恢复方法 |
US8910172B2 (en) | 2010-12-29 | 2014-12-09 | Symantec Corporation | Application resource switchover systems and methods |
KR20120084906A (ko) * | 2011-01-21 | 2012-07-31 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 그 관리 방법 |
JP5672491B2 (ja) * | 2011-03-29 | 2015-02-18 | ソニー株式会社 | 情報処理装置および方法、並びにログ収集システム |
US8918362B2 (en) | 2011-05-23 | 2014-12-23 | Microsoft Corporation | Replication processes in a distributed storage environment |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US8554726B2 (en) | 2011-06-01 | 2013-10-08 | Clustrix, Inc. | Systems and methods for reslicing data in a relational database |
US9348883B2 (en) | 2011-06-01 | 2016-05-24 | Clustrix, Inc. | Systems and methods for replication replay in a relational database |
US8868492B2 (en) | 2011-06-15 | 2014-10-21 | Oracle International Corporation | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica |
JP2013025425A (ja) | 2011-07-19 | 2013-02-04 | Nec Corp | 分散データ管理システム、分散データ管理方法、および分散データ管理プログラム |
KR101824295B1 (ko) | 2011-08-12 | 2018-01-31 | 샌디스크 테크놀로지스 엘엘씨 | 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 |
US8909996B2 (en) * | 2011-08-12 | 2014-12-09 | Oracle International Corporation | Utilizing multiple storage devices to reduce write latency for database logging |
US8712961B2 (en) | 2011-09-23 | 2014-04-29 | International Business Machines Corporation | Database caching utilizing asynchronous log-based replication |
US10042674B2 (en) | 2011-09-30 | 2018-08-07 | Teradata Us, Inc. | Regulating capacity and managing services of computing environments and systems that include a database |
US9542279B2 (en) * | 2011-11-07 | 2017-01-10 | Sap Se | Shadow paging based log segment directory |
US8527462B1 (en) * | 2012-02-09 | 2013-09-03 | Microsoft Corporation | Database point-in-time restore and as-of query |
US9507523B1 (en) * | 2012-10-12 | 2016-11-29 | Western Digital Technologies, Inc. | Methods, devices and systems for variable size logical page management in a solid state drive |
US9672237B2 (en) | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
US9870279B2 (en) * | 2014-01-29 | 2018-01-16 | Hitachi, Ltd. | Analysis apparatus and analysis method |
-
2014
- 2014-03-07 US US14/201,517 patent/US9672237B2/en active Active
- 2014-03-13 EP EP14768471.6A patent/EP2973055A4/en not_active Withdrawn
- 2014-03-13 CN CN201480025666.0A patent/CN105210062B/zh active Active
- 2014-03-13 CN CN201910306073.6A patent/CN110019280B/zh active Active
- 2014-03-13 WO PCT/US2014/025311 patent/WO2014151260A1/en active Application Filing
- 2014-03-13 CA CA2907086A patent/CA2907086C/en active Active
- 2014-03-13 KR KR1020157029050A patent/KR101771246B1/ko active IP Right Grant
- 2014-03-13 JP JP2016501817A patent/JP6196368B2/ja active Active
- 2014-03-13 EP EP19162030.1A patent/EP3588322B1/en active Active
- 2014-03-13 AU AU2014235185A patent/AU2014235185B2/en active Active
- 2014-03-13 KR KR1020177023182A patent/KR101827239B1/ko active IP Right Grant
- 2014-03-13 CA CA3080525A patent/CA3080525C/en active Active
-
2017
- 2017-06-05 US US15/613,637 patent/US10331655B2/en active Active
- 2017-08-17 JP JP2017157333A patent/JP6538780B2/ja active Active
- 2017-09-08 AU AU2017225108A patent/AU2017225108B2/en active Active
- 2017-09-08 AU AU2017225107A patent/AU2017225107B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
AU2014235185B2 (en) | 2017-06-08 |
US9672237B2 (en) | 2017-06-06 |
CN110019280B (zh) | 2024-01-19 |
US10331655B2 (en) | 2019-06-25 |
CA2907086C (en) | 2020-07-21 |
EP2973055A4 (en) | 2016-10-26 |
JP6196368B2 (ja) | 2017-09-13 |
US20140279931A1 (en) | 2014-09-18 |
EP3588322B1 (en) | 2023-05-03 |
AU2017225107A1 (en) | 2017-09-28 |
KR101771246B1 (ko) | 2017-08-24 |
WO2014151260A1 (en) | 2014-09-25 |
AU2017225108A1 (en) | 2017-09-28 |
EP3588322A1 (en) | 2020-01-01 |
KR20150129839A (ko) | 2015-11-20 |
JP2017216010A (ja) | 2017-12-07 |
CN105210062B (zh) | 2019-05-14 |
CN110019280A (zh) | 2019-07-16 |
AU2014235185A1 (en) | 2015-11-05 |
US20170270152A1 (en) | 2017-09-21 |
CN105210062A (zh) | 2015-12-30 |
AU2017225108B2 (en) | 2018-09-13 |
AU2017225107B2 (en) | 2018-09-13 |
KR101827239B1 (ko) | 2018-02-07 |
CA3080525A1 (en) | 2014-09-25 |
KR20170098981A (ko) | 2017-08-30 |
CA2907086A1 (en) | 2014-09-25 |
EP2973055A1 (en) | 2016-01-20 |
JP2016511499A (ja) | 2016-04-14 |
CA3080525C (en) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6538780B2 (ja) | 分散型データベースシステムのシステム全体のチェックポイント回避 | |
JP6522812B2 (ja) | 分散型データベースシステム用高速クラッシュ回復 | |
JP6661696B2 (ja) | データベースエンジンを備えたデータベースシステム及び別個の分散型ストレージサービス | |
US11755415B2 (en) | Variable data replication for storage implementing data backup | |
US10223184B1 (en) | Individual write quorums for a log-structured distributed storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170831 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170831 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180626 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20180926 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181121 |
|
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: 20190507 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190606 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6538780 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |