JP6677759B2 - 拡張縮小可能なログベーストランザクション管理 - Google Patents

拡張縮小可能なログベーストランザクション管理 Download PDF

Info

Publication number
JP6677759B2
JP6677759B2 JP2018099381A JP2018099381A JP6677759B2 JP 6677759 B2 JP6677759 B2 JP 6677759B2 JP 2018099381 A JP2018099381 A JP 2018099381A JP 2018099381 A JP2018099381 A JP 2018099381A JP 6677759 B2 JP6677759 B2 JP 6677759B2
Authority
JP
Japan
Prior art keywords
write
transaction
commit
partition
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018099381A
Other languages
English (en)
Other versions
JP2018163671A (ja
Inventor
ヴァーミューレン,アラン・ヘンリー
ポル,パリクシット・エス
ラス,ティモシー・アンドリュー
コール,ティモシー・ダニエル
ムニスワミー−レディ,キラン−クマール
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/482,661 external-priority patent/US9519674B2/en
Priority claimed from US14/482,677 external-priority patent/US9323569B2/en
Priority claimed from US14/482,668 external-priority patent/US10303795B2/en
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2018163671A publication Critical patent/JP2018163671A/ja
Application granted granted Critical
Publication of JP6677759B2 publication Critical patent/JP6677759B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control

Description

近年、ますます多くのコンピューティングアプリケーションが分散環境において実施さ
れている。所定の分散アプリケーションは、例えば、プロバイダネットワークのいくつか
のデータセンタに分散された多数の物理及び/または仮想サーバを利用し、数多くの異な
る国の顧客に応対し得る。所定のアプリケーションに関わるサーバの数が増える程、及び
/またはアプリケーションのネットワークの複雑さが増す程、様々な種類の障害イベント
(プロセスまたはサーバの見かけ上または実際の障害、ネットワークメッセージレイテン
シにおける実質的遅延、または対のサーバ間の接続損失等)に必然的に遭遇する割合は高
くなる。そのため分散アプリケーションの設計者は、アプリケーション構成ステートの変
更に応じると同時に、高いレベルのアプリケーション性能(例えばアプリケーション要求
に対する高スループット及び低応答時間)の維持を試みるという課題に直面する。
ステート情報を管理するためのいくつかの従来技術は、整合的にアプリケーションステ
ート変更を実施するために、ステート情報をロックすることを伴い得る。あいにくアプリ
ケーションステート及び/またはデータに使われるロック機構は、アプリケーションのサ
イズ及び複雑さが増大すると、それ自体が性能障害となり得ることが多い。他の技術はロ
ックを回避し得るが、アプリケーションのコンポーネント間に変更されたステート情報を
伝播するために、通常動作を中断する必要があり得る。しかしながら、このような「全世
界停止」期間は、特に世界中の異なる時間帯に分布する数百または数千の顧客によるミッ
ションクリティカルな作業負荷に使用される、レイテンシに敏感なアプリケーションには
、問題となり得る。ロック及び全世界一時停止を回避するいくつかの技術でも、非常に高
いレートのステート遷移を扱う時には、障害に陥り得る。
少なくともいくつかの実施形態による、アプリケーションステート変更を管理するために複製ノードの動的DAG(有向非巡回グラフ)が確立された例示的システム環境を示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、DAGのノードのうちの1つに障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、動的複製DAGにて生成され得るアプリケーションステートレコードとDAG構成デルタメッセージとの例示的コンポーネントを示す。 少なくともいくつかの実施形態による、プロバイダネットワークの複数の可用性コンテナにわたりメンバーノードが分散された例示的複製DAGを示す。 少なくともいくつかの実施形態による、複数の複製DAGのノードがマルチテナント様式で単一のホストに実装され得る例示的構成を示す。 少なくともいくつかの実施形態による、ステート遷移要求の受信に応じて複製DAGの受諾ノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、承認済みステート遷移メッセージの受信に応じて複製DAGの中間ノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、承認済みステート遷移メッセージの受信に応じて複製DAGのコミッタノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、複製DAGの構成マネジャーで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、構成マネジャーからの構成デルタメッセージの受信に応じて複製DAGのメンバーノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG等のステート複製グループのコミッタノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG等のステート複製グループの非コミッタノードで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG等のステート複製グループの構成マネジャーで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、複数のデータストアへの書き込みを含み得るトランザクションに対応する持続的変更ログを備える例示的システム環境を示す。 少なくともいくつかの実施形態による、複製DAGを使用する持続的変更ログの例示的実施態様を示す。 少なくともいくつかの実施形態による、ログサービスのクライアントにより提出され得るトランザクション要求記述子の例示的コンポーネント要素を示す。 少なくともいくつかの実施形態による、ログベーストランザクションマネジャーにおける読み出し書き込み競合検出の実施例を示す。 少なくともいくつかの実施形態による、ログサービスで行われ得る制御プレーン動作態様を示すフロー図である。 少なくともいくつかの実施形態による、クライアントから受信されるトランザクション要求に応じてログサービスで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、それぞれの特例整合性目標を達成するために使用され得るトランザクション要求記述子の実施例を示す。 少なくともいくつかの実施形態による、ログベーストランザクションマネジャーで受信されるトランザクション要求に対応付けられた重複排除制約を施行する実施例を示す。 少なくともいくつかの実施形態による、ログベーストランザクションマネジャーで受信されるトランザクション要求に対応付けられた順序付け制約を施行する実施例を示す。 少なくともいくつかの実施形態による、複数の論理制約記述子を含むトランザクション要求記述子の実施例を示す。 少なくともいくつかの実施形態による、1つまたは複数の論理制約を示すトランザクション要求に応じてログサービスで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、それぞれのログ整合格納グループに対しそれぞれの価格設定ポリシーが実施され得る例示的システム環境を示す。 少なくともいくつかの実施形態による、単一データストア及びデータストア横断書き込み動作の実施例を示す。 少なくともいくつかの実施形態による、ログ整合格納グループに対する価格設定ポリシーを決定する際考慮され得る要素の実施例を示す。 少なくともいくつかの実施形態による、ログ整合格納グループを実施するサービスのユーザに対し価格設定ポリシーの選択肢を示すために使用され得る例示的ウェブベースインターフェースを示す。 少なくともいくつかの実施形態による、ログ整合格納グループに対応するサービスにて請求額を決定するために行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、トランザクション受諾のために読み出し位置ベース競合検出を使用することによりデータ不整合が生じ得る、格納システムにおける例示的一連イベントを示す。 少なくともいくつかの実施形態による、読み出し要求に応じて提供される読み出し記述子が読み出し再現性検証メタデータ(RRVM)コンポーネントを含むシステム環境を示す。 少なくともいくつかの実施形態による、読み出し記述子の例示的構成コンポーネントを示す。 少なくともいくつかの実施形態による、格納システムのクライアント側コンポーネントに読み出し記述子が提供される前に読み出し記述子に適用され得る例示的変換を示す。 少なくともいくつかの実施形態による、格納システムのクライアント側コンポーネントにおいて候補トランザクションコミット要求の生成を引き起こし得る例示的一連イベントを示す。 少なくともいくつかの実施形態による、書き込み記述子と読み出し記述子とをそれぞれのログに格納する例示的トランザクションマネジャーを示す。 少なくともいくつかの実施形態による、読み出し要求に応じて読み出し記述子が提供される、格納システムで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、候補トランザクション要求がクライアント側コンポーネントにて生成される、格納システムで行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、格納グループの異なるパーティションに対しそれぞれのログベーストランザクションマネジャーが確立され得る例示的システム環境を示す。 少なくともいくつかの実施形態による、格納グループの性能ベースのトランザクション管理構成の実施例を示す。 少なくともいくつかの実施形態による、所定のデータストアのために複数のログベーストランザクションマネジャーが確立され得る例示的構成を示す。 少なくともいくつかの実施形態による、格納グループの主要パーティションに対し確立されるログベーストランザクションマネジャーのログと共に、複数パーティションコミット判定レポジトリが共同配置される例示的構成を示す。 少なくともいくつかの実施形態による、複数パーティショントランザクションに対応する格納グループで生成され得るコミット要求の例示的構成要素を示す。 少なくともいくつかの実施形態による、ログベーストランザクションマネジャーにより単一パーティショントランザクションと複数パーティショントランザクションに関してそれぞれ格納され得るコミットレコードの例示的構成要素を示す。 少なくともいくつかの実施形態による、ログベーストランザクションマネジャーにより単一パーティショントランザクションと複数パーティショントランザクションに関してそれぞれ格納され得るコミットレコードの例示的構成要素を示す。 少なくともいくつかの実施形態による、クライアント側コンポーネントと、複数パーティショントランザクションに対応する格納グループのそれぞれのパーティションのログベーストランザクションマネジャーとにより行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態による、複数パーティショントランザクションに対応する格納グループの書き込みアプライヤにより行われ得る動作態様を示すフロー図である。 少なくともいくつかの実施形態において使用され得る例示的コンピューティングデバイスを示すブロック図である。
本明細書において、実施形態はいくつかの例示的実施形態及び例示的図面として説明さ
れるが、実施形態は説明される実施形態または図面に限定されないことを、当業者は認識
するであろう。図面とその詳細説明には、実施形態を開示される特定の形態に限定する意
図はなく、それとは逆に、添付の特許請求の範囲により定義される趣旨及び範囲に入る全
ての変更、均等物、及び代替案を包含する意図があることを理解されたい。本明細書にお
いて使用される見出しは、構成目的でのみ用いられ、説明または特許請求の範囲を限定す
るために用いられることを意図しない。本出願を通して使用される英単語“may”は、
義務的な意味(すなわち「〜しなければならない」という意味)ではなく、許容的な意味
(すなわち「〜する可能性がある」という意味)で使用される。同様に、英単語“inc
lude”、“including”、及び“includes”は「含む」ことを意味
するが、その対象に限定されない。
グラフとして体系付けられた複製ノードを使用して分散アプリケーションステートを管
理する方法及び装置の様々な実施形態、及びトランザクション管理に使用され得るログサ
ービスを実施するためにこのようなグラフを展開する方法及び装置の様々な実施形態が説
明される。いくつかの実施形態によれば、フォールトトレラント分散アプリケーションを
築くための複製ステートマシンは、有向非巡回グラフ(DAG)に配置された複数の複製
ノードを使用して実施され得る。いくつかの実施態様において、特定複製DAGは、1個
または複数の受諾ノードと、1個または複数のコミッタノードと、受諾ノードからコミッ
タノードまで導くDAG辺を含む複製経路に沿ってそれぞれ配置された0個または複数の
中間ノードと、ノード障害時に他の種類のノードのうちの1つの責務を素早く引き継ぐよ
うに構成された0個または複数の待機ノードとを含み得る。複製DAGの受諾、中間、及
び待機ノードは、本明細書において「非コミッタ」ノードとまとめて称され得る。「受諾
」、「中間」、「コミッタ」、及び「待機」は、DAGノードが担い得る役割の集合とし
てまとめて称され得る。いくつかの実施形態において、受諾ノードはDAGの「先頭」ノ
ードとも称され、そしてコミッタノードは「末尾」ノードとも称され得る。
一般に、少なくともいくつかの実施形態において、特定複製DAGの各ノードは、少な
くとも特定アプリケーションのステート情報を、例えばローカルディスクまたは他の同様
の格納デバイスに書き込まれるステート遷移レコードの形態で複製する責務を担い得る。
アプリケーションステート情報は、本明細書において複製経路またはコミット経路と称さ
れるDAGの受諾ノードからコミッタノードまで辺の集合に沿って伝播され得る。DAG
内で伝播される各ステート遷移メッセージには、対応ステート遷移要求が(例えば受諾ノ
ードにおいて)処理された順序を示すそれぞれのシーケンス番号または論理タイムスタン
プが含まれ得る。シーケンス番号は、異なる実施形態における様々な技術のうちのいずれ
かを使用して実施され得る。例えば、受諾ノードにより保持される単一Nビットカウンタ
が使用され得る、あるいはDAGの構成マネジャー等のDAGの管理コンポーネントによ
り生成される単調増加論理タイムスタンプ(時刻機構に関連するとは限らない)が使用さ
れ得る。例えばステート遷移レコードの十分な数のレプリカが複製経路に沿って保存され
た後、特定ステート遷移レコードがコミッタノードに達すると、遷移は明示的または暗示
的にコミットされ得る。ある時点でのアプリケーションのステートは、いくつかの実施形
態において、選択されたシーケンス番号までの全てのコミットされたステート遷移の結果
の論理的蓄積として決定され得る。構成マネジャーは、後述のように構成デルタメッセー
ジを非同期的にDAGノードへ伝播することにより、DAG構成に対する変更を管理する
責務を担い得る(例えば障害のためノードがDAGから離脱する、またはDAGに参加/
再参加する時)。いくつかの実施形態において、各複製ノードはそれぞれの決定性有限ス
テートマシンを実施し、そして構成マネジャーは別の決定性有限ステートマシンを実施し
得る。DAG構成変更を管理するために使用されるプロトコルは、様々な実施形態におい
てDAGの可用性または「活性」を最大化するように設計され得る。例えば、DAGノー
ドは、少なくともいくつかの実施形態においてDAGの構成に対するそれらの見解を同期
しなくてもよいため、複製経路沿いのノードのうちのいくつかが現行のDAG構成に対し
て他のノードとは異なる見解を有したとしても、アプリケーションステート遷移処理に使
用されるプロトコルは正常に機能し得る。従って、1つの単純な例示的シナリオにおいて
、DAGがノードA、B、C、Dの順序で構成される(すなわち複製経路A〜B〜C〜D
を伴う)という仮定の下で、DAGの1つのノードAはそのステート遷移処理責務を実行
し続ける一方、別のノードDは、ノードCがDAGを離脱したという構成デルタメッセー
ジ結果を既に通知されたため、DのDAGの見解を、変更後の経路A〜B〜Dを含むもの
に更新したという場合もあり得る。現行のDAG構成に関してノードの見解が異なってい
る可能性があるにもかかわらず、構成マネジャーは、少なくともいくつかの実施形態にお
いてステート遷移ノードの処理を中断するようDAGノードに要求しなくてもよい。従っ
て、いくつかのステート複製技術において要求され得る種々の「全世界停止」構成同期期
間は、本明細書において説明される類の複製DAGを使用する場合、必要なくなり得る。
大抵の作動条件の下で、DAG構成変更情報を伝播するために使用される技術により、
様々なメンバーノードにおけるDAG構成の見解は最終的に収束した一貫性のあるものと
なり、同時に、ノード障害/退出、ノード参加、またはノード役割変更に伴ういずれの中
断時間も最小化または削除され得る。ステート管理プロトコルの正確性に関する正式な数
学的証明は、少なくともいくつかの実施形態に関して利用可能であり得る。少なくともい
くつかの実施形態において、複製DAGのプロトコルは、障害誤検出に対処する際、特に
有効であり得る。例えば、前述の実施例において、ノードDは構成マネジャーにより、ノ
ードCに実際障害は発生していないのに、ノードCに障害が発生したことを通知され得た
。従って、誤判定障害検出の後しばらくの間、Cの退出を示す構成デルタメッセージがA
、B、Dに受信されるまでの間隔において、ステート遷移はCにより(及びその隣接ノー
ドBとDにより)依然正しく処理されるため、ステートが複製中のアプリケーションは、
障害誤検出にもかかわらず進行可能となる。CがDAGから削除されたことが最終的に通
知されると、Cは構成マネジャーにCは実際にはサービス対応可能であることを示し、D
AGに再参加することを許可され得る(例えば待機ノードとして、または修正された複製
経路沿いのいくつかの他の位置に)。
いくつかの実施形態において、受諾ノードは、複製DAGのクライアントからアプリケ
ーションステート遷移要求を受信し、最終的なコミットのために特定要求遷移を受諾する
べきか否かを判定し、受諾したステート遷移レコードのローカルレプリカを格納し、受諾
したステート遷移レコードをコミッタノードに向けてDAGの複製経路沿いの隣接ノード
へ送信する責務を担い得る。使用事例により、ステート遷移レコードは、いくつかの実施
形態において書き込みペイロードを含み得る。例えばアプリケーションステートがデータ
ベースのコンテンツを含む場合、ステート遷移レコードは、ステート遷移に該当する遷移
間に書き込まれるバイトを含み得る。受諾ノードは、少なくともいくつかの実施形態にお
いて、受諾したステート遷移のシーケンス番号を決定または生成する責務も担い得る。中
間ノードは、受諾済みステート遷移レコードのローカルレプリカを格納し、受諾済みステ
ート遷移を示すメッセージを、コミッタノードに向けて経路沿いの次のノードへ送信/転
送する責務を担い得る。コミッタノードは、ステート遷移レコードの自身のレプリカを、
例えばレコードがコミットされたことの開示と共に、ローカル格納域に格納し得る。対応
ステート遷移がコミットされたことを示すレコードは、本明細書において「コミットレコ
ード」と称され、一方対応ステート遷移が受諾されたが必ずしも既にコミットされたとは
限らないことを示すレコードは「受諾レコード」と称され得る。いくつかの実施形態にお
いて、アプリケーションの必要に応じて、コミッタノードは、ステート遷移を要求したク
ライアントに対し(例えば受諾ノードを介して)コミット応答の送信を開始し得る。少な
くとも一実施形態において、コミッタノードは、ステート遷移がコミットされたことを、
複製経路沿いの一部または全てのノードに通知し得る。いくつかの実施形態において、コ
ミットの開示がDAGノードで受信されると、コミットレコードを現在示すように、現在
コミットされたステート遷移の受諾レコードは、対応コミットレコードに置き換え、また
は修正され得る。別の実施形態において、所定のDAGノードは、同じステート遷移に関
して受諾レコードとコミットレコードの両方を、例えばそれぞれのシーケンス番号と共に
格納し得る。いくつかの実施態様においては、別個のコミットレコード集合と受諾レコー
ド集合とが様々なDAGノードのローカル格納域に格納され、一方別の実施態様において
は、所定のステート遷移に関して1度に1種類のレコード(受諾またはコミット)のみが
所定のDAGノードに格納され得る。
構成マネジャーは、いくつかの実施形態において、DAGの構成情報の正式な情報源と
して設計され、DAG構成に対する変更を受諾し、DAGノードに対する変更を伝播する
責務を担い得る。少なくともいくつかの実施形態において、構成マネジャー自体は、障害
に対し回復力があるように、例えばDAG構成変更(ノードの削除または追加等)を、合
意を介して集合的に承認し、かつ複数の構成マネジャー格納デバイスにおいてDAG構成
を複製するノードのフォールトトレラントクラスタとして、設計され得る。「構成デルタ
」という名称から暗示されるように、構成マネジャーによりDAGノードへ送信されるメ
ッセージは、特定の変更(例えばDAGに参加するまたはDAGから離脱するノードによ
り生じる変更、あるいはDAGの既存ノードの役割/配置に関する変更)の開示のみを含
み、DAGの構成全体の表現を含まなくても、またはDAGのメンバー全体を列挙しなく
てもよい。構成デルタメッセージの所定の受信ノードは従って、これまで受信した特定集
合または一連の構成デルタメッセージに基づいて、DAG構成の自身の見解を構築するこ
とが見込まれ得る。いくつかの実施態様において、構成デルタメッセージにはシーケンス
番号も割り当てられ、例えばこれにより、構成デルタメッセージの受信ノードは、全ての
前の構成デルタメッセージを自身が受信したか否かを判定可能となる。構成マネジャーは
、別個のDAGノードにより構成デルタメッセージが受信される順序または相対的タイミ
ングを保証しようと試み得ないため、いくつかの実施形態において、前述の実施例により
示されるように少なくともある時間、別個のノードによりDAG構成の現行の見解は異な
り得る。
一実施形態によれば、構成デルタメッセージに応じてDAGノードが取る行動は、構成
変更が受信ノードのすぐ隣のノードに影響するか否かに基づいて異なり得る。DAGが、
T0時点に受諾ノードA、中間ノードB、及びコミッタノードCを含み、初期複製経路A
〜B〜Cを有する別の例示的シナリオを検討する。T1時点に、DAGの構成マネジャー
DCM1は、例えば見かけ上の障害または接続損失の結果より、BがDAGから離脱した
ことを認識する。DCM1は、ステート遷移要求処理におけるいかなる中断も要求するこ
となく、残りのノードA、Cに対しそれぞれの非同期構成デルタメッセージD1、D2を
それぞれ送信し得る。AがT3時点にD1を受信する前に、CがT2時点にD2を受信す
る場合、ある時間間隔(T3−T2)においてAはBに対してステート遷移メッセージを
送り続け得る(しかしNに実際に障害が起こった場合、Aが送信したメッセージはBによ
り処理され得ない)。同様に、CがT3時点にD2を受信する前に、AがT2時点にD1
を受信する場合、DAGからBの離脱をCが認識するまでのある時間(T3−T2)、C
は、Bに障害が起こった時に送信過程にあったメッセージをBから受信し、処理し続け得
る。ノードAがD1を受信した時に、AはCから連絡をまだ受けていない場合、ノードA
は、古い複製経路(A〜B〜C)に置き換わる新たな構成の複製経路(A〜C)において
Aの新たな隣接後続ノードとなるCに対し、接続を確立し得る。同様に、CがD2を受信
した時に、Cは自身の新たな隣接先行ノードとなるAに対し接続を確立し(AがCにまだ
連絡を取っていない場合)、そして少なくともいくつかの実施形態において、AからBへ
送信されたがまだCに届いてないステート遷移レコードの再送信の要求を、CはAに提出
し得る。例えば、Cは再送信要求内に、これまでCが受信済みのステート遷移レコードの
最大シーケンス番号HSN1を含ませ、これによりAは、HSN1より大きいシーケンス
番号を有するいずれのステート遷移レコードも再送可能となる。
少なくともいくつかの実施形態において、構成マネジャーは、正常性検出機構またはD
AGノードが見かけ上不正常になった時を示すサービスに依拠しており、これによりDA
G構成から見かけ上不正常なノードは除去され得る。分散環境における少なくともいくつ
かの正常性検出機構は、ノードの正常性ステータスに関して必ずしも正しい判断をすると
は限らないハートビートまたは他の低次機構に依存し得る。同時に、構成マネジャーは、
その構成デルタメッセージを送信する前に、実際のノード障害を確認するのをいつまでも
待機する立場にはあり得ず、代わりに構成マネジャーは、ノード障害の可能性がある閾値
(例えば80%または90%)を超えると判定した際、構成デルタメッセージを送信し得
る、あるいはいくつかの他のヒューリスティックを使用してDAG構成変更及び対応デル
タメッセージを引き起こし得る。前述のように、複製DAGにおいて使用されるステート
管理プロトコルは、例えば「全世界停止」中断を回避することにより、誤判定障害「検出
」の悪影響を緩和し得る。その結果、他のステート複製技術が使用された場合に容認され
たであろう障害検査機構よりも、より迅速/安価な(しかし信頼性は低い可能性のある)
障害検査機構が、複製DAG採用時には使用可能となり得る。
少なくとも一実施形態において、整合一時停止技術が複製DAGに実施され得る。ある
条件の下、例えば複数のDAGリソースまたはノードが関わる大規模障害イベントが検出
された場合、構成マネジャーは、DAGの生き残ったノードに対し、さらなるステート遷
移の処理を停止し、それらのアプリケーションステート情報をお互いに同期し、同期され
たアプリケーションステート情報をそれぞれの格納位置に格納し、再開命令を待つように
指示し得る。いくつかの実施態様において、アプリケーションステートをローカルに保存
した後、DAGノードはそれぞれ、クリーンシャットダウン及び再始動を実行し、再始動
後に構成マネジャーに対し、自身がサービス対応可能であることを示す報告を行い得る。
構成マネジャーにより一時停止命令が発行される前に障害が発生したノードがサービス対
応可能であることを報告した場合、いくつかの実施形態において、構成マネジャーは、そ
のようなノードに対しそのアプリケーションステートを、アプリケーションステートが最
新であるとわかっている(例えば構成マネジャーにより)別のノードと同期するように指
示し得る。構成マネジャーは、十分な数のノードが(a)サービス対応可能となり、(b
)アプリケーションステートに関して最新になるまで待機し、(新しい可能性のある)D
AG構成を決定し、DAG構成のメンバーノードに対しDAG構成を示す再開メッセージ
を送信することでDAGを再開し得る。いくつかの実施形態において、このような制御さ
れ整合された一時停止/再始動戦略により、大規模障害イベントの後、このような戦略が
ない場合に可能であり得るアプリケーション回復と比べて、より迅速で信頼性の高いアプ
リケーション回復が可能となる。整合一時停止手法は、例えば複数の複製ノードからのア
プリケーションステート情報の高速並列バックアップ/スナップショットのためといった
、大規模障害に応じること以外の目的にも使用され得る。
前述の種類のDAGベースの複製ステートマシンは、様々な実施形態における様々な異
なるアプリケーションを管理するために使用され得る。いくつかの実施形態において、ロ
グサービスが実施され、当該ログサービスでは、1つまたは複数のデータストア(例えば
リレーショナルまたは非リレーショナルデータベース)が、複製DAGを使用して実施さ
れる持続的変化ログのインスタンスを介して、トランザクション管理に登録され得る。後
でさらに詳しく説明されるように、いくつかの実施形態において、楽観的並行処理制御機
構がこのようなログベーストランザクションマネジャーにより使用され得る。ログサービ
スのクライアントは、所定のトランザクション内で、1つまたは複数のソースデータスト
アに対し読み出し動作を行い、書き込み動作を行う(例えば読み出しの結果に基づいて)
1つまたは複数のデータストア位置を特定し得る。読み出し集合、書き込み集合、並行処
理制御要件、及び/またはトランザクションに対する論理制約の表現を含むトランザクシ
ョン要求記述子は、ログサービスの競合検出器(例えば対応複製DAGの受諾ノードに対
応付けられる競合検出論理)へ提出され得る。競合検出器は、前にコミットされたトラン
ザクションのレコードをトランザクション記述子のコンテンツと一緒に使用して、コミッ
トのためにトランザクション要求の受諾可能か否かを判定し得る。コミットのためにトラ
ンザクションが受諾されると、ログ用に確立されたDAGの複数の複製ノードにおいて、
対応コミットレコードの複製が開始され得る。従って、ログの所定レプリカに挿入される
レコードは各自、それぞれのアプリケーションステート遷移を表し得る。重複排除要件、
トランザクション間コミット順序付け要件等、いくつかの異なる論理制約は、異なる実施
形態において特定され、ログベーストランザクションマネジャーにより施行され得る。こ
のようなログベーストランザクション管理機構により、いくつかの実施形態において、例
えば基礎データストアは複数の書き込みを伴うトランザクションの原子性にネイティブに
対応し得ないにもかかわらず、所定のトランザクションの書き込み集合に複数の書き込み
位置が含まれる複数アイテムトランザクションまたは複数データベーストランザクション
に対する対応が可能となり得る。コミット済みトランザクションに対応する書き込みは、
少なくともいくつかの実施形態において、非同期的に関連データストアへ適用され得る。
例えばトランザクションがコミットされたレコードは、対応書き込みが対象データストア
に伝播される前のある時に、持続的変化ログに保存され得る。持続的変化ログは従って、
少なくともいくつかの実施形態においてアプリケーションステートの正式な情報源となり
、データストアは、当該ログがステート変更を記録した後に、アプリケーションステート
に追いつき得る。
複製DAGは、様々な実施形態において、複製データベースインスタンス、高スループ
ットデータストリーム管理、及び/または分散ロック管理のためにも使用され得る。いく
つかの実施形態において、複製DAGは、演算インスタンス等の仮想リソースに対するス
テート変更を管理するために、プロバイダネットワーク内で使用され得る。少なくともい
くつかの実施形態において、登録済みデータストア(書き込みの結果がデータストアのそ
れぞれの読み出しインターフェースを介して読み出し可能である)に対しコミット済みの
書き込みを伝播することに加えて、ログサービスも自身の個別のアクセスインターフェー
スを定義及び実施し得るため、これにより関心のあるクライアントは、持続的ログインス
タンスから直接、所定のクライアントアプリケーションのために格納されたレコードの少
なくとも一部を読み出すことが可能になる。
例示的システム環境
図1は、少なくともいくつかの実施形態による、アプリケーションステート変更を管理
するために複製ノードの動的DAG(有向非巡回グラフ)が確立された例示的システム環
境を示す。示されるように、システム100において、アプリケーション160のステー
ト遷移を管理するために確立された複製DAG140は、受諾ノード110、中間ノード
112、コミッタノード114の3つのノードを含む複製経路を備える。さらにDAG1
40は、描かれた実施形態において、必要があれば他のノードのうちのいずれかの責務を
引き継ぐことが可能な待機ノード130を含む。他の複製DAGには、他の組み合わせの
ノードが配置され得る。例えば、いくつかのアプリケーションには複数の中間ノードが使
用され得るが、他のアプリケーションには中間ノードは全く使われ得ない、あるいは待機
ノードは確立され得ない。DAG140の構成に対する変更は、後述のように、フォール
トトレラントDAG構成マネジャー(DCM)164により整合され得る。
受諾ノード110は、描かれた実施形態において、API(アプリケーションプログラ
ミングインターフェース)等の1つまたは複数のプログラム的インターフェースを介して
、アプリケーションステート遷移要求(STR)150を受信し得る。受諾ノード110
は、アプリケーション従属規則または論理を使用して、要求遷移を最終的コミットのため
に受諾し得る、あるいは要求を拒否し得る。遷移が受諾されると、例えば他の受諾された
遷移に対して当該遷移が受諾された順序を示す、シーケンス番号が受諾ノード110によ
り生成され得る。前述のように、いくつかの実施形態において、シーケンス番号は、受諾
された遷移ごとに増加するカウンタを含み、一方別の実施形態においては、構成マネジャ
ーにより提供される論理クロックまたはタイムスタンプ値が使用され得る。対応シーケン
ス番号を含むアプリケーションステートレコード(ASR)172Aの集合176Aは、
受諾ノードによりローカル持続的格納域に格納され得る。いくつかの実施形態において、
アプリケーションステートレコードは、遷移受諾レコードと遷移コミットレコードの両方
を含み得る(コミットレコードは、対応遷移がコミッタノードによりコミットされたこと
が受諾ノードに通知された後にのみ格納される)。別の実施形態においては、複製経路沿
いの少なくともいくつかのノードが受諾レコードのみを格納し得る。受諾を示すステート
遷移レコードを格納した後、受諾ノードは、承認を示すステート遷移メッセージ(STM
)152Aを、例示構成における中間ノード112といった複製経路沿いの自身の後続ノ
ードに送信し得る。中間ノードは、対応ASRの自身のコピー172Bをシーケンス番号
と共に、そのローカルASR集合176Bに格納し得る。中間ノードは、自身のSTM1
52Bを、現行複製経路沿いの自身の隣接ノードに、例えば描かれた実施形態におけるコ
ミッタノード114に、送信し得る。少なくともいくつかの実施態様において、STM1
52は、どのノードがASRのレプリカを既に格納済みかを示す開示を含み得る。例えば
メッセージ152Bは、受諾を示すアプリケーションステートレコードのそれぞれのレプ
リカがノード110、112にそれぞれ既に格納済みであることを、コミッタノードに示
し得る。
アプリケーションステートレコードの十分な数のレプリカが格納されたというコミッタ
ノードにおける判断に応じて(十分なレプリカの正確な数はアプリケーション160の構
成パラメータであり得る)、遷移がコミットされ得る。コミッタノードのASR集合17
6Cは、描かれた実施形態において、トランザクションコミットのレコードを含み得る(
承認の相対として)。従ってASR172Cは、単なる受諾ではなくコミットを示し得る
。少なくともいくつかの実施形態において、コミッタノード116は、遷移がコミットさ
れたことを示す開示または通知を、受諾ノード及び/または中間ノードへ送信し得る。別
の実施形態において、受諾及び/または中間ノードは、どの遷移がコミットされたかを特
定するためにコミッタノード116に対し要求を提出し(例えば定期的に)、それらのA
SR集合を適宜更新し得る。いくつかのアプリケーションに関して、明示的コミットは必
要とされ得ないため、コミットの開示は何も格納され得ず、よって経路沿いのそれぞれの
DAGノードは、受諾を示すそれぞれのアプリケーションステートレコードを単純に格納
し得る。描かれた実施形態において、コミット後STM154がコミッタノードから待機
ノード130へ送信され、これにより待機ノードはそのASR集合176Dを更新可能と
なるため(例えばコミットASR172Dを格納することで)、別のDAGノードを置き
換えるように待機ノードが有効化される場合には、そのアプリケーションステート情報が
コミッタノードのものと一致する。待機ノードが最新のコミット済みアプリケーションス
テートと常に同期しているという事実から、構成マネジャーは、いくつかの実施形態にお
いて他の3種類の役割のうちのいずれかに、例えば受諾ノード、中間ノード、またはコミ
ッタノードとして、待機ノードを迅速に有効化することが可能になり得る。
フォールトトレラントDAG構成マネジャー(DCM)164は、描かれた実施形態に
おいて必要に応じて、DAG構成またはDAGメンバーに対する変更を、構成デルタメッ
セージ166(例えばメッセージ166A、166B、166C、166D)の形でDA
Gノードに伝播する責務を担い得る。例えば、障害の結果等で所定のDAGノードがDA
G140を離脱する場合、DCM164により1つまたは複数の生き残ったノードに対し
、対応構成デルタメッセージ166が送信され得る。同様に、新たなノードがDAGに参
加する場合(例えば障害からの復旧後、またはアプリケーション160の耐久レベルを向
上させるために)、参加イベント、DAG内の参加ノードの位置、及び/または参加ノー
ドに与えられた役割(例えば受諾、中間、コミッタ、または待機)を示す対応構成デルタ
メッセージが、DCMによりDAGの1つまたは複数の現行メンバーノードに対し送信さ
れ得る。構成デルタメッセージ166は、お互いに関して非同期であり、アプリケーショ
ンステートの全体的複製に影響せずに、任意の順序でそれらの対象により受信され得る。
DAGの各ノードは、受信した構成デルタメッセージに基づいて、他のノードが持ち得る
構成見解174とは関係なく、DAG構成の自身の見解174を構築する責務を担い得る
。従って、例えば、それぞれのノード110、112、114、130にて受信される別
個の構成デルタメッセージの相対的順序及び/またはタイミングのため、いくつかの実施
形態において、構成見解174A、174B、174C、174Dのうちの1つまたは複
数は、少なくともある短い時間間隔において異なり得る。少なくともいくつかの実施形態
において、各DAGノードは、それぞれのローカル構成変更レポジトリにおいて受信され
る複数の構成デルタメッセージの表現またはコンテンツを格納し得る。描かれた実施形態
において、DCM164は、DAGノードによるアプリケーションステート処理において
全世界一時停止を施行し得ない。例えばこれにより、ノードは、構成デルタメッセージの
タイミングまたは基礎DAG構成変更に関係なく、アプリケーションステート遷移メッセ
ージを受信または処理し続けることが可能になり得る。DAGノードが構成デルタメッセ
ージに応じる方法の実施例は、図2a〜2hを参照して後述される。
図1は、各種類のノードを1つずつ含む単一線複製経路または「チェーン」を有するD
AGを示すが、少なくともいくつかの実施形態において複製DAGは、分岐経路及び/ま
たは各役割に対し複数のノードを含み得ることに留意されたい。すなわち、いくつかの受
諾、中間、コミッタ、及び/または待機ノードが同一DAG内に共存し、そしてDAGの
複製経路は、結合ノード(複数の先行ノードから遷移要求を受信するノード)、または分
割ノード(遷移要求を複数の後続ノードに送信するノード)を含み得る。受諾ノード11
0またはコミッタノード116のどちらかが要求されたステート遷移を拒否する場合(例
えば受諾ノードがアプリケーション特有受諾基準の集合を満たさないと判定したため、ま
たはコミッタノードが受諾済みステート遷移要求メッセージを受信する時までに受諾済み
遷移の十分な数のレプリカが作られていなかったため)、いくつかの実施形態において、
遷移を要求したクライアントに遷移がコミットされなかったことが通知され得る。クライ
アントはその後、遷移を再試行し得る(例えば別のステート遷移要求を提出することによ
り)、あるいは要求を完全に放棄することに決め得る。いくつかの実施態様において、中
間ノードもまた遷移要求をアボートすることが許され得る。
図2a〜2hは、少なくともいくつかの実施形態による、DAGのノードのうちの1つ
に障害が起こり得たという検出に応じて複製DAGにおいて行われ得る例示的一連動作を
示す。図2aは、3つのノード202A、202B、202Cを含むDAG構成の初期状
態を示す。ステート遷移要求(STR)150がノード202Aにて受信される。受諾済
みステート遷移レコードが、ノード202A(STRのローカル承認後)及びノード20
2B(ノード202Bが承認済みSTM211Aを受信後)にて複製され、202Cにて
(ノード202Cが承認済みSTM211Bを受信後)コミットされる。DCM164は
、ノード202Bに障害が発生した様子であることを示す正常性ステータス更新情報25
0を受信し得る。ノード202Bのステータスに関する正常性ステータス更新情報は、異
なる実施形態において、様々な情報源のうちのいずれかから、例えば他のノード(202
Aまたは202B)のうちの1つから、またはDAGの外部の正常性監視サービス(例え
ばDAGノードがインスタンス化されたプロバイダネットワークに確立された汎用リソー
ス正常性監視サービス)から、受信され得る。少なくとも一実施態様において、正常性ス
テータス更新情報は、DAGノードにハートビートメッセージを定期的に送信して、複数
の連続ハートビートメッセージに対し許容時間窓内に何も応答が受信されない場合には所
定ノードは非正常状態にあると判定する監視プロセス等、DMC164自身のサブコンポ
ーネントにより生成され得る。
描かれた実施形態において、DCM164は、正常性ステータス更新情報に基づいて、
ノード202BはDAGから削除されるべきであること、そして新たなノード202Dが
ノード202Cの後続ノードとして追加されるべきであることを決定し得る。新たなノー
ドには、例えばDAGの新コミッタノードとして有効ステータスに昇格された待機ノード
が含まれ得る。DAGの新構成(すなわちDAGは現時点で複製チェーン202A〜20
2C〜202Dを含むべきであること)を決定し、新構成の表現を持続的レポジトリに保
存した後、DCM164はノード202Dに対し、ノード202Cの後続ノードとしてD
AGに参加するよう命令241を発行し得る。少なくともいくつかの実施形態において、
202B等のノードのDAGからの削除は、必ずしも置き換えノードの即時追加を伴うと
は限らず(特に削除が行われた後に経路上に残り接続状態のままのDAGノードの数が、
ステートが複製中のアプリケーションにより必要となる最小ノード数を超える場合)、ノ
ード202Dの追加は、DCMがノード障害(または少なくとも見かけ上のノード障害)
に応じ得るやり方の1つとして単純に例示されることに留意されたい。図2bにおいて示
されるように、ノード202Bに実際障害は発生していなかった(すなわち202Bの障
害に関して正常性更新情報は誤っていた)という場合もあり得る。このような誤判定シナ
リオにおいて、ステート遷移メッセージは、202Aから202Bへ、そして202Bか
ら202Cへ送信され続け、これによりアプリケーションは、DCM164による削除判
定後少なくともしばらくの間、進行し続けることができる。
少なくともいくつかの実施形態において、202B等のノードはDAGから削除され、
削除されたノードの隣接後続ノード(例えば202C)がDAGに残る場合、削除された
ノードに以前割り当てられていた役割は、隣接後続ノードに委譲され得る。従って、コミ
ッタノードであり得たノード202Cは、ノード202Bの離脱に際し中間ノードとなり
、新たに有効化されたノード202Dは新コミッタノードに選定され得る。削除されたノ
ードが隣接後続ノードを有さない場合(例えば描かれた実施例においてノード202Bの
代わりにノード202Cが削除された場合)、いくつかの実施形態において、削除された
ノードに割り当てられていた役割が、新たに有効化された待機ノードに与えられ得る。別
の実施形態において、役割はこのような順序的/直鎖的方法で委譲され得ない。例えば構
成マネジャーは、削除されたノードと差向うノードの相対位置を考慮せずに、どの役割が
所定ノードに与えられるべきかを決定し得る。
ノード202BがDAGから削除されるべきと判定した後、描かれた実施形態において
、DCM164は、それぞれの非同期構成デルタメッセージ242A、242Bをノード
202A、202Cへ送信し得る。示されるように、それぞれのデルタメッセージは、2
02BがDAGを離脱し、202Dが参加したことを示し得る。描かれた実施形態におい
て、構成に関する2つの変更が単一の構成デルタメッセージ内に示されるが、別の実施形
態においては、202Bの削除と202Dの参加に関して個別の構成デルタメッセージが
送信され得る。描かれた実施形態において、構成デルタメッセージは、DAG構成に対す
る変更のみを示し、DAGの構成全体の表現を含み得ない。ノード202Aが構成デルタ
メッセージ242Aを受信するまで、あるいは202BはDAGから離脱したことを認識
するまで(例えばネットワーク接続の終了により)、ノード202Aからノード202B
に対しSTMは送られ続け得る。202Bに実際障害は発生していなかったというシナリ
オにおいて、ノード202Bは、DAGから削除されたことを認識する(例えば202A
または202Cが202Bと通信停止した場合)まで、ステート遷移要求を処理し、メッ
セージ211Bをノード202Cへ送信し続け得る。
構成デルタメッセージ242は、非同期メッセージ機構を使用して送信されるため、そ
れらの送信先に異なる時間に到着し得る。ノード202Cが構成デルタメッセージ242
Bを受信する前にノード202Aが構成デルタメッセージ242Aを受信する場合、図2
dに描かれるシナリオが達成され得る(DAGは少なくとも一時的に岐路を含む)。メッ
セージ242Aに応じて、ノード202Aは、構成変更の開示をローカル格納域に保存し
、その後いかなるメッセージもノード202Bに送信することを停止し得る。さらに、ノ
ード202Aは、自身の新後続ノードは202Cであると判断し、よってノード202C
とのネットワーク接続を確立し、新たなステート遷移メッセージ211Cをノード202
Cに送信することを開始し得る。描かれた実施形態において、202Bの削除を示すメッ
セージが残りのノードに届くとともに、DAGの様々なノードでステート遷移処理活動が
継続され得る。例えば、ノード202Bに障害が起こったと思われたが実際は正常に機能
し続けていたというシナリオにおいて、ノード202BがDAGから削除されたというこ
とをノード202Aが知らされた後でも、ノード202Aから送信過程にあった1つまた
は複数のステート遷移メッセージは、ノード202Bにて受信され得る。このような送信
過程メッセージを受信すると、ノード202Bは、メッセージ内に示されるステート遷移
情報をローカル格納域に複製し、別の同様のSTMをノード202Cへ送信しようと試み
得る。ノード202Cがノード202Bの削除をまだ知らない(または少なくともノード
202Bとの自身の接続をまだ閉じていない)場合、ノード202Cはノード202Bか
らのメッセージを受信し、処理し得る。これにより、構成マネジャーによりノード202
BはDAG構成から削除されたものの、アプリケーションは進行可能となる。
ノード202Aが構成デルタメッセージ242Aを受信する前にノード202Cが構成
デルタメッセージ242Bする場合、図2eに例示されるシナリオが達成され得る。メッ
セージ242Bを受信すると、ノード202Cは、ノード202Bから送信される新規メ
ッセージを受信することを停止し得る(例えばノード202Bとの自身の接続がまだ使用
可能である場合は、当該接続を終了することにより)。ノード202Cは、ノード202
AがDAG経路における自身の新たな隣接先行ノードであると理解すると、ノード202
Aへの接続を確立し得る。ノード202Cはまた、描かれた実施形態において、最大シー
ケンス番号HSN1を特定し(ノード202Cが既に受信した承認済みSTMのシーケン
ス番号の中から)、202Cが受信し損なった可能性のある全ての承認済みステート遷移
メッセージ(すなわちHSN1より大きいシーケンス番号を有する全ての承認済みSTM
)を再送するようにノード202Aへ要求260を送信し得る。さらに、ノード202C
はまた、自身の新後続ノード202Dへの接続を確立し、続く承認済みSTM211Dを
ノード202Dへ送信することを開始し得る。
202Aと202Cの両ノードがDAG構成変更について通知された後、図2fに例示
されるDAGの新たな複製経路(すなわち202A〜202C〜202D)が、新たに受
信されるステート遷移要求に使用され得る。構成デルタメッセージ242のタイミングの
ため、ノード202Aが構成デルタメッセージ242Aを受信する前に、ノード202A
はノード202Cから構成変更を知らされる場合もあり得ることに留意されたい。同様に
、いくつかの実施形態において、ノード202Cは、ノード202Aから(またはノード
202Dからでも)新構成について知らされ得る。従って、新構成に関する情報がDAG
のいずれかの所定ノードに到達し得る方法は複数あり、少なくともいくつかの実施形態に
おいて、構成デルタメッセージがそれらの全ての対象受信ノードに到達する前でも、DA
Gノードは新複製経路を部分的に使用開始し得る。
図2gに示されるように、ノード202Bは、DAGから削除された後(例えば実際の
障害により、または誤判定障害検出により)のある時点で、DCM164に対し自身はサ
ービス開始可能であることを任意で示し得る。例えば、実際の障害の場合、ノード202
Bは最終的に修復され再始動され、「サービス対応可能」メッセージ280を送信する前
に復旧動作のある集合を実行し得る。ネットワーク接続損失の場合、「サービス対応可能
」メッセージは、接続が再確立された後に送信され得る。これに応じて、描かれた実施形
態においてDCM164は、ノード202BをDAGの待機ノードとして追加し直すこと
を決定し得る。従って、図2hに示されるように、DCMは、参加コマンド282をノー
ド202Bへ送信し、新たな構成デルタメッセージ集合244A、244B、244Cを
ノード202A、202B、202Dへそれぞれ送信してノード202Bの追加をそれら
に通知し得る。図2a〜2hに例示される一連動作は実施例として提供されており、そし
てDAGノード及びDCMは、様々な実施形態においてノード202Bの見かけ上の障害
に応じて、図2a〜2hに例示される一連動作と異なる一連動作を実行し得ることに留意
されたい。例えば、いくつかの実施形態において、ノード202Cの後続ノードとしてD
AGに新たなノードは何も追加され得ない。また、いくつかの実施形態において、ノード
202Bは、サービス対応可能になった後に必ずしも同じDAGに再参加するとは限らず
、代わりに例えば、異なるDAGへ配置され得る、あるいは新たなDAGを構成する際使
用され得るノードのプールに保持され得る。
図2a〜2hにおいて障害検出がDAG構成変更を引き起こすように示されるが、通常
、様々な実施形態において、多数の異なる考察のうちのいずれかにより、DAG構成の修
正はもたらされ得る。例えば、アプリケーションオーナー(またはDCM)は、データ耐
久性を向上するために、または可用性の理由で、DAGに対しノードを追加することを決
定し得る。新たなノードの追加を示す構成デルタメッセージは、ステート遷移処理におい
て「全世界停止」中断を要求することなく、いくつかの実施形態において前述される削除
関連伝播と同様の非同期的方法で他のDAGノードに伝播され得る。DAGノードは、い
くつかの実施形態において、メンテナンス関連理由で、例えばソフトウェアのアップグレ
ードのため、ソフトウェアエラーのデバッグのため、またはハードウェア修正のために、
経路から外される必要があり得る。少なくとも一実施形態において、ノードのうちの1つ
または複数における作業負荷レベル(例えば毎秒処理されているステート遷移数)は閾値
レベルに達しており、現在使用されているものより性能の高い(または性能の低い)ハー
ドウェア/ソフトウェアスタックが使用されるべきであるという判定の結果、DAGの構
成は変更され得る。いくつかの実施形態において、DAG構成変更は、必ずしもノードを
追加または削除することなく、特定のDAGノードの位置または役割を変更することを伴
い得る。例えば、構成マネジャーは、コミッタの役割を前に中間ノードだったノードに転
嫁し、元コミッタノードを新構成における中間ノードに仕上げ得る。このような役割変更
は、例えば、負荷分散目的で、特にいくつかの異なるDAGのノードに対し同一ホストが
使用されているマルチテナント環境において、実施され得る(そして対応構成デルタメッ
セージが伝播され得る)。このようなマルチテナント環境は、さらに詳しく後述される。
ステート遷移レコードと構成デルタメッセージ
図3は、少なくともいくつかの実施形態による、動的複製DAGにて生成され得るアプ
リケーションステートレコード(ASR)とDAG構成デルタメッセージとの例示的コン
ポーネントを示す。前に示されたように、少なくともいくつかの実施形態において、それ
ぞれが承認済みまたはコミット済みステート遷移を表現するアプリケーションステートレ
コードのコピーは、DAGの複製経路沿いのいくつかのノードのそれぞれに格納され得る
。アプリケーションステートレコードは、本明細書においてステート遷移レコードとも称
され得る。示されるように、アプリケーションステートレコード320には、例えば、要
求されたステート遷移の承認が記録されているか否か、または承認済みステート遷移のコ
ミットが記録されているか否かといった遷移の種類302の開示が含まれ得る。いくつか
の実施形態において、前述のように、各DAGノードは承認及びコミットレコードの両方
を格納し、一方別の実施形態においては、1種類のステート遷移レコードのみが格納され
得る。例えば、1つのシナリオにおいて、承認レコードは非コミッタノードにて最初に複
製され、そして承認レコードは、トランザクションがコミッタノードにより最終的にコミ
ットされた後、コミットレコードに変更され得る。少なくとも一実施形態において、個別
遷移種類フィールド302は、ASR内にも、ASRの生成をもたらすメッセージ内にも
含まれ得ない。代わりに、遷移の種類はDAGノードにより、自身の現在の役割及び/ま
たはメッセージを送信した情報源DAGノードの役割に関するノードの知識に基づいて、
推測され得る。例えば、ステート遷移メッセージを受信する非コミッタノードは、メッセ
ージが承認済みステート遷移を表すことを推測し得る。
描かれた実施形態において、ステート遷移レコード320は、遷移データ304を含み
得る。遷移データコンポーネント304のコンテンツの特質は、ステートが管理されてい
るアプリケーションにより異なり得る。いくつかの事例において、例えば、ステート遷移
要求は、書き込みペイロード(書き込み予定の複数のバイトと、当該バイトが書き込まれ
るアドレス(複数可)とを示す)を含み、書き込みペイロードは遷移レコードに含まれ得
る。別のアプリケーションに関して、各ステート遷移は、アプリケーションクライアント
により発行された各自の命令を示し、命令の表現はASRに含まれ得る。ASR320は
、ステート遷移に対応するシーケンス番号306(論理スタンプとも考えられる)も含み
得る。シーケンス番号は、例えば、受諾ノードにてステート遷移要求が承認された時、ま
たはコミッタノードにてステート遷移がコミットされた時、生成され得る。少なくともい
くつかの実施形態において、DAGを使用して管理されているアプリケーションの現行ス
テートは、アプリケーションのある初期ステートから開始して、シーケンス番号が増加す
る順序で、コミット済みステートレコードの遷移データ(例えば書き込みペイロード、命
令等)を適用することにより決定され得る。いくつかの実施形態において、例えばどのD
AGノードが同一の遷移に関する各自のASRを既に格納したか、及び/またはこれらの
レコードが複製された順序を示す、遷移の複製履歴情報308もまた、ASRに含まれ得
る。このような複製履歴情報は、例えば、コミットのために十分な数のノードが所定のス
テート遷移を記録したことを確認するために、いくつかの実施態様においてコミッタノー
ドにより使用され得る。いくつかの実施形態において、ASRメッセージは、対応ステー
ト遷移要求が受信された受諾ノードの識別を示し得るが、複製経路沿いの他のノードに関
する情報は含まなくてもよい。少なくとも一実施態様において、コミッタノードは、承認
済みステート遷移をコミットする前に、十分な数のノードがステート遷移レコードを複製
したことを確認する必要はなくてよい。
DAG構成デルタメッセージ370は、描かれた実施形態において、参加または離脱す
るノード(複数可)の識別子352と、実施されている変更の種類354(例えば参加、
あるいは離脱)とを示し得る。いくつかの実施態様において、参加(または離脱)ノード
に関する役割情報356が、任意で構成デルタメッセージに含まれ得る。少なくともいく
つかの実施形態において、アプリケーションステートシーケンス番号がアプリケーション
ステート遷移に対応付けられるように、DAG構成変更シーケンス番号358は、構成デ
ルタメッセージに含まれ得る。このようなシーケンス番号は、例えば、構成デルタメッセ
ージの受信ノードにより、当該受信ノードが全ての前の構成変更を受信したか否かを判定
するために使用され得る。いくつかの構成変更が欠損している場合(例えばネットワーク
パケットが抜け落ちたため)、受信ノードは、欠損している構成デルタメッセージを再送
するようにDCMに要求を送信し得る。構成変更シーケンス番号358は、様々な実施形
態において、DCMにおけるカウンタまたは論理タイムスタンプとして実施され得る。D
CMが複数のノードを有するクラスタを備えるいくつかの実施態様において、構成変更シ
ーケンス番号358の情報源として、クラスタマネジャーにより維持されるグローバル論
理タイムスタンプが使用され得る。
プロバイダネットワーク環境における複製DAG展開
図4は、少なくともいくつかの実施形態による、プロバイダネットワークの複数の可用
性コンテナにわたりメンバーノードが分散された例示的複製DAGを示す。インターネッ
ト及び/または他のネットワークを介してアクセス可能な1つまたは複数のサービス(様
々な種類のマルチテナント及び/または単一テナントのクラウドベースコンピューティン
グまたは格納サービス等)を、分散集合のクライアントに提供するために、企業または公
的機関等の事業体が構築したネットワークは、本明細書においてプロバイダネットワーク
と称され得る。少なくともいくつかのプロバイダネットワークは、「パブリッククラウド
」環境とも称され得る。所定のプロバイダネットワークには、プロバイダにより提供され
るインフラストラクチャ及びサービスを実装、設定、及び配給するために必要となる物理
及び/または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集合とい
った様々なリソースプールを提供する多数のデータセンタが含まれ得る。大きなプロバイ
ダネットワーク内で、いくつかのデータセンタは他とは異なる市、州、または国に配置さ
れ、そしていくつかの実施形態において、所定アプリケーションに割り当てられたリソー
スは、所望されるレベルの可用性、耐障害性、性能を達成するために、このようないくつ
かの場所に分散され得る。
いくつかの実施形態において、プロバイダネットワークは、複数の地理的領域に編制さ
れ、そして各領域は、「可用性ゾーン」とも称され得る1つまたは複数の可用性コンテナ
を含み得る。次に可用性コンテナは、所定の可用性コンテナ内のリソースが他の可用性コ
ンテナにおける障害から隔離される(例えば電力関連設備、冷却設備、及び/または物理
的安全コンポーネント等の独立インフラストラクチャコンポーネントを有する)ように設
計された1つまたは複数の別個の物理的建物またはデータセンタを含み得る。1つの可用
性コンテナにおける障害がその他の可用性コンテナにおいて障害もたらすことは予期され
得ないため、所定の物理ホストまたは仮想化サーバの可用性プロファイルは、別の可用性
コンテナにおける他のホストまたはサーバの可用性プロファイルとは無関係であるように
企図される。
図4に示されるように、いくつかの実施形態において、複製DAGの1つまたは複数の
ノードは、DAGの他のノードの可用性コンテナと異なる可用性コンテナ内にインスタン
ス化され得る。描かれた実施形態において、プロバイダネットワーク402は、3つの可
用性コンテナ466A、466B、466Cを含み、各可用性コンテナは複数のノードホ
スト410を備える。例えば、可用性コンテナ466Aのノードホスト410Aは、DA
Gノード422Aと、ローカル持続的格納域(例えば1つまたは複数のディスクベースデ
バイス)430Aと、DAGのクライアントと通信するためのフロントエンドとして使用
され得るプロキシ412Aとを備える。同様に、可用性コンテナ466B内のノードホス
ト410Bは、DAGノード422Bと、ローカル持続的格納域430Bと、プロキシ4
12Bとを備え、可用性コンテナ466C内のノードホスト410Cは、DAGノード4
22Cと、ローカル持続的格納域430Cと、プロキシ412Cとを備える。描かれた実
施形態において、DAGノード422(及び/またはプロキシ412)はそれぞれ、1つ
または複数のプロセスの集合等、1つまたは複数の実行スレッドを含み得る。ローカル持
続的格納デバイス430は、描かれた実施形態において、複製経路491沿いにアプリケ
ーションステート情報のローカルレプリカ(及び/または複製経路491のDAGノード
422にて受信されるDAG構成デルタメッセージコンテンツ)を格納するのに使用され
得る。
図4の実施形態において描かれるDAGのDCM自体は、複数の可用性コンテナにわた
って分散された複数のノードを備える。示されるように、同意ベースのDCMクラスタ4
90が使用され、これには、可用性コンテナ466Aに配置されたDCMノード472A
とDCM格納域475A、並びに可用性コンテナ466Bに配置されたDCMノード47
2BとDCM格納域475Bが含まれる。描かれたDCMは従って、少なくとも障害が可
用性コンテナの境界を越えないという点では、フォールトトレラントと考えられ得る。こ
のようなフォールトトレラントDCMのノードは、例えばDCMにより管理されているD
AGのメンバーノードと対照的に、本明細書において「構成ノード」と称され得る。DA
G構成に対する変更(例えばノードの削除、追加、または役割変更を含む)は、DCMノ
ード472間の同意ベースプロトコルを使用して承認され、そしてDAG構成の表現は、
対応構成デルタメッセージがDAGノード422に送信される前に、複数のDCMノード
により持続的格納域に格納される必要があり得る。DCM及び/または所定の複製DAG
に使用される可用性コンテナの数は、異なる実施形態において、かつ、例えばアプリケー
ションの可用性要件またはデータ耐久性要件に応じて、異なるアプリケーションにより、
変わり得る。いくつかの実施形態において、複製DAGは、プロバイダネットワークにて
実施される他のサービスのリソースの構成を管理するために使用され得る。例えば、一実
施形態において、仮想化コンピューティングサービスにより使用される演算インスタンス
(仮想マシン)またはインスタンスホスト(物理ホスト)のステートに対する変更は、複
製DAGを使用して管理され得る。
図5は、少なくともいくつかの実施形態による、複数の複製DAGのノードがマルチテ
ナント様式で単一のホストに実装され得る例示的構成を示す。示されるように、3つの複
製DAG555A、555B、555Cのノードは、4つのDAGノードホスト510A
、510B、510C、510Dに分散される。一般に、ノードホストはそのリソース容
量において異なり得る。例えば、あるホストのコンピューティング、格納、ネットワーク
、及び/またはメモリリソースは、他のホストのものと異なり得る。例えば、ノードホス
ト510BはDAG情報に使用可能な2つの格納デバイス530B、530Cを有し、ノ
ードホスト510Dは2つの格納デバイス530E、530Fを有し、一方ノードホスト
510Aと510Cは1つの格納デバイス(530Aと530Dをそれぞれ)有する。
ホスト510Aは、DAG555Aの受諾ノード522Aと、DAG555Cの中間ノ
ード522Nとを備える。ホスト510Bは、DAG555Aの中間ノード522Bと、
DAG555Bのコミッタノード522Kと、DAG555Cの中間ノード522Oとを
備える。DAG555Aのコミッタノード522Cと、DAG555Cのコミッタノード
522Pは、ホスト510Cに実装され得る。最後に、DAG555Aの待機ノード52
2Cと、DAG555Bの受諾ノード522Jと、DAG555Cの受諾ノード522M
とが、ホスト510Dにてインスタンス化され得る。従って、一般に、所定のホストはN
個の異なるDAGのノードに使用され、各DAGはM個の異なるホストを使用し、M及び
Nは、少なくともいくつかの実施形態において、設定可能なパラメータであり得る。それ
ぞれのアプリケーションオーナーのために確立されたいくつかのDAGのノードは、少な
くともいくつかの実施形態において、マルチテナント様式で同一のホストに実装され得る
。例えば、特定のアプリケーションオーナーにとって、そのアプリケーションのステート
管理に使用されているリソースが、他のアプリケーションのステートの管理にも使用され
ていることは明らかではない場合がある。いくつかのプロバイダネットワーク環境におい
て、所定のアプリケーションの複製DAGの所定のノードに使用する特定のホストを選択
する配置サービスが実施され得る。異なる実施形態において、ステートが管理されている
アプリケーションの性能要件、候補ホストの利用可能なリソース容量、負荷分散要求、価
格設定約因等、様々な要素の組み合わせに基づいて、ノードホストは選択され得る。少な
くともいくつかの実施態様において、ホストごとに複数のDAGノードをインスタンス化
することは、単一のDAGノードのみがインスタンス化された場合に達成され得るホスト
の全体リソース使用レベルと比べて、ホストの全体リソース使用レベルを向上させるのに
役に立ち得る。例えば、特にDAGノードに使用される論理の大部分が単一スレッドであ
る実施形態において、マルチテナントシナリオでは、単一テナントシナリオよりも多いマ
ルチコアホストのプロセッサコアが同時に使用可能であり、これによりホストの平均CP
U使用率は向上する。
動的DAGベースのステート複製を実施する方法
前述のように、いくつかの実施形態において、複製DAGの所定ノードは、所定の時点
にいくつかの役割のうちの1つが与えられ得る(例えば受諾、中間、コミッタ、または待
機)。図6は、少なくともいくつかの実施形態による、ステート遷移要求(STR)の受
信に応じて複製DAGの受諾ノードで行われ得る動作態様を示すフロー図である。構成要
素601に示されるように、受諾ノードは、アプリケーションのSTRを含むメッセージ
を、例えばステート複製サービスのクライアントから受信し得る。STRは、アプリケー
ションの特質に部分的により、異なる実施形態において様々な構成要素を含み得る。例え
ば、さらに詳しく後述されるようにいくつかの実施形態において、DAGは、1つまたは
複数のデータストアに対するトランザクションの楽観的並行処理制御に使用され、そして
STRは、前にコミットされたトランザクションとの競合を検出するために使用可能な読
み出し集合及び書き込み集合等のデータを含み得る。複製DAGを使用してステート遷移
が管理される各アプリケーションは、要求されたステート遷移に対する自身の受諾基準集
合を有し、そして少なくともいくつかの事例において、遷移が受諾されるべきか拒否され
るべきかを判定するために、STRのコンテンツが使用され得る。いくつかの実施態様に
おいて、要求されたステート遷移を受諾/拒否するために、動作条件が同様または代わり
に、使用され得る。例えば受諾ノードまたはDAGの他のノードの作業負荷レベルが閾値
以上の場合、ステート遷移は拒否され得る。遷移が受諾基準を満たす場合(構成要素60
4にて検出)、受諾STRに対する新たな承認シーケンス番号が、例えばカウンタ値を増
加させることで、またはある他の単調増加論理タイムスタンプ値を取得することで、生成
され得る(構成要素607)。遷移が承認されたことを示すレコードは、シーケンス番号
と一緒にローカル格納域に格納され得る(構成要素610)。いくつかのアプリケーショ
ンに関して、遷移要求は複製するデータ集合(書き込みペイロード等)を含み得る。受諾
ノードは当該データ集合をローカル格納域に同様に格納し得る。一実施態様において、受
諾ノードは、プロバイダネットワークの特定ホストで実行される1つまたは複数のプロセ
スを含み、そして遷移の承認のレコード、シーケンス番号、及び遷移のデータ集合は全て
、当該特定ホストの持続的ディスクベース格納デバイスに格納され得る。いくつかの実施
形態において、遷移のデータ、遷移が承認されたという開示、及びシーケンス番号は全て
結合され、ログに挿入(または添付)されるログエントリ等、ローカル格納域に格納され
る単一オブジェクトに形成され得る。別の実施形態において、遷移のデータ集合は、遷移
の承認を示すレコードとは別に格納され得る。
ステート遷移のレコードが無事格納された後、承認を示すステート遷移メッセージは、
コミッタノードに向けてDAGの複製経路沿いの隣接ノードへ送信され得る(構成要素6
13)。いくつかの事例において、DAGのトポロジーに応じて、複数のこのようなメッ
セージは、複製経路沿いのあるノードから各隣接ノードへ送信され得る。前述のように、
DAGの各ノードは、DAG構成に関する自身の見解を有し、これは所定の時点で必ずし
も他のノードの見解と一致するとは限らない。描かれた実施形態において、受諾ノードは
その受諾済みステート遷移メッセージを、DAGの構成の自身の現在の見解に示される隣
接ノード(複数可)へ、たとえその現在の見解がDAGのDCMの見方と比べると(また
は1つまたは複数の他のDAGノードの見方と比べると)図らずも古すぎるまたは誤りが
あるとしても、送信し得る。メッセージ(複数可)の送信が完了すると、ステート遷移要
求の処理は、受諾ノードにおいては完了したと見なされ得る(構成要素619)。要求さ
れた遷移がアプリケーションの受諾基準を満たさない場合(同様に構成要素604にて検
出)、遷移は拒否され得る(構成要素616)。いくつかの実施態様において、拒否を示
す通知または応答が、要求者に提供され得る。
図7は、少なくともいくつかの実施形態による、承認済みステート遷移メッセージの受
信に応じて複製DAGの中間ノードで行われ得る動作態様を示すフロー図である。例えば
受諾ノードから、または別の中間ノードから、このようなメッセージSTM1が受信され
た後(構成要素701)、いくつかの実施形態において、中間ノードは、より小さいシー
ケンス番号のステート遷移メッセージが欠損しているか否か(例えばSTM1がSN1の
シーケンス番号を有する場合、SN1より小さいシーケンス番号を有する未受信のSTM
が1つまたは複数存在するか否か)を判定し得る。描かれた実施形態において、このよう
な欠損ステート遷移メッセージの証拠が見つかると(構成要素704)、中間ノードは、
現在わかっている複製経路沿いの隣接先行ノードに対し、欠損STM(複数可)の再送要
求を任意で提出し得る(構成要素707)。いくつかの実施態様において、中間ノードは
、その再送要求に対する応答を受信するのを待ってから、STM1に対応する承認済みス
テート遷移のレコードをローカル格納域に格納し得る。STM1に対する承認レコードは
、例えば承認シーケンス番号と、遷移に対応付けられた任意のデータ集合(書き込みペイ
ロード等)と一緒に格納され得る(構成要素710)。ステート遷移メッセージ(既に受
信されたメッセージとコンテンツが同様であり得る、あるいは既に受信されたメッセージ
とコンテンツが同一であり得る)はその後、コミッタノードに向けて現在わかっている複
製経路(複数可)上の各隣接ノードに対し送信され得る(構成要素713)。ステート遷
移の承認履歴がステート遷移メッセージに含まれるいくつかの実施態様において、中間ノ
ードは、その(中間ノードの)識別子を、発信するステート遷移メッセージ内に示される
承認者リストに追加し得る。
いくつかの実施形態において、STM1の承認レコードをローカル格納域に保存する前
に欠損シーケンス番号を確認する代わりに、異なる手法が取られ得る。例えば、中間ノー
ドは、承認レコードをローカル格納域に格納した後、及び/または対応STMをコミッタ
ノードに向けて送信した後、欠損シーケンス番号を確認し得る。
一実施態様において、所定の接続内でメッセージの順序正しい配信を保証する、TCP
(伝送制御プロトコル)等のネットワークプロトコルが、非受諾ノードにてSTMを受信
するためのプルモデルと組み合わせて使用され得る。このような実施態様において、中間
ノード、コミッタノード、または待機ノードが複製経路沿いの自身の隣接先行ノードとの
ネットワーク接続を維持する限り、ネットワークプロトコルに依拠して、どのメッセージ
も確実に失わないようにし得る。このような実施態様において、所定DAGノードN1に
て隣接先行ノードP1に対する接続を失った場合、N1は、P1に対する(またはP1が
もはやDAGの一部ではないことを示す構成デルタメッセージが受信された場合は異なる
先行ノードに対する)新たな接続を確立し、前に受信済みの最大シーケンス番号より大き
いシーケンス番号を有する全てのSTMを送信するようにP1に要求する責務を担い得る
図8は、少なくともいくつかの実施形態による、承認済みステート遷移メッセージの受
信に応じて複製DAGのコミッタノードで行われ得る動作態様を示すフロー図である。例
えば中間ノードから、または受諾ノードから、承認済みステート遷移メッセージを受信す
ると(構成要素801)、コミッタノードは、ステート遷移がアプリケーションのコミッ
ト基準を満たすか否かを判定し得る。いくつかの実施形態において、コミッタノードは、
STMのコンテンツ(承認履歴フィールド等)から、これまで保存されたアプリケーショ
ンステートレコードのレプリカの数を特定可能であり、そしてレプリカの数が閾値を超え
る場合には、遷移がコミット可能であると判断され得る。レプリカカウント閾値は、アプ
リケーションに基づいて異なり得る。例えば、いくつかのアプリケーションに関しては、
受諾ノードに単一のレプリカで十分であり得る。別の実施形態において、コミッタノード
はまた、遷移をコミットする前に、コミッタノードが現行のSTMのシーケンス番号より
小さいシーケンス番号を有する全てのSTMを既に受信したか否か等、他の要素を考慮す
る必要があり得る。一実施形態において、例えば、コミッタノードは、現行遷移をコミッ
トする前に、自身が全てのこのような前のSTMを受信し処理するまで待機する必要があ
り得る。
コミット基準(アプリケーションにより異なり得る)が満たされた場合(構成要素80
4にて検出)、コミッタノードはコミットレコードを、ローカル格納域における自身のア
プリケーションステートレコードの集合の中に、例えばシーケンス番号及び遷移データ集
合(もしあれば)と一緒に格納し得る(構成要素807)。いくつかの実施態様において
、コミット基準はデフォルトで、受諾ノードで既に検証された受諾基準に設定され得る。
すなわち1度ステート遷移が受諾ノードで承認されると、コミッタノードは、いずれの追
加条件も検証する必要なしに、受信したSTM内に示されるステート遷移をコミットし得
る。いくつかの実施形態において、STM内に示される承認シーケンス番号のコピーが、
コミットシーケンス番号として格納され得る。いくつかの承認済み遷移はコミットされ得
ないため、少なくとも一実施形態において、承認に使用されるシーケンス番号の集合とは
異なるシーケンス番号の集合がコミットに使用され得る(例えば一連のコミットシーケン
ス番号にいかなる欠落もないように)。待機ノードがDAGに設定される場合、コミッタ
ノードから1つまたは複数のこのような待機ノードに対し、コミット後STMが送られ得
る。少なくともいくつかの実施形態において、遷移がコミットされた後、DAGの1つま
たは複数の他のノードがそれらのアプリケーションステート情報を更新できるように、及
び/または遷移がコミットされたことを示す応答をステート遷移の要求クライアントに対
し送信するために、コミットの通知がDAGの1つまたは複数の他のノードへ提供され得
る(構成要素810)。
欠損STMがコミット基準に関した処理の一環として取り扱われないいくつかの実施形
態において、コミッタノードは、欠損STMに関して図7において示される行動と同様の
行動を取り得る。従って、例えば、コミッタノードが1つまたは複数のSTM(受信した
STMのシーケンス番号より小さいシーケンス番号を有するSTM)が欠損していると判
定した場合(構成要素813)、欠損STMの再送要求が隣接先行ノード(複数可)へ送
信され(構成要素816)、受信したSTMの処理は完了する(構成要素822)。コミ
ット基準が満たされない場合、コミッタノードはステート遷移をアボートし得る(構成要
素819)。いくつかの実施形態において、アボート通知が、DAGの1つまたは複数の
他のノードへ、及び/またはステート遷移を要求したクライアントへ送信され得る。いく
つかの実施態様において、前述のように、ステート遷移が受諾ノードにて承認された場合
、複製DAGは、複製経路の1つまたは複数のノード(受諾ノード自体も含む)に障害が
起こったとしても、(最終的に)ステート遷移をコミットする責務を担い得る。ステート
遷移のアボートは、いくつかのこのような実施態様において、他のDAGノードからの遷
移の承認レコードの削除(または承認レコードが偶然格納されたノードのDAGからの実
際の削除)等、比較的重い変更を要し得る。図11a〜図14に関してさらに詳しく後述
されるように、対応ステート遷移情報が所望数のDAGノードに複製されることなくST
Mがコミッタノードに届くシナリオを回避するために、いくつかの実施形態において、先
制的整合DAG一時停止技術が使用され得る。
図9は、少なくともいくつかの実施形態による、複製DAGの構成マネジャー(DCM
)で行われ得る動作態様を示すフロー図である。構成要素901に示されるように、DA
Gにおける構成変更を潜在的に引き起こし得るイベントは、構成マネジャーにより検出さ
れ得る。このようなイベントは、「ノード障害が検出された」等のメッセージ(例えばD
AGノードから、またはプロバイダネットワークの正常性管理コンポーネントから)、ま
たは「サービス対応可能」等のメッセージ(例えば障害後に再始動したDAGノードから
)を受信することを含み得る。いくつかの実施形態において、構成マネジャー自体は、様
々なDAGノードの正常性ステータスを監視する責務を担い、そしてトリガーイベントは
、構成マネジャーにより検出される、ノードのうちの1つが複数のハートビートメッセー
ジまたは他の正常性確認に対し適時に応答しなかったことであり得る。少なくともいくつ
かの実施形態において、DAGノードは、いかなる見かけ上のノード障害も(例えば接続
が突然終了した場合、または閾値より長い時間、隣接ノードから全くメッセージが受信さ
れない場合)、DCMへ報告する責務を担い得る。DAGノードはまた、いくつかの実施
形態において、DAG構成変更をもたらし得る差し迫った変更(メンテナンスのためにノ
ードが経路から外れる予定である場合等)を、DCMに通知する責務も担い得る。DCM
は、描かれた実施形態において、示された構成変更(例えば障害が発生したノードの削除
、または新たなノードの参加)を有効化するか否かを、例えばDCMクラスタの複数のノ
ード間で実施され得る同意プロトコルに基づいて、判定し得る(構成要素904)。例え
ば、いくつかの実施態様において、DAGノードに障害が発生したという1つのDCMノ
ードによる判定は、DAGノードが構成から削除される前に、クラスタの1つまたは複数
の他のノードにおいて確認される必要があり得る(例えばDAGノードから受信されるハ
ートビート応答を他のDCMノードにて再検討することにより)。別の実施態様において
、可能性のある構成変更を適用するか否かに関する判定は、同意ベースプロトコルを使用
せずに行われ得る。DAG構成変更に対応付けられたシーケンス番号または論理タイムス
タンプは、いくつかの実施形態において、例えばDAGの他のノードに送信される構成デ
ルタメッセージに含めるために決定または生成され、そのため構成変更は、DAGノード
にて正しい順序で処理され得る。
構成変更がどのように承認されたかに関係なく、いくつかの実施形態において、変更が
完了したとみなされる前に、構成変更の表現は、DCMの複数の格納位置に複製される必
要があり得る(構成要素907)。構成変更に関する情報を複数の位置に保存することは
、DCMがDAG構成情報の正式な情報源として機能する実施形態において、DCMの機
能の重要な態様であり得る。少なくともいくつかの実施態様において、構成に対する変更
のみ(例えば構成全体ではなく)が複製され得る。構成変更情報が保存された後、DCM
から対応構成デルタメッセージ(構成に対し実施したばかりの変更を示し、必ずしもDA
Gの構成全体を示さない)を送る送信先DAGノードの集合が特定され得る(構成要素9
10)。いくつかの実施形態において、全DAGメンバー(構成デルタメッセージ内に示
される構成変更の一環としてDAGから削除されるノードも潜在的に含む)は、構成デル
タメッセージの送信先として選択され得る。一実施形態においては、現行のDAGメンバ
ーとみなされるノードのみが選択され得る。例えば、ノードが削除される、またはノード
に障害が起こったと思われる場合には、当該ノードに対し構成デルタメッセージは送信さ
れ得ない。別の実施形態においては、メンバーのある部分集合が送信先として選択され、
そしてその部分集合は、残りのノードに対し構成変更を伝播する責務を担い得る。メンバ
ーの部分集合が送信先として選択される実施形態において、DCMは、いずれかの所定の
時点でどの変更がどのメンバーに伝播されたか記録を保持する必要があり得る。送信先と
なるDAGノードの集合が特定された後、それらに対しそれぞれの構成デルタメッセージ
が、お互いに非同期的に、そしてステート遷移メッセージ処理またはステート遷移要求処
理におけるいかなる中断も要求することなく、送信され得る(構成要素913)。少なく
ともいくつかの実施形態において、構成デルタメッセージは、構成変更に対応付けられた
構成シーケンス番号を含み得る。いくつかの実施態様において、複合構成デルタメッセー
ジは、2つ以上の変更(例えば障害ノードの削除と交代ノードの参加)を示し得る。
図10は、少なくともいくつかの実施形態による、構成マネジャーからの構成デルタメ
ッセージの受信に応じて複製DAGのメンバーノードで行われ得る動作態様を示すフロー
図である。DCMから構成変更シーケンス番号を含むような構成デルタメッセージを受信
すると(構成要素1001)、受信DAGノードは、描かれた実施形態において、例えば
新たに受信したシーケンス番号を前に受信済みの最大シーケンス番号と比較することで、
全ての前の構成デルタメッセージを自身が受信したか否かを判定し得る。受信ノードが、
1つまたは複数の構成デルタメッセージをまだ受信していないと判定すると(構成要素1
004)、受信ノードは、構成更新要求をDCMに送信し得る(構成要素1007)。こ
のような更新要求により、例えば、DCMは欠損構成デルタメッセージ(複数可)を再送
する、またはDAGの現行の構成全体が示される別の種類のメッセージが送信される。
欠損構成デルタメッセージが検出されない場合(同様に構成要素1004の対応動作に
おいて)、受信ノードは、受信された構成変更情報を、ローカル格納域内の構成変更レポ
ジトリに格納し得る。レポジトリに蓄積されるメッセージは、DAG構成に関する受信ノ
ードの見解を更新するのに使用され得る(構成要素1010)。DAG構成のローカル見
解を更新することは、例えば、先々の送信及び受信ステート遷移メッセージに使用する複
製経路(複数可)の1つまたは複数のDAGノード及び/または辺を特定することを含み
得る。前述のように、メッセージ配信の非同期的特質のため、及びネットワークの異なる
箇所において異なる遅延が発生し得るため、構成デルタメッセージが1つのDAGノード
にて取得される順序は、同じ構成デルタメッセージ集合が別のノードにて受信される順序
とは異なり得る。従って、所定の時点で2つの異なるノードにて特定される複製経路は、
お互いに異なり得る。描かれた実施形態において、受信ノードは、複製経路上の自身の隣
接先行ノードが変更したら、もしくは自身の隣接後続ノードが変更したら、さらなる行動
を取り得る。隣接後続ノードも隣接先行ノードも変更していない場合、いくつかの実施形
態において、構成デルタメッセージの処理は、構成変更情報が受信ノードのローカル格納
域に格納された後に終了し得る(構成要素1027)。
DAGのノードCに関して隣接先行ノードが変更されるシナリオの実施例として、A〜
B〜CからA〜Cへの複製経路の部分的変更がある。更新された構成が受信ノードの隣接
先行ノードの変更を伴い、かつ新たな隣接先行ノードからまだ直接メッセージが受信され
ていない場合(構成要素1013にて検出)、受信ノード(現実施例においてノードC)
は、新隣接先行ノード(現実施例においてノードA)への接続を確立し得る。さらに、少
なくともいくつかの実施形態において、受信ノード(例えばノードC)はまた、受信ノー
ドがごく最近受信したシーケンス番号より大きいシーケンス番号を有するSTMの再送要
求を、新隣接先行ノード(例えばノードA)に送信し得る(構成要素1017)。ノード
Cに後続ノードが存在する場合、ノードCは、要求した再送をノードAから受信するのを
待ちながら、そのような後続ノードに対しいずれの承認待ちステート遷移メッセージも送
信し続け得る。
受信ノードの隣接後続ノードが変更したことを構成デルタメッセージが示し(例えばノ
ードBがDAG離脱したことを示す、前述と同じ実施例の構成デルタメッセージをノード
Aが受信し)、かつ新隣接後続ノードから何もメッセージが受信されていない場合(構成
要素1021)、受信ノードは新後続ノードへの接続を確立し得る。前の実施例において
、ノードAは、その隣接後続ノードであるノードCへの接続を確立し得る。ステート遷移
メッセージは、引き続き新隣接後続ノードへ転送され得る(構成要素1024)。
複製DAGノードの整合一時停止
大多数のアプリケーションの略同時機能停止を生じ得る大規模な障害イベントは、プロ
バイダネットワークのオペレータにとって重大な課題である。長期間の機能停止の影響を
受けるアプリケーションの顧客は、プロバイダネットワークがクリティカルアプリケーシ
ョンに必要なレベルのサービスを提供する能力を信用できなくなり得る。知的インフラス
トラクチャ設計により、またインフラストラクチャの高可用性特性を利用し得るアプリケ
ーションアーキテクチャを実装することにより、大規模な障害イベントの確率は低減され
得るが、大規模障害を完全に取り除くことは不可能であり得る。従って、複数のリソース
に影響する障害から分散アプリケーションがより速くクリーンに回復することを可能にし
得る技術が、少なくともいくつかの実施形態において開発され得る。分散アプリケーショ
ンステート管理に前述の種類の複製DAGが採用されるいくつかの環境において、分散障
害からのより効果的かつ効率的な復旧を支援するために、整合一時停止プロトコルが使用
され得る。一実施形態において、例えば、障害シナリオの検出に応じて、DAGの複数の
ノードは、それらの通常アプリケーションステート遷移処理動作(例えばステート遷移要
求メッセージの受信、アプリケーションステート情報のローカルコピーの格納、及びそれ
らの複製経路(複数可)沿ったステート遷移要求メッセージの送信)の実行を停止するよ
うに、構成マネジャーにより命じられ得る。それらの動作を一時停止した後、少なくとも
いくつかの実施形態において、ノードはそれらのローカルアプリケーションステートレコ
ードを他のDAGノードと同期させ、クリーンシャットダウン及び再始動を行い得る。ノ
ードの再始動後、ノードは、自身がサービス再開可能であることを構成マネジャーに折り
返し報告し、構成マネジャーによるDAGの再開を待機し得る。
図11a〜11hは、少なくともいくつかの実施形態による、このような整合一時停止
手続き中に複製DAGで行われ得る例示的一連動作を集合的に示す。例示的DAGにおけ
る各ノードは、それぞれのコミットレコード集合を格納し、各コミットレコードは対応コ
ミットシーケンス番号(CSN)を含む(または例えばポインタにより示す)。ローカル
コミットレコード集合は従って、ノードの視点から、DAGを使用して管理されているア
プリケーションのステートを表し得る。承認済み(しかしまだコミットされていない)ス
テート遷移のレコードも、前述のように、一部または全てのノードにて保持され得る。D
AG構成変更に関してDAGノードを更新し続けるために前述のようにDCMが構成デル
タメッセージを送信する動的複製DAGとの関連で、整合一時停止技術が本明細書におい
て説明されるが、いくつかの実施形態において、同様の手法が他のステート複製技術にも
採用され得ることに留意されたい。例えば、整合一時停止技術は、全てのノードが同期的
に更新される世界停止再構成間隔を使用して複製ノードのグループに対する構成変更が実
施される環境においても使用され、この場合、全てのノードが新構成に関して認識させら
れた後にのみ複製グループは作動可能になる。従って、動的複製DAGは、整合一時停止
技術が異なる実施形態において実施され得る複数ノードステート複製グループ(SRG)
の一例を表し得るにすぎない。少なくともいくつかのこのようなSRGは、前述のDCM
に類似した自身の構成マネジャーを有し、コミッタノードとして指定されたいくつかのノ
ードと、非コミッタノードとして指定された他のノードとを有し得る。
5つのノード1102A、1102B、1102C、1102D、1102Eを備える
複製DAGが、DCM1180と一緒に図11aに示される。描かれた実施例において、
コミッタノード1102Eは、DAGのために整合一時停止手続きが開始されるべきであ
ることを判定する一時停止トリガー検出器1106を備える。多数の異なる種類の原因が
、異なる実施形態において一時停止手続きの開始を引き起こし得る。例えば、一時停止手
続きが開始され得る理由として、(a)ある閾値数のノードに障害が起こり得たため(「
X」印で示されるノード1102B及び1102Dにおける障害等)、(b)構成デルタ
メッセージがコミッタノードにて(またはある他のノードにて)受信されているレートが
閾値を超えるため、(c)あるDAGノードまたはDCMにてネットワークパケットまた
は接続が落ちているレートが閾値を超えるため、等が挙げられる。描かれた実施形態にお
けるコミッタノード1102Eは、コミッタノードのコミットレコード集合内に表される
シーケンス番号中の最大シーケンス番号を含むDAG一時停止要求1150を送信する。
当該最大シーケンス番号は、本明細書において最大コミット済みシーケンス番号(HCS
N)1108と称され、後述のように一時停止手続きのステップのうちの1つの間に、D
AGノード間のコミットレコード集合を同期するための参照として使用され得る。いくつ
かの実施形態において、一時停止が開始されるべきであるという初期判定は、非コミッタ
ノードのうちの1つにて、またはDCM1180自体にて行われ、そしてノードが自身の
コミットレコード集合を更新する際目標とすべき目標シーケンス番号として、特定のコミ
ットシーケンス番号(理想的にはHCSNであるが必ずしもではない)が選択され得る。
一時停止要求の受信に応じて、DCM1180は、図11bに示されるように、持続的
格納域1175にHCSNを保存し得る。DCMはそれから、DAGノードの少なくとも
部分集合に対しそれぞれの一時停止命令1152を、例えば描かれた例示的シナリオにお
いてノード1102A、1102Cに対し命令1152A、1152Bをそれぞれ送信し
得る。いくつかの実施形態において、DCM1180は、DCMに保存されている最新の
DAG構成(1102B及び1102D等の障害が起こり得たノードを含む)に従って、
DAGのメンバーである全てのDAGノードに対し、一時停止命令を送信し得る。一時停
止命令はHCSN1108を含み得る。
一時停止命令を受信すると、DAGノードは、ステート遷移要求/メッセージの処理を
停止し、その代わりに自身のコミットレコード集合が、HSCNに対応するコミットレコ
ードを含むそれ以下のコミットレコードを全て含むことを検証するプロセスを開始し得る
。例えば、ノード1102A及びノード1102Cは、コミッタノード1102Eにより
、HCSN以下のシーケンス番号を有する1つまたは複数のコミット済みステート遷移に
関してまだ通知されていなかったという場合もあり得る。このようなシナリオにおいて、
図11cに示されるように、ノード1102Aは、コミットレコード同期要求1172B
をコミッタノード1102Eに対し送信し(「1a」と表示される矢印により示されるよ
うに)、そしてノード1102Cは同様のコミットレコード同期要求1172Bをノード
1102Eに対し送信し得る(「1b」と表示される矢印により示されるように)。コミ
ットレコード同期要求1172は、要求を送信したノードにて欠損しているコミットレコ
ードの開示をそれぞれ含み、例えば、ノード1102Aは、SN1までのシーケンス番号
を有するコミットレコードを自身が既に有することを示し、一方ノード1102Cは、シ
ーケンス番号SN2、SN3、SN4を有するコミットレコードを自身は受信していない
ことを示し得る。「2a」、「2b」と表示される矢印により示されるように、その後、
欠損コミットレコード1174A、1174Bが、コミッタノードによりノード1102
A、1102Cに対しそれぞれ送信され得る。「3a」、「3b」と表示される矢印によ
り示されるように、ノード1102A、1102Cはその後、それぞれの同期確認117
6A、1176BをDCM1180へ送信し得る。「4」と表示される矢印により示され
るように、DCM1180は、DCMの持続的格納域1175にて保持される最新状態ノ
ードリスト1133(すなわちコミッタノード1102Eのコミットレコード集合に一致
するように自身のコミットレコード集合を更新したノードのリスト)に、ノード1102
A、1102Cを追加し得る。
図11dに示されるように、描かれた実施形態において、DAGのノードは、実行を終
了し、自身を再始動し得る。障害が起こったノード1102B、1102Dは、例えば、
自身の障害からの復旧の一環として再始動し得る。整合一時停止手続きの一環として、ノ
ード1102A、1102Cは、自身のコミットレコード集合がコミッタノードのものと
同期された後に、自身のコミットレコード集合(及び/またはノードの動作に関係する追
加メタデータ)をローカル格納域に保存し、それから制御された再始動を開始し得る。ノ
ード1102Eは、描かれた実施形態において、自身が一時停止要求1150を送信した
後、ある時間間隔待機し(少なくともいくつかの同期要求1172にコミッタノードが応
答可能なように)、いずれのステートメタデータもローカル格納域に保存し、それから一
時停止手続きの一環として自身の制御された再始動を開始し得る。
図11eに示されるように、DAGノード1102A〜1102Eが経路上に戻った後
、いくつかの実施形態において、これらのノードはDCM1180に対し各自の「サービ
ス対応可能」メッセージをそれぞれ送信し、再開命令を待ってから、それらのアプリケー
ションステート遷移処理動作を再開し得る。DCMは、ノード1102B、1102Dの
コミットレコード集合は最新ではあり得ないことを識別可能であり(自身の最新状態ノー
ドリスト1133を使用して)、従って、図11fに示されるように、それぞれの同期命
令1194をノード1102B、1102Dに対し送信し得る。少なくともいくつかの実
施態様において、同期命令はHCSN1108を示し得る。同期命令1194に応じて、
ノード1102B、1102Dは、それぞれのコミットレコード集合において欠損してい
るコミットレコードを示す自身のコミットレコード同期要求1172C、1172Dを、
最新とわかっているノードに対し各自送信し得る。例えば、ノード1102Bは、その同
期要求1172Cをノード1102Aに対し送信し、一方ノード1102Dはその同期要
求をノード1102Eに対し送信し得る。いくつかの実施形態において、DCMは、コミ
ットレコード同期要求を送るべき送信先ノードを特定し得る。一実施形態において、全て
の非コミッタDAGノードは、それらのコミッタレコード集合をコミッタノードと同期す
る必要があり得る。ノード1102B、1102Dは、それらの欠損コミットレコード1
174C、1174Dをそれぞれ受信し、そのため最終的に全てのノードが自身のコミッ
トレコード集合をHCSNまで同期される。いくつかの実施態様において、ノード110
2B、1102Dは、それらのコミットレコード集合が更新/同期されたことを示す確認
を、DCM1180へ送信し得る。少なくとも一実施形態において、DCMは、その最新
状態ノードリストに含まれないノードに関して、図11fに関して前述されたものと比べ
て多少より受動的な役割を担い得る。このような実施形態において、障害が発生したノー
ド(1102Bまたは1102D等)は、経路上に戻ると、新たに経路上に設定された当
該ノードが全てのコミットレコードを受信したか否かを判定するためのメッセージを、D
CMに対し送信する。DCMは当該ノードに対し、最新状態のノードとなるには、HCS
Nまでのシーケンス番号を有するコミットレコードが必要であることを(例えば単純にH
CSNを示すことにより)通知し得る。それから当該ノードは、自身を最新状態にする責
務と、自身のコミットレコードをHCSNまで同期したらDCMへ折り返し報告する責務
を担い得る。従って、このような実施形態において、DCMは必ずしも同期命令1194
を送信するとは限らず、代わりに新たに経路上に設定されたノードが、自身のコミットレ
コード集合を同期する主導権を握り得る。
少なくとも閾値数のノードがコミットレコード集合を更新したことを確認した後、DC
M1180は、再開後のDAGの構成を決定し得る。いくつかの事例においては、一時停
止の前に使用されていた構成と同じ構成が再使用され、一方、別の実施形態においては、
異なる構成が選択され得る。例えば、DAGは最低4つのノードを有さなければならない
場合もあり、そのためノード1102A〜1102Eのうちの4つのみが最初に選択され
得る。図11gに示されるように、DCM1180は、選択されたノード集合(描かれた
実施例においては5つのノード全て)に対し、DAGの現行構成を示すそれぞれの再開メ
ッセージを送信し得る。DAGノードはそれから、図11hに示されるように、通常動作
を再開し得る。いくつかの実施形態において、障害が発生しなかったDAGノード(例え
ば1102A、1102C、1102E)のうちの少なくともいくつかは、必ずしも自身
を再始動するとは限らない。代わりに、このようなノードのうちの1つまたは複数は、こ
のような実施形態において、自身のコミットレコード集合を同期した後、自身がDCMか
ら再開命令を受信するまで、さらなるステート遷移処理を単純に延期し得る。
図12は、少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG
等のSRGのコミッタノードで行われ得る動作態様を示すフロー図である。構成要素12
01に示されるように、コミッタノードは、SRGの整合一時停止のトリガー基準が満た
されたことを判定し得る。例えば、応答可能な状態のSRGノードの数が閾値を下回った
こと、またはSRGの構成変更が起こっているレートが閾値を超えることが、コミッタノ
ードにより検出されることを含む、様々な異なるトリガー条件により、整合一時停止が引
き起こされ得る。いくつかの事例において、例えば、ネットワークパケットが抜け落ちる
レートが閾値を超える場合、または最大許容レート以上のレートで接続が突然終了されて
いる場合等、リソース作業負荷レベル、またはエラーレートが一時停止を引き起こし得る
。一実施形態において、SRGの非コミッタノード、またはDCM等の構成マネジャーが
、制御された一時停止を引き起こすであろう問題を最初に検出し、当該問題をコミッタノ
ードに通知し得る。
描かれた実施形態において、コミッタノードは、制御された一時停止を開始することを
決定した後、ステート遷移メッセージに関する自身の通常処理/複製を中断または停止し
、まだ保存されておらず未処理のいずれのコミットレコードもローカル格納域に保存し得
る(構成要素1204)。コミッタノードはそれから、HCSN(コミットレコードがコ
ミッタノードにより格納された遷移のシーケンス番号の中で最大のコミット済みシーケン
ス番号)の開示を含む一時停止要求を、SRGの構成マネジャー(例えば複製DAGの場
合はDCM)に対し送信し得る(構成要素1207)。HCSNは、目標コミットシーケ
ンス番号として機能し、SRGの現在作動中のノードは、自身のコミットレコード集合を
当該目標コミットシーケンス番号まで同期する。
少なくともいくつかの実施形態において、コミッタノードは、一時停止要求を送信した
後、他のSRGノード(例えばHCSNまでのシーケンス番号を有する全てのコミットレ
コード集合を自身は有さないと判定したノード)から、複数のコミットレコード同期要求
を受信し得る(構成要素1210)。描かれた実施形態において、コミッタノードは、設
定可能時間窓の間に受信されたいずれのそのような同期要求に応答する。コミッタノード
はそれから任意で、クリーンシャットダウン及び再始動を行い、サービス対応可能メッセ
ージをSRGの構成マネジャーに送信し得る(構成要素1213)。いくつかの実施形態
において、クリーンシャットダウン及び再始動は省略され、そしてコミッタノードは単純
にサービス対応可能メッセージを送信し得る、あるいはコミッタノードは構成マネジャー
から再開命令を受信するまで、さらなるステート遷移関連処理を単純に延期し得る。最終
的に、コミッタノードは、構成マネジャーからDAGの現行一時停止後構成を示す再開メ
ッセージを受信し、それからコミッタノードは、示される構成通りに、ステート遷移関連
処理を再開し得る(構成要素1216)。例えば、いくつかの実施形態において、新たな
一時停止後構成では、コミッタノードはもうコミッタの役割を与えられず、代わりに、受
諾ノード、中間ノード、または待機ノードに設定され得る場合もあり得る。
図13は、少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG
等のステート複製グループの非コミッタノードで行われ得る動作態様を示すフロー図であ
る。通常動作中、非コミッタノードは、対応遷移がコミットされた後のある時点に、コミ
ットレコードをローカル格納域に格納し得る。その結果、非コミッタノードのローカルコ
ミットレコード集合は、必ずしもコミッタノードのもの程最新であるとは限らない。構成
要素1301に示されるように、非コミッタノードは、非コミッタノードが自身のローカ
ルコミットレコード集合を同期する際目標とすべき目標シーケンス番号としてHCSNを
示す一時停止命令を、構成マネジャーから受信し得る。
一時停止命令を受信すると、非コミッタノードは、新たなステート遷移メッセージの処
理を中断または停止し得る。HCSNより小さいシーケンス番号を有するいくつかのコミ
ットレコードがローカルコミットレコード集合から欠損している場合、非コミッタノード
は、欠損レコードのコミットレコード同期要求を、コミッタノードへ(または構成マネジ
ャーにより欠損コミットレコードの情報源として指示された別のノードへ)送信し得る(
構成要素1304)。非コミッタノードのコミットレコード集合がHCSNに関して既に
最新状態である場合、非コミッタノードは、一時停止手続きの当段階において、他のノー
ドと通信しなくてもよい。HCSNまでのシーケンス番号を有するコミットレコードがロ
ーカル格納域に格納されたことが確認された後、描かれた実施形態において、非コミッタ
ノードは、構成マネジャーに対し同期確認メッセージを送信し得る(構成要素1307)
。非コミッタノードはそれから、構成マネジャーにより再開されるまで、さらなるアプリ
ケーションステート遷移処理を延期し得る。任意で、非コミッタノードは、クリーンシャ
ットダウン及び再始動を行い、再始動後、「サービス対応可能」メッセージを構成マネジ
ャーに送信し得る(構成要素1310)。構成マネジャーからの再開メッセージに応じて
、非コミッタノードは、SRG構成に関する自身の見解を更新し、アプリケーションステ
ート遷移処理を再開し得る(構成要素1313)。場合によっては、構成マネジャーによ
り、一時停止後構成において非コミッタノードに異なる役割が与えられ得る。例えば非コ
ミッタノードの役割はコミッタノードに変更され得る。
図14は、少なくともいくつかの実施形態による、整合一時停止手続き中に複製DAG
等のステート複製グループの構成マネジャーで行われ得る動作態様を示すフロー図である
。構成要素1401に示されるように、構成マネジャーは、SRGのコミッタノードから
、コミットレコードがコミッタノードに格納されている遷移のシーケンス番号のうちの最
大コミット済みシーケンス番号(HCSN)を示す一時停止要求を受信し得る。いくつか
の実施形態において、SRG動作を一時停止する決定が最終的になされる前に、構成マネ
ジャーの様々なノード間で同意プロトコルが採用され得る。構成マネジャーは、HCSN
を持続的格納域に格納し(構成要素1404)(例えば、構成マネジャークラスタのいく
つかのノードにおけるそれぞれの格納デバイスにて)、HCSNを示す一時停止命令をS
RGの1つまたは複数の他のノードへ送信し得る(構成要素1407)。いくつかの実施
形態において、一時停止命令は、障害が起こったと思われるノードを含むSRGのわかっ
ているメンバー全てに対し送信され得る。SRGの受信ノードはそれぞれ、自身のローカ
ルコミットレコード集合がHCSNに対応するコミットレコードを含むことを確認し得る
(場合によっては、受信ノードは前述のようにコミッタノードから欠損コミットレコード
を取得しなければならない)。一時停止命令の受信ノードは、自身のコミットレコード集
合がHCSNに関して最新であることを確認した後、構成マネジャーに対し、自身のコミ
ットレコード集合が現時点で最新であることを示す同期確認を送信し得る。従って、構成
マネジャーは、SRGノードからこのような確認を受信すると、当該ノードを最新状態ノ
ードのリストに追加し得る(構成要素1410)。
いくつかの実施形態において、構成マネジャーは、SRGノードからそれらがサービス
対応可能であることを示すそれぞれのメッセージを受信するのを待ってよい。構成マネジ
ャーは、そのようなメッセージをノードから受信すると(例えばノードがクリーンシャッ
トダウン及び再始動を完了した後に、またはノードが障害後に経路上に戻った後に)、ノ
ードが最新状態ノードリストに含まれるか否かを特定し得る。受信した「サービス対応可
能」の開示の送信元であるノードがコミットレコードに関して最新であるかわからない場
合、構成マネジャーは、例えば明示的同期命令で、またはノードからの暗示的または明示
的クエリに応じて、ノードに対しHCSNの開示を送信し得る(構成要素1413)。そ
れからノードは、コミットレコードを更新する際の目標シーケンス番号としてHCSNを
使用して、既に最新状態の他のノードと通信することで、自身のローカルコミットレコー
ド集合を更新し得る。いくつかの実施形態において、構成マネジャーは、同期命令に、古
い状態のノードが欠損コミットレコードを取得するべき取得先となる情報源の開示を含み
得る。
構成マネジャーは、必要最低数のSRGノードが(a)サービス対応可能であり、(b
)アプリケーションコミットステートに関して最新状態であることを確認した後、SRG
の一時停止後初期構成を完成し得る(構成要素1416)。それから構成マネジャーは、
構成を示す再開メッセージを、初期構成に含まれる適切なノード集合に送信し得る(構成
要素1419)。いくつかの実施形態において、初期構成情報は、一連の構成デルタメッ
セージとしてノードに対し提供され得る。
少なくともいくつかの実施形態において、同期のために選択される目標シーケンス番号
(すなわちSRGの複数のノードそれぞれが自身のローカルコミットレコード集合を更新
する際目標とするシーケンス番号)は、必ずしも最大コミット済みシーケンス番号である
必要はない。例えば、コミッタノードにおける最大コミット済みシーケンス番号がSN1
であり、そして速く拡大する大規模障害イベントの検出を受けてSRGの動作を一時停止
することが急務であるため、SRG構成マネジャーは、ノードが自身のコミットレコード
をより小さいシーケンス番号(SN1−k)まで更新した後にそれらの動作を一時停止す
ることを進んで許可し得る場合もあり得る。いくつかの実施態様において、SRGのノー
ドは、一時停止/再始動する前に、自身のコミットレコードをあるより小さいシーケンス
番号まで同期し、一時停止の後、例えばノードが再始動し、「サービス対応可能」メッセ
ージを構成マネジャーに送信した後に、最大コミット済みシーケンス番号まで同期し得る
。前述のように、いくつかの実施形態において、一時停止手続きは、非コミッタノードに
より、または構成マネジャー自身により開始され得る。
複数データストアトランザクションのためのログベース楽観的並行処理制御
いくつかの実施形態において、複数の独立データストアを伴うトランザクションに対応
することを可能にするログサービスを使用して楽観的並行処理制御技術を実施するために
、前述の種類の複製DAGが使用され得る。図15は、少なくともいくつかの実施形態に
よる、複数のデータストアへの書き込みを含み得るトランザクションに対応する持続的変
更ログを備える例示的システム環境を示す。システム1500は、ログサービスを使用し
てインスタンス化され得る持続的変更ログ1510を示す。描かれた実施形態において、
データストア1530A(例えばNoSQLまたは非リレーショナルデータベース)及び
データストア1530B(例えばリレーショナルデータベース)等の1つまたは複数のデ
ータストア1530が、トランザクション管理のためにログサービスにおいて登録され得
る。用語「並行処理制御」、「トランザクション管理」、及び「更新管理」は、ログサー
ビスにより提供される機能に関して類義語として本明細書において使用され得る。ログサ
ービスは、いくつかの実施形態において、プロバイダネットワークにて実施され得る複数
の格納サービスのうちの一例とみなされ得る。
クライアント1532は、いくつかの実施形態において、それらが特定のアプリケーシ
ョンのログベーストランザクション管理を適用したいデータソース集合を示す登録要求を
、例えばログサービスマネジャー1501により提示される管理または制御プレーンプロ
グラマチックインターフェースを介して、提出し得る。持続的変更ログ1510は、いく
つかの実施形態において、このような登録要求に応じてインスタンス化され得る。一般に
、所定の持続的変更ログインスタンスは、1つまたは複数の基礎データストアのトランザ
クションを管理するために作成され得る。すなわち、少なくともいくつかの展開において
、ログベーストランザクション管理は、複数のデータストアに同時ではなく、単一のデー
タストアに使用され得る。本明細書において使用される用語「データストア」は、幅広い
種類の持続的または一時的データレポジトリ及び/またはデータコンシューマのうちのい
ずれかのインスタンスを指し得る。例えば、いくつかのデータストアは、複数アイテムト
ランザクションに対しネイティブ対応を必ずしも提供するとは限らない持続的非リレーシ
ョナルデータベースを備え、一方、他のデータストアは、複数アイテムトランザクション
に対しネイティブ対応を行い得る持続的リレーショナルデータベースを備え得る。いくつ
かの実施形態において、プロバイダネットワークのユーザが任意のサイズの非構造化デー
タオブジェクトを格納することを可能にする、ウェブサービスインターフースを介してア
クセス可能なプロバイダネットワークのネットワークアクセス可能格納サービスが、デー
タストアのうちの1つとして登録され得る。他の種類のデータストアは、インメモリデー
タベース、分散キャッシュのインスタンス、ネットワークアクセス可能ブロック格納サー
ビス、ファイルシステムサービス、またはマテリアライズドビューを含み得る。少なくと
も一実施形態において、データストアのうちの1つまたは複数は、プロバイダネットワー
クにおいて実施される待ち行列サービス及び/または通知サービスのコンポーネントを含
み得る。例えば新たなデータアーチファクトを生成するために、ログサービスにより記録
されたコミット済み書き込みを使うエンティティは、別の種類のデータストアを表し、本
明細書において一般的に「データコンシューマ」と称され得る。このようなデータストア
は、例えば、ログサービスを介して管理される特定データ集合に対する特定クエリの結果
を生成する責務を担う事前演算クエリ結果マネジャー(PQRM)(データストア153
0Cと同様)を含み得る(特定データ集合は1つまたは複数の異なる他のデータストアに
格納されたオブジェクトを含み得る)。いくつかの実施形態において、ログサービスを介
して管理される一部または全てのコミット済みデータの時点スナップショットを生成する
ように構成されたスナップショットマネジャーは、別のカテゴリのデータストアを表し得
る。このようなログスナップショットは、異なる実施形態において、バックアップのため
、またはオフライン作業負荷分析のため等、様々な目的で格納され得る。用語「データコ
ンシューマ」は、PQRM及びスナップショットマネジャー等のデータストアを指すため
に、本明細書において使用され得る。データストアのうちの少なくともいくつかは、他の
データストアの読み出しインターフェース1531とは異なる読み出しインターフェース
1531を有し得る。例えば、描かれた実施形態において、データストア1530Aのデ
ータストア(DS)読み出しインターフェース1531Aは、DS読み出しインターフェ
ース1531Bまたは事前演算クエリインターフェース1531Cとは異なるAPI集合
、ウェブベースインターフェース、コマンドラインツール、またはカスタムGUI(グラ
フィカルユーザインターフェース)を備え得る。
描かれた実施形態において、ログサービスクライアント1532は、トランザクション
要求をローカルで構築し、それからトランザクション要求を、持続的変更ログ1510に
よる承認及びコミットのために提出(または「提案」)し得る。一実施態様において、例
えば、ログサービスのクライアント側ライブラリにより、クライアントは「トランザクシ
ョン開始」要求の論理的均等物を発行することにより、候補トランザクションを開始する
ことが可能となり得る。候補トランザクション内で、クライアントは、データストア15
30における選択オブジェクト集合に対し複数の読み出しを行い、1つまたは複数のデー
タストアに対する提案書き込み集合をローカルで(例えばローカルメモリにおいて)行い
得る。クライアントはそれから、「トランザクション終了」要求の均等物を発行すること
により、候補トランザクションを提出し得る。描かれた実施形態において、候補トランザ
クション要求1516は、ログの書き込みインターフェース1512を介して、持続的変
更ログ1510に対応付けられた競合検出器1505にて受信され得る。一般に、少なく
ともいくつかの実施形態において、所定のトランザクション要求1516は、1つまたは
複数のデータストアそれぞれからの1つまたは複数の読み出しと、1つまたは複数のデー
タストアにそれぞれ対する1つまたは複数の提案書き込みとを含み、読み出されるデータ
ストア集合は、書き込まれているデータストア集合と重複し得る、あるいは重複し得ない
。いくつかの実施形態において、読み出しは、ネイティブDS読み出しインターフェース
1531を使用して行われ得る(しかし後述のように、いくつかのシナリオにおいて、ク
ライアントは持続的変更ログ1510を介して読み出し専用動作も実行し得る)。
いくつかの実施形態において、所定のトランザクション要求内に示される書き込みのう
ちの少なくともいくつかは、読み出しのうちの1つまたは複数の結果に依存し得る。例え
ば、要求トランザクションは、データストアDS1における位置L1から1つの値V1と
、データストアDS2における第2位置L2から第2値V2とを読み出し、関数F(V1
、V2)を計算し、関数の結果をあるデータストアDS3における位置L3に格納するこ
とを伴い得る。いくつかのロックベース並行処理制御機構においては、L3が更新される
前に値V1及びV2が確実に変更しないように、L1及びL2に対し排他的ロックが取得
される必要があり得る。図15に例示されるログサービスの楽観的並行処理制御機構にお
いては、ロックは全く取得される必要はなくてよい。代わりに、描かれた実施形態におい
て、競合検出器1505は、トランザクション記述子1516のコンテンツと、持続的変
更ログ1510のコミット済みトランザクションログレコード1527の集合とに少なく
とも部分的に基づいて、要求トランザクション内で読み出されるデータアイテム集合は、
それらがそれぞれのデータストアから読み出された時から更新されたか否かを判定し得る
。さらに詳しく後述されるように、少なくともいくつかの実施形態において、このような
読み出し書き込み競合が存在するか否かを判定するために、シーケンス番号に基づいた技
術が使用され得る。競合検出器1505が、トランザクションが上書きされている間に読
み出されたデータは何もないと判定すると、要求トランザクションはコミットのために受
諾され、そしてこのようなコミット受諾済みトランザクション1514は、持続的変更ロ
グにおける対応ログレコードの複製のために提出され得る。用語「承認」及び「受諾」は
、拒否されなかった要求トランザクションに関する類義語として、本明細書において使用
され得る。対応読み出しが起こった後に読み出しデータの一部が更新された場合(または
競合検出器により推定されるデータが更新された確率が閾値より大きい場合)、描かれた
実施形態において、要求トランザクション1516は代わりに拒否またはアボートされ得
る。この種類の並行処理制御手法は、トランザクションの書き込み集合を続行するか否か
に関する判定が初めに、読み出し書き込み競合はあり得ないという楽観的仮定の下行われ
得るという点で、楽観的であるとみなされ得る。その結果、読み出し書き込み競合が実際
めったに起こらないシナリオにおいて、より多くの従来型ロックベース技術が使用される
場合に可能となり得るスループット及び応答時間よりも、高いスループット及び低い応答
時間が達成され得る。
トランザクションがコミットのために受諾された場合、描かれた実施形態において、コ
ミットが成功したとみなされる前に、コミット済みトランザクションログレコードのコン
テンツが、持続的変更ログ1510に対応付けられた複製DAGの複数のノードにおいて
複製され得る(より詳しく図16に関して後述されるように)。必要数のレプリカが作成
されない場合、描かれた実施形態において、トランザクションは拒否またはアボートされ
得る。コミットに必要となるレプリカの数は、異なるアプリケーションまたはクライアン
トにより異なり得る。コミット済みトランザクションログレコードは、本明細書において
「コミットレコード」とも称され得る。いくつかの実施形態において、要求トランザクシ
ョンがコミットされると、要求クライアント1532に通知され得る。少なくとも一実施
形態において、トランザクションが拒否されると、クライアント1532に通知され、従
って例えば、所望の更新のために新たなトランザクション要求が生成され、提出され得る
少なくともいくつかの実施形態において、コミットされたトランザクションごとに、コ
ミットシーケンス番号(またはアプリケーションのコミット済みステートを示すある他の
識別子)が生成され、持続的変更ログ1532に格納され得る(例えばコミット済みトラ
ンザクションログレコードのそれぞれのレプリカの一部として)。このようなコミットシ
ーケンス番号は、ステート遷移のための複製DAGにおいて使用されるシーケンス番号に
関して前述されるように、例えばカウンタとして、または論理タイムスタンプとして実施
され得る。コミットシーケンス番号は、例えば、いくつかの実施形態において競合検出器
により、または他の実施形態において持続的変更ログの別のコンポーネント(使用されて
いる複製DAGのコミッタノード等)において、決定され得る。描かれた実施形態におい
て、所定のトランザクションがコミットされ、そのコミットレコードが持続的変更ログに
格納された後、トランザクションの書き込みは、データストア1530のうちの書き込み
対象となる1つまたは複数に、適用または伝播され得る(またはPQRM1530Cの場
合のように、書き込みデータは使用される)。いくつかの実施態様において、書き込みは
、対象データストア1530に非同期的にプッシュされ得る。従って、このような実施態
様において、トランザクションがコミットされた時間(すなわちコミットレコードの必要
数のレプリカが無事格納された時)と、コミット済みトランザクションの特定書き込み動
作のペイロードが対応データストアに到達する時間の間に、ある遅延が生じ得る。図15
に示される実施形態において、一部または全ての書き込みを関連データストアに伝播する
ために、それぞれの非同期書き込みアプライヤ1517が使用され得る。例えば、書き込
みアプライヤ1517Aはデータストア1530Aに関連する書き込み1515Aを適用
するように構成され、書き込みアプライヤ1517Bはデータストア1530Bに関連す
る書き込みをプッシュし、そして書き込みアプライヤ1517Cはデータストア1530
Cにて使用される書き込みをプッシュする。いくつかの実施態様において、書き込みアプ
ライヤは持続的変更ログ1510のサブコンポーネント(例えばスレッドまたはプロセス
)を含み、一方、他の実施態様において、書き込みアプライヤ1517は持続的変更ログ
の外部エンティティとして実装され得る。いくつかの実施形態において、所定の書き込み
アプライヤ1517は、複数のデータストア1530に書き込みを伝播する責務を担い得
る、または単一のデータストア1530は、複数の書き込みアプライヤ1517から書き
込みを受信し得る。少なくとも一実施態様において、書き込みデータをデータストアに伝
播するのにプル技術が使用され得る。例えば、1つまたは複数のデータストア1530は
、書き込みアプライヤ主導で書き込みデータを提供される代わりに、持続的変更ログ15
10または書き込みアプライヤに対し書き込みの要求を提出し得る。トランザクション中
に書き込まれるデータが対応データストアに適用された後、クライアント1532は、更
新されたデータを、データストアのそれぞれの読み出しインターフェースを使用して読み
出すことが可能であり得る。いくつかの実施形態において、書き込みアプライヤのうちの
少なくとも1つは、同期書き込みを実行することが可能であり得る(例えば、そうするよ
うにログサービスにより明示的に指示された時、またはアプライヤが担当する全ての書き
込みに関して)。例えば、クライアントは、トランザクションがコミットされたことを通
知されるより先に、所定のトランザクションの少なくとも1つの書き込み(トランザクシ
ョンに伴う、複数のデータストアのうちの「マスタ」データストアに対する書き込み等)
が適用されたことの確認を所望し得る。いくつかの実施形態において、同期的に行う特定
の書き込みが、トランザクション要求1516内に示され得る。
さらに詳しく後述されるように、いくつかの実施形態において、所定のトランザクショ
ン要求1516は、トランザクションの読み出し集合のインジケータ(すなわちトランザ
クション中に読み出されるデータオブジェクト集合を特定する情報)、トランザクション
の書き込み集合のインジケータ(すなわちトランザクションがコミットされると更新/書
き込みが行われるデータオブジェクト集合を特定する情報)、書き込みペイロードのイン
ジケータ(すなわち書き込みごとに格納されるデータバイト集合)、及び/または競合検
査デリミタのインジケータ(トランザクションを受諾/拒否するために調べられるべきコ
ミット済みトランザクションログレコードの部分集合の指示)を含み得る。トランザクシ
ョン要求のこれらの構成要素のうちの一部または全ては、トランザクションのコミットシ
ーケンス番号と一緒に、対応コミットレコード内に格納され得る。少なくとも一実施形態
において、持続的変更ログ1510は、例えばデータストアからのクエリ、またはログサ
ービスクライアントからのクエリに応じて、アプリケーションの最新コミット済みステー
トの識別子1590(これまでに生成された最大コミットシーケンス番号等)を提供し得
る。描かれた実施形態において、書き込みアプライヤは、データストアに適用する書き込
みに対応するコミットシーケンス番号を示し得る。従って、いずれかの所定の時点で、ク
ライアント1532は、所定のデータストア1530における最新適用済み書き込みに対
応するコミットシーケンス番号を特定することが可能であり得る(例えばデータストアに
問い合わせることで)。
少なくともいくつかの実施形態において、トランザクション要求の生成中(例えばログ
サービスのクライアントライブラリにより)、トランザクション中にアクセスされるデー
タストアから最新適用済みコミットタイムスタンプが取得され、そしてこのようなコミッ
トシーケンス番号のうちの1つまたは複数は、競合検査デリミタとしてトランザクション
要求内に示され得る。例えば、特定のクライアントがデータストアDS1における位置L
1の読み出しを含むトランザクションを開始する時に、DS1における最新適用済み書き
込みに対応するコミットシーケンス番号がSN1であるシナリオを考察する。当実施例に
おいて、トランザクションの読み出し集合はDS1のデータのみから成るとさらに仮定す
る。このようなシナリオにおいて、SN1は、トランザクション要求1516に含まれ得
る。競合検出器は、要求トランザクションの読み出し書き込み競合に関して調べるコミッ
トレコード集合として、SN1より大きいシーケンス番号を有するコミットレコードを特
定し得る。特定されたコミットレコードの書き込み集合のうちのいずれかが、要求トラン
ザクションの読み出し集合と重複する場合、トランザクションは拒否/アボートされ得る
。そうでなければ、当例示的シナリオにおいてトランザクションはコミットに承認され得
る。
描かれた実施形態において、クライアント1532が直接ログレコードを読みだせるよ
うに、ログサービスは、1つまたは複数のプログラマチックログ読み出しインターフェー
ス1513(例えばAPI、ウェブページ、コマンドラインユーティリティ、GUI等)
を開示し得る。別の実施形態において、変更ログ1510へ直接アクセスすることを可能
にするこのような読み出しAPIは、実装され得ない。コミットされた特定トランザクシ
ョンを示すログレコードに直接アクセスし、かつ特定トランザクションがコミットされた
順序を確定する機能は、いくつかの実施形態において、データストアにのみ直接アクセス
することにより可能となり得る分析と比べ、新たな種類の分析を行うことを可能にし得る
(データストアのうちの少なくともいくつかにより、通常読み出し者は、最新適用済みバ
ージョンのデータオブジェクトを参照することのみ可能であり、データオブジェクトの履
歴を参照することは不可能であるため)。
図15に例示される楽観的並行処理制御機構は、少なくともいくつかのシナリオにおい
て、基礎データストアの並行処理制御機構を使用することで可能であり得る原子動作と比
べて、より複雑な種類の原子動作に対応することを可能にし得る。例えば、いくつかの高
性能の非リレーショナルデータストアは、単一アイテムのトランザクションのみを許可し
得る(すなわち書き込みは1度に1つ許可されるが、単一のバッチ更新において複数の書
き込みが提出された場合、一緒に対応される複数書き込みには原始性/整合性保証は提供
され得ない)。前述のログベース手法により、非リレーショナルデータストア(及び/ま
たは同様に他のデータストア)の複数の位置に対する書き込みをもたらす単一のトランザ
クションは、比較的容易に対応され得る。持続的変更ログ1510は、対応付けられた競
合検出器1505と一緒に、本明細書においてログベーストランザクションマネジャーと
称され得る。いくつかの実施形態において、書き込みアプライヤ1517もまた、トラン
ザクションマネジャーのサブコンポーネントとみなされ得る。
前記のように、いくつかの実施形態において、持続的変更ログ1510は、前述される
複製DAGを使用して実施され得る。図16は、少なくともいくつかの実施形態による、
複製DAG1640を使用する持続的変更ログの例示的実施態様を示す。描かれた実施形
態において、DAGにより管理されるアプリケーションステート遷移は、1つまたは複数
のデータストアの集合を対象とする読み出し及び書き込みを含む適用の一部として、ログ
クライアント1660により要求されるトランザクションに対応する。アプリケーション
のステートは、受諾ノード1610、中間ノード1612、及びコミッタノード1614
を含む現行複製経路を有する受諾ノード1610、中間ノード1612、コミッタノード
1614、及び待機ノード1616におけるローカル格納域に格納されるそれぞれのトラ
ンザクションレコード集合1672として形成され得る。いくつかの実施態様においては
、承認(すなわち要求トランザクションがコミットに承認されたことを示す)とコミット
の別個のトランザクションレコードが格納され、一方、別の実施形態においては、単一の
トランザクションレコードが、トランザクションがコミットされたか否かを示すフィール
ドと共に格納され得る。シーケンス番号または論理タイムスタンプは、描かれた実施形態
において、トランザクションレコードのうちの少なくともいくつかの部分として格納され
得る、あるいはトランザクションレコードのうちの少なくともいくつかにより示され得る
要求トランザクション1650がコミットのために承認されるか否かに関する判定は、
描かれた実施形態において、受諾ノード1610に実装される競合検出器により行われ得
るが、別の実施形態において、競合検出器は複製DAGの外に実装され得る。フォールト
トレラントログ構成マネジャー164は、DAGノード1610、1612、1614、
1616に対し、それぞれのメッセージがDAGの構成全体ではなくDAG構成に対する
変更を示し、かつクライアント1660により提出される受信トランザクション要求のス
トリームの処理を中断するようDAGノードに要求しない、構成デルタメッセージを非同
期的に送信し得る。各DAGノードは、受信した構成デルタメッセージを自主的に処理ま
たは集約して、現行DAG構成に関する各自の見解1674(例えばノード1610にお
ける見解1674A、ノード1612における見解1674B、ノード1614における
見解1674C、及びノード1616における見解1674D)に到達させ得る。見解1
674のうちの少なくともいくつかは、所定の時点で他のノードの見解と異なり得るが、
このように、通常の動作条件の下、異なるDAGノードは、お互いにそれらのDAG構成
見解を同期させなくてもよい。承認された(しかしまだコミットされていない)トランザ
クションを示すメッセージ1652A、1652Bが、受諾ノード1610、中間ノード
1612から複製経路沿いにそれぞれ送信され得る。描かれた実施形態において、コミッ
タノード1614は、コミットを示すメッセージ1653を、受諾及び中間ノードへ、並
びに待機ノード1616へ、送信し得る。図16の実施形態において複製DAGの外にあ
るエンティティとして示される非同期書き込みアプライヤ1692は、様々なコミット済
みトランザクションレコードからの書き込みを、適切なデータストアまたはデータコンシ
ューマに伝播し得る。別の実施形態において、書き込みアプライヤは、例えばDAGノー
ド内で作動するそれぞれのプロセスのように、複製DAG内に実装され得る。いくつかの
実施態様において、コミット済み書き込みをそれらの目的データソースまたはコンシュー
マに伝播するために、DAGノードの部分集合のみがアプライヤ1692により読み出さ
れ得る。別の実施形態において、図16に示されるように、アプライヤはDAGノードの
うちのいずれかからコミット済みトランザクションレコードを読み出し、前述のように書
き込みペイロードのコンテンツをプッシュし得る。
トランザクション要求構成要素
図17は、少なくともいくつかの実施形態による、ログサービスのクライアント173
2により提出され得るトランザクション要求記述子1744の例示的コンポーネント要素
を示す。示されるように、描かれた実施形態において、トランザクション記述子1744
は、競合検査デリミタ1702と、読み出し集合記述子1704と、書き込み集合記述子
1706と、書き込みペイロード(複数可)1708と、任意の論理制約記述子1710
とを含み得る。示される実施例において、ログサービスクライアント1732は、トラン
ザクション要求記述子を組み立てるために使用され得るクライアントライブラリ1756
を備える。少なくともいくつかの実施形態において、クライアントライブラリは、トラン
ザクション中にデータが読み出されるデータストア1730A、1730B、1730C
内のそれぞれの読み出し位置1761A、1761B、1761C、及び/またはデータ
が書き込まれる書き込み位置1771(描かれた実施例におけるデータストア1730C
の書き込み位置1771)を、自動で記録し得る。いくつかの実施態様において、クライ
アントライブラリ1756はまた、それぞれのデータソース1730から、ごく最近デー
タストアに適用された書き込みを含む最新トランザクションの対応コミットシーケンス番
号(CSN)も取得し得る。一実施形態において、このようなCSNは、例えば、トラン
ザクションの読み出しのうちのいずれかが対応データストアに発行される前に、取得され
得る。別の実施形態において、CSNは、所定のデータストア1730から取得され得る
が、それは、現行のトランザクション内のそのデータストアに向けられた第1読み出しが
発行される直前である。
描かれた実施形態において、競合検査デリミタ1702は、最新適用済みCSNが入力
として提供される関数から引出され得る。例えば、一実施態様においては、トランザクシ
ョン中に読み出される全てのデータストアから取得されるCSNの中の最小シーケンス番
号が使用され得る。別の実施態様においては、それぞれのデータストアからのCSNから
成るベクトルまたはアレイが、トランザクション要求記述子の競合検査デリミタ1702
として含まれ得る。競合検査デリミタ1702はまた、要求トランザクションが依存する
1つまたは複数のデータストアのコミット済みステートを表すため、本明細書においてコ
ミット済みステート識別子(CSI)とも称され得る。いくつかの実施形態において、読
み出し記述子1704に含めるためのハッシュ値集合を取得するために、選択されたハッ
シュ関数が、それぞれの読み出し位置1761A、1761B、または1761Cに適用
され得る。同様に、書き込み集合記述子1706を生成するために、選択されたハッシュ
関数(実施態様により、読み出し記述子に使用された関数と同じ関数、または異なる関数
)が、トランザクションの書き込み(複数可)の位置に適用され得る。別の実施形態にお
いて、ハッシュ法は使用され得ず、代わりに、例えば非ハッシュ化位置識別子が、それぞ
れの読み出し及び書き込み集合エントリに使用され得る。書き込みペイロード1708は
、トランザクションに含まれるそれぞれの書き込みの書き込むデータの表現を含み得る。
任意の論理制約1710は、さらに詳しく後述されるように、重複検出/排除のために、
及び/または特定トランザクションを他のトランザクションの前または後に順序付けるた
めに、使用されるシグネチャを含み得る。トランザクション要求記述子1744のコンテ
ンツの一部または全ては、いくつかの実施形態において、持続的変更ログ1510に複製
されるトランザクションステートレコード(例えば承認済みトランザクションレコード及
び/またはコミット済みトランザクションレコード)の一部として、格納され得る。
異なる実施形態において、または異なるデータストアに関して、読み出し記述子及び書
き込み記述子を生成する基となる読み出し及び書き込み位置は、異なる格納粒度、または
異なる種類の論理エンティティさえ表し得ることに留意されたい。例えば、特定のデータ
オブジェクトがコンテナ名(例えばテーブル名)と、ユーザ名(コンテナの所有者を示す
)と、あるキー集合(例えばハッシュキー及び範囲キー)との組み合わせにより表される
非リレーショナルデータベースを含むデータストアの場合、読み出し集合は、タプル(コ
ンテナID、ユーザID、ハッシュキー、範囲キー)の関数として取得され得る。例えば
リレーショナルデータベースの場合、タプル(テーブルID、ユーザID、ローID)ま
たは(テーブルID、ユーザID)が使用され得る。
様々な実施形態において、トランザクションマネジャーは、トランザクション要求のコ
ンテンツと持続的変更ログとを使用して、トランザクション要求内に示される読み出しと
、ログ内に示される書き込みとの競合を特定する責務を担い得る。比較的単純な読み出し
動作の場合、読み出された位置に基づいてハッシュ値を生成して、読み出された位置のハ
ッシュ値を変更ログ内に示される書き込みのハッシュ値と比較することは、競合を検出す
るのに十分であり得る。いくつかの実施形態におけるより複雑な読み出し要求の場合、位
置ベースのハッシュ値を使用することは、必ずしも十分ではあり得ない。例えば、読み出
し要求R1が「テーブルT1から文字“G”で始まる製品名を選択」というクエリを含み
、そして元の結果集合は“Good‐product1”であったシナリオを考察する。
R1の結果に依存する書き込みW1を含むトランザクション要求が受諾のために調べられ
るまでに、製品名“Great‐product2”がテーブルに挿入された場合、“G
ood‐product1”のデータオブジェクトの位置は変更されておらず、よってロ
グの書き込みレコードは示され得ないとしても、トランザクション受諾決定が行われた時
にR1をもう1度実行したら、R1の結果集合は変わり得ることとなる。このような読み
出しクエリに関する、または値の範囲を伴う読み出しクエリ(例えば「$10〜$20の
価格の製品の製品名集合を選択」)に関する読み出し書き込み競合に対応するために、い
くつかの実施形態において、論理または述語ベースの読み出し集合記述子が使用され得る
。従って、前述の位置ベースの読み出し集合インジケータは、読み出し書き込み競合検出
の様々な実施形態において使用され得る結果集合変更検出メタデータの単なる一例示的カ
テゴリとみなされ得る。
読み出し書き込み競合検出
図18は、少なくともいくつかの実施形態による、ログベーストランザクションマネジ
ャーにおける読み出し書き込み競合検出の実施例を示す。描かれた実施形態において、持
続的変更ログ1810に格納されたトランザクションコミットレコード(CR)1852
は、コミットシーケンス番号をログの上部から下部に向かって昇順で配置されるように示
される。最新または最近のコミット済みトランザクションは、コミットシーケンス番号(
CSN)1804Fと書き込み集合記述子(WSD)1805Fとを含むCR1852F
により表される。それぞれのCR1852A、1852B、1852C、1852D、1
852Eは、対応CSN1804(例えばCSN1804A〜1804Eそれぞれ)と、
対応WSD1805(例えばWSD1805A〜1805E)とを含む。
示されるように、トランザクション要求記述子1844は、競合検査デリミタ(または
コミット済みステート識別子)1842と、読み出し集合記述子1846と、書き込み集
合記述子1848とを含む。(要求トランザクションの読み出し集合書き込みペイロード
は図示せず)。ログベーストランザクション管理システムの競合検出器は、要求トランザ
クションの読み出し集合との競合検査対象となるログ1810のCR集合を特定するよう
に求められ得る。競合検査デリミタ1842は、「一致」と表示される矢印により示され
るように、描かれた実施形態において、要求トランザクションとの読み出し書き込み競合
の調査対象となる集合1809の開始CRを特定するために競合検出器が使用し得る下限
CSNを示す。集合1809は、いくつかの実施形態において、一致シーケンス番号から
始まり、最新コミット済みトランザクション(CR1852F)までの全てのCRを含み
得る。CR集合1809により示される書き込みのうちのいずれかが、トランザクション
要求1844内に示される読み出しのうちのいずれかと重複する場合、このような読み出
し書き込み競合は、要求トランザクションの拒否を引き起こし得る。異なる実施形態にお
いて、このような重複が存在するか否かを検査するために、様々な機構が使用され得る。
一実施形態において、例えば、読み出し集合記述子1846内に示される読み出しがCR
集合1809内に示される書き込みと競合するか否かを判定するために、1つまたは複数
のハッシュベースの演算またはプローブが使用され、これによりCR集合の順次走査が回
避される。いくつかの実施態様において、例えばCR集合1809内のレコード数が閾値
より小さい場合、CR集合1809の順次走査が使用され得る。CR集合1809内に示
される書き込みの全てが要求トランザクションの読み出しのうちのいずれとも重複しない
場合、トランザクション要求の準備中に読み出されたデータ全ては、それらが読み出され
て以降変更し得なかったため、トランザクションは受諾され得る。少なくとも一実施形態
において、トランザクション要求記述子はまた、競合検査対象となるトランザクションレ
コードのシーケンス番号の上限も示す。例えば、競合検査デリミタは、CS1852の集
合内の開始ポイント及び終了ポイントの両方を示し得る。
楽観的ログベース並行処理制御の方法
図19は、少なくともいくつかの実施形態による、ログサービスで行われ得る制御プレ
ーン動作態様を示すフロー図である。示される管理または設定関連動作のうちの少なくと
もいくつかは、例えばログサービスに実装される1つまたは複数の管理プログラマチック
インターフェースの呼び出しに応じて、図15に例示されるようなログサービスマネジャ
ー1501により実行され得る。構成要素1901に示されるように、1つまたは複数の
データストアは、例えば前述の読み出し書き込み競合検出手法を使用して楽観的並行処理
制御機構を実施するログサービスを介して、トランザクション管理に登録され得る。それ
ぞれの別個の読み出しインターフェースを有する様々な種類のデータストアのトランザク
ション管理は、異なる実施形態において、ログベース手法を使用して実施され得る。様々
な種類のデータストアには、例えばリレーショナルデータベース、非リレーショナルデー
タベース、インメモリデータベース、プロバイダネットワーク実施格納サービス、分散キ
ャッシュコンポーネント、事前演算クエリ結果マネジャー、スナップショットマネジャー
、待ち行列サービス、通知サービス等のインスタンスが含まれる。いくつかの実施形態に
おいて、所定のログインスタンスを使用して管理される一部または全ての基礎データスト
アは、いくつかの従来型リレーショナルデータベースシステムにより対応されるACID
特性(原子性、一貫性、独立性、及び耐久性)のうちの少なくともいくつかに対応し得な
い。
ログサービスは、例えばプロバイダネットワークで実施されるプロビジョニングサービ
スの助力を得て、登録データストアのために実施する持続的変更ログの複製DAGノード
に使用するホスト集合を特定し得る(構成要素1904)。1つまたは複数のホストは、
複製DAGの構成マネジャーのためにも特定され得る。例えば、前述のように、DAG構
成変更を実施するために同意ベースプロトコルを使用するノードのクラスタが、いくつか
の実施態様において使用され得る。複製ノード及び構成マネジャーは、選択されたホスト
においてインスタンス化され得る。競合検出器、1つまたは複数の書き込みアプライヤ、
及び持続的変更ログの任意の読み出しインターフェースマネジャーを含むログベーストラ
ンザクション管理機構の他のコンポーネントが設定され得る(構成要素1907)。ログ
の読み出しインターフェースマネジャーは、いくつかの実施形態において、ログに直接提
出される(登録データストアの読み出しインターフェースに提出される代わりに)読み出
し要求に応答する責務を担い得る。一例示的実施態様において、ログにおいてトランザク
ションがコミットされると、通知に従うそれぞれのプロセスまたはスレッドとして書き込
みアプライヤがインスタンス化され得る。競合検出器は、いくつかの実施形態において、
ログの読み出しインターフェースを使用するモジュールを備え得る。競合マネジャーの設
定は、例えば、重複排除または順序付けに対応する制約検査動作に対し読み出し書き込み
競合が特定される順序、クライアントに応答が提供される方法(例えばトランザクション
拒否/コミットに関してクライアントが通知されるか否か、並びにどのように通知される
か)等を確立することを含み得る。いくつかの実施形態において、競合検出器、書き込み
アプライヤ、及び/またはログ読み出しインターフェースマネジャーは、マルチテナント
様式で実装され得る。例えば、所定の競合検出器、書き込みアプライヤ、または読み出し
インターフェースマネジャーは、それぞれのログインスタンスが確立された複数のクライ
アントに対し自身のサービスを提供し得る。
持続的変更ログの様々なコンポーネントが設定された後、例えば適切なネットワークア
ドレス及び/または認証情報をクライアントに提供することで、クライアントからのトラ
ンザクション要求の流れが可能になり得る(構成要素1910)。少なくともいくつかの
実施形態において、ログサービスにて行われる制御プレーン動作は、格納されたトランザ
クションステートレコードを部分的に削減またはアーカイブすることを含み得る(構成要
素1914)。いくつかのこのような実施形態において、例えば、所定の持続的変更ログ
のトランザクションレコードに使用される格納量が閾値を超える場合、複数の最古トラン
ザクションレコードは、異なる格納設備(プロバイダネットワーク格納サービス、または
近頃のトランザクションレコード集合に使用される格納デバイスよりも遅い格納デバイス
集合等)にコピーされ得る。別の実施形態において、最古トランザクションレコードは、
単純に破棄され得る。少なくとも一実施形態において、例えば第1変更ログが閾値レコー
ド保有数に達した場合、持続的変更ログのあるインスタンスを別のものと交換する等の他
の制御プレーン動作は、必要に応じて実行され得る。
図20は、少なくともいくつかの実施形態による、クライアントから受信されるトラン
ザクション要求に応じてログサービスで行われ得る動作態様を示すフロー図である。構成
要素2001に示されるように、ログサービスの競合検出器は、例えば競合検査デリミタ
と、読み出し集合と、持続的変更ログがログサービスにより確立された1つまたは複数の
データストアにおけるそれぞれの位置に対する1つまたは複数の書き込みを含む書き込み
集合とを示す、トランザクションT1のトランザクション要求記述子を受信し得る。競合
検査デリミタは、トランザクションの読み出しの結果の取得元となる1つまたは複数のソ
ースデータストアのコミット済みステートを示し、従ってコミット済みステート識別子(
CSI)として機能し得る。CSIはまた、ソースデータストアの時点論理スナップショ
ットに対応し得るため、いくつかの環境において「スナップショットシーケンス番号」と
も称され得る。例えば競合検査デリミタと、ログに格納されたトランザクションレコード
のシーケンス番号とを使用して、要求トランザクションとの可能性のある競合を検査する
ための、持続的変更ログに格納されたトランザクションレコードの集合S1が特定され得
る(構成要素2004)。このような集合S1は、例えば、一実施形態において、競合検
査デリミタ内に示されるシーケンス番号より大きいコミットシーケンス番号を有するトラ
ンザクションのレコード全てを含み得る。
読み出し書き込み競合が検出された場合(構成要素2007)、例えば要求トランザク
ションの読み出し集合は集合S1のトランザクションのうちの1つの書き込み集合と少な
くとも部分的に重複する場合、トランザクションT1は、拒否または破棄され得る(構成
要素2022)。いくつかの実施形態において、このような重複が存在するか否かを判定
するためにハッシュ関数が使用され得る。例えば読み出し集合のハッシュ値が書き込み集
合と同じ場合、競合が生じたと推測され得る。いくつかの実施態様において、受信したト
ランザクション要求の送信元であるクライアントに対し拒否の開示または通知が提供され
、これによりクライアントは、別の要求記述子を生成、提出してトランザクションを再試
行することが可能になる。競合が検出されなかった場合(同様に構成要素2007にて判
定)、T1はコミットのために受諾され得る(構成要素2010)。描かれた実施形態に
おいて、T1のトランザクションレコードの複製が、持続的格納域に対し、例えばログの
複数の複製DAGノードにおいて開始され得る。いくつかの実施形態において、T1がコ
ミットのために受諾された場合、受諾シーケンス番号がT1に割り当てられ、受諾シーケ
ンス番号は、トランザクション要求記述子構成要素のうちの少なくともいくつかのコンテ
ンツと一緒に各レプリカに格納され得る。少なくとも一実施形態において、受諾シーケン
ス番号は、トランザクションが最終的にコミットされた場合に、コミットシーケンス番号
として使用され得る。
トランザクションT1のコミットが完了する前に、トランザクションが管理されている
アプリケーションのデータ耐久性要求に応じて、レプリカの閾値数が格納される必要があ
り得る。十分な数のレプリカが保存されると(構成要素2013にて判定)、コミットは
成功したと推測され、コミット完了に関して、いくつかの実施形態において要求クライア
ントに対し通知が行われ得る(構成要素2014)。ある理由で持続的格納域に保存され
得るレプリカの数が要求される閾値を下回る場合(同様に構成要素2013にて検出)、
トランザクションはアボート/拒否され得る(構成要素2022)。T1コミット後、描
かれた実施形態において、T1の書き込み集合内に示される書き込み動作は、例えば非同
期書き込みアプライヤにより、対応データストアまたはデータコンシューマに適用され得
る(構成要素2016)。いくつかの実施形態において、書き込みアプライヤのうちの少
なくとも1つは同期式であり得る。例えば、更新が同期的に適用されるトランザクション
の書き込みの部分集合をこのような同期書き込みアプライヤが完了して初めて、トランザ
クションはコミットされたことがクライアントに対し通知され得る。更新が適用された後
、更新されたデータ要素は、それぞれのデータストアの読み出しインターフェースを介し
て受信されるクライアント読み出し要求に応じて読み出され得る(構成要素2019)。
様々な登録済みデータストアにより対応される読み出しインターフェースに加えて、少な
くともいくつかの実施形態において、持続的変更ログ自体も、例えばログサービスのプロ
グラマチッククエリ/読み出しインターフェースを介して、トランザクションレコードコ
ンテンツに関して直接問い合わせられ得る。データストアはログ内に既に存在する書き込
みを伝播するために非同期アプライヤに依存し得るため、いくつかの実施態様において、
このようなログサービスインターフェースを介してログを対象とする読み出しは、データ
ストアを対象とする読み出しよりも、場合によってはより速く書き込み動作の結果を参照
することが可能であり得る。いくつかの実施形態において、トランザクションがログにコ
ミットされるとすぐにデータストアに書き込みを伝播する同期アプライヤが使用され得る
。別の実施形態において、各アプライヤは、書き込みが対応データストアまたはコンシュ
ーマに伝播されなければならない設定可能時間窓を有し得るため、トランザクションコミ
ットと、データストアにおけるトランザクションの変更データの出現との間の最大遅延を
調整することが可能となる。
図21は、少なくともいくつかの実施形態による、それぞれの特例整合性目標を達成す
るために使用され得るトランザクション要求記述子の実施例を示す。一実施形態において
、ログサービスのクライアントは、書き込みがコミットされるとすぐにそれが全てのリー
ダーで参照可能となる「読み出し後書き込み」整合性セマンティックを施行することを所
望し得る。読み出し後書き込み整合性を確保するために、すなわち読み出しでは常にデー
タのコミット直後に当該データを確実に「参照」するように、クライアントは、読み出し
専用トランザクションであっても(並びに書き込みを含むトランザクションに関しても)
トランザクション要求を提出することを所望し得る。読み出し専用トランザクション要求
記述子(TRD)2144は、例えば、空書き込み集合2106Aと空書き込みペイロー
ド2108Aとを有するが、非空競合検査デリミタ2102Aと非空読み出し集合記述子
2104Aとを有する。このような読み出し専用トランザクション要求記述子を受信する
と、競合検出器は、要求内に示される読み出し集合と、競合検査デリミタ内に示されるシ
ーケンス番号より大きいシーケンス番号を有するコミットされた書き込みとの間に、重複
が存在するか否かを調べ得る。競合が検出された場合、読み出し専用トランザクションは
拒否され、従って、要求トランザクションがこれらの読み出しに依存するいずれの書き込
みも含まないにもかかわらず、競合検査デリミタが生成された後に書き込みがコミットさ
れ得た位置に対する読み出しは却下される。
少なくともいくつかの実施形態において、書き込み専用トランザクション要求が、特定
の状況下でログサービスに提出され得る。いくつかのアプリケーションに関して、クライ
アントは、少なくともいくつかの時間帯において、またはいくつかのデータストアに関し
て、読み出し書き込み整合性検査を施行することを所望しない場合もあり得る。代わりに
、クライアントは、このような時間帯において、いくつかの書き込みがコミットのために
無条件に受諾されることを所望し得る。従って、空読み出し集合2104B及び/または
空競合検査デリミタ2102Bを有し、非空書き込み集合記述子2106B及び非空書き
込みペイロード2108Bを有するトランザクション要求記述子2145が提出され得る
。例えばデータストアまたはオブジェクトが初めにデータ投入されている場合、またはあ
る時間帯に1つの書き込みクライアントのみが要求を提出していることが分かっている場
合、このような書き込み専用要求が提出され得る。
前述のように、いくつかの実施形態において、持続的変更ログからのコミット済み書き
込みのコンテンツを様々なデータストアまたはデータコンシューマに対し伝播するために
、非同期書き込みアプライヤが使用され得る。書き込み伝播の非同期的特性の結果、いく
つかの時点で、コミット済み書き込み集合がそれらの対象データストアへまだ伝播されて
いない場合もあり得る。少なくとも一実施形態において、書き込み専用トランザクション
を使用して、このような非適用済み書き込みをフラッシュすることが可能であり得る。例
えば、特定の書き込みアプライヤWA1が所定のデータストアDS1に対し未処理の非適
用済み書き込みをN個までしか有さないように構成される場合、クライアントは、未処理
のコミット済み書き込みをフラッシュするために特にまたは主に使用されるDS1内の特
別書き込み位置WL1に対し、TRD2145等の書き込み専用トランザクション要求記
述子を提出し得る。いくつかの事例において、このようなTRDは、いずれの書き込みペ
イロードも全く有さなくてもよい(例えば、書き込みペイロード2108Bはヌルに設定
され得る)。このような書き込み適用フラッシュトランザクション要求が受諾されると、
新たな未処理コミット済み書き込みがログとWA1の未処理要求待ち行列とに追加され得
る。待ち行列の長さが増大すると、WA1は、非適用済み書き込みはN個以下という自身
の要件を満たすために、待ち行列内の早期コミット済み書き込みを適用し始める必要があ
り得る。いくつかの実施形態において、確実にコミット済み書き込みが長時間未処理の状
態で残されないように、このような書き込み適用フラッシュ要求は、例えば1秒に1度等
、定期的に提出され得る。書き込み適用フラッシュトランザクションのコミット済み書き
込みがアプライヤの待ち行列の先頭に達した時、いくつかの実施態様において、物理的書
き込みが実行される必要はない。代わりに、例えばアプライヤは単純に、トランザクショ
ンに対応するコミットシーケンス番号を最新「適用済み」書き込みのインジケータとして
、目的データストアへ送信し得る。
いくつかのアプリケーションに関して、クライアントは、少なくともいくつかの時間帯
において、厳密なシリアライゼーションを施行することを所望し得る。すなわち、トラン
ザクション中のデータ読み出しと、トランザクション準備が開始されてからコミットされ
得た書き込みとの間に任意の競合が存在するか否かにかかわらず、1度に1つのみの(書
き込み含有)トランザクションを進行することが許され得る。このようなシナリオにおい
て、クライアントは、ログサービスに対し、厳密シリアライゼーショントランザクション
要求記述子2146を、アプリケーションにより使用された全てのデータ集合の全コンテ
ンツを示すその読み出し集合記述子2104Cと共に提出し得る。読み出し/書き込み位
置のインジケータとしてハッシュ値が使用され、かつ競合検出のために書き込み集合エン
トリとのビット単位比較が使用される一実施態様において、例えば、読み出し集合記述子
2402Cに含まれるハッシュ値は、一連の「1」(例えば16ビットのハッシュ値の場
合「1111111111111111」)に設定され得る。このようなTRD2146
の競合検査デリミタ2102Cより大きいCSNと共に、任意の書き込み含有トランザク
ションがコミットされた場合、TRD2146に対応するトランザクションは拒否され得
る。従って、書き込み集合記述子2106Cにより示される書き込みと、書き込みペイロ
ード2108Cとは、記述子により示される競合検査間隔内に他の書き込みがコミットさ
れていない場合にのみ(このような書き込みの位置に関係なく)、コミットされる。
重複排除及び順序付け制約
いくつかの実施形態において、ログサービスのクライアントは、重複エントリが1つま
たは複数のデータストアに対し確実に書き込まれないことを所望し得る。このような一実
施形態において、ログサービスは、前述の読み出し書き込み競合検出を行うことに加えて
、トランザクション要求内に示される重複排除要件も施行する必要があり得る。図22は
、少なくともいくつかの実施形態による、ログベーストランザクションマネジャーで受信
されるトランザクション要求に対応付けられた重複排除制約を施行する実施例を示す。示
されるように、トランザクション要求記述子2244は、読み出し書き込み競合検査デリ
ミタ2212と、読み出し集合記述子2214と、書き込み集合記述子2216と、論理
制約デリミタ2218とを備える。TRD2244の書き込みペイロードは、図22に図
示されない。論理制約記述子2218は、描かれた実施形態において、論理制約種類は重
複排除制約であることを示すLC種類フィールド2219と、重複排除検査デリミタ22
20と、排除シグネチャ(複数可)2222とを含む。
要求トランザクションを受諾するか否かを判定するために、ログサービスは、描かれた
実施形態において、2種類の検査を行う必要があり得る。1つは読み出し書き込み競合検
出であり、もう1つは重複検出である。持続的変更ログ2210内のコミットレコード2
252はそれぞれ、描かれた実施形態において、それぞれのコミットシーケンス番号(C
SN2204)と、書き込み集合記述子(WSD)2205と、重複排除シグネチャ(D
DS)2206とを含み得る。読み出し書き込み競合が起こったか否かを判定するために
、ログサービスは、読み出し書き込み競合検査デリミタ2212に対応するシーケンス番
号から始まり、最新コミットレコード2252Fで終わるCR集合2209を特定し得る
。当該CR集合2209の書き込み集合は、要求トランザクションの読み出し集合記述子
2214との重複に関して調べられる。読み出し書き込み競合が検出された場合(すなわ
ちそのような重複が存在する場合)、要求トランザクションは前述のように拒否され得る
要求トランザクションの書き込み(複数可)が重複を表すか否かを判定するために、描
かれた実施形態において、重複排除検査デリミタ2220に対応するシーケンス番号から
始まり、最新コミットレコード2252Fで終わる別のCR集合2259が特定され得る
。CR集合2259内のそれぞれのコミットレコードに関して、ログサービスは、コミッ
トレコードに格納された重複排除シグネチャのうちのいずれかが、要求トランザクション
の排除シグネチャ(複数可)2222に一致するか否かを調べ得る。重複はこのような一
致が見つかった場合に検出され、そしてこのようなシナリオにおいて、要求トランザクシ
ョンは、読み出し書き込み競合が検出されなかったとしても、拒否され得る。重複が検出
されなかった場合、かつ読み出し書き込み競合が検出されなかった場合、トランザクショ
ンはコミットのために受諾され得る。
少なくともいくつかの実施形態において、重複排除シグネチャ2206は、対応トラン
ザクションにより書き込まれるデータアイテムを、書き込み集合記述子とは異なる様式で
(例えば異なるハッシュ関数を使用して生成されたハッシュ値で、またはより多くのビッ
トを使用して記憶されたハッシュ値で)表現し得る。書き込み集合のこのような異なる符
号化は、多数の理由のうちのいずれかの理由から、重複排除あるいは読み出し書き込み競
合検出に使用され得る。例えば、いくつかのアプリケーションに関して、クライアントは
、誤判定読み出し書き込み競合検出の結果から時折トランザクションを再提出する必要が
あることよりも、正確に重複を検出することにより一層関心を持ち得る。そのため、この
ようなアプリケーションに関して、読み出し書き込み競合検出におけるエラーの許容レー
トは、重複検出エラーの許容レートよりも高くあり得る。従って、いくつかの実施態様に
おいて、出力値が128または256ビットになる暗号化強度ハッシュ関数が、重複排除
シグネチャに使用され、一方で出力が16ビットまたは32ビットを使用して記憶される
より単純なハッシュ関数が、WSD内に含まれる書き込みシグネチャに使用され得る。い
くつかのシナリオにおいて、重複排除は、使用されているデータストアの小部分集合に必
要であり、一方で読み出し書き込み競合は、トランザクションのはるかに大きい集合に関
して調べられる必要があり得る。このような場合、いくつかの実施形態において、重複排
除シグネチャよりも小さいWDSシグネチャを使用することにより、格納及びネットワー
クリソース使用量は削減され得る。読み出し書き込み競合検出機構と重複排除検出機構を
合体させる代わりに、読み出し書き込み競合検出機構を重複排除検出機構から論理的に切
り離すことは、例えばログサービスのユーザ間の混乱を避けるため、重複排除の別個の請
求に対応可能であるため等の他の理由からも、有益であり得る。
別の実施形態において、読み出し書き込み競合検出と重複排除の両目的のために、書き
込み集合記述子が使用され得る(例えば別個の排除シグネチャは使用され得ない)。同様
に、いくつかの実施形態において、同一のシーケンス番号値が、読み出し書き込み競合検
査デリミタ及び重複排除検査デリミタとして使用され得る。すなわち、読み出し書き込み
競合に関して調べられるコミットレコード集合は、重複に関しても検査され得る。少なく
とも一実施形態において、重複排除は、例えば書き込み集合記述子を使用して、トランザ
クション要求記述子に論理制約記述子を含める必要なしに、デフォルトで実行され得る。
いくつかのアプリケーションに関して、クライアントは、特定のトランザクション集合
間にコミット順序を施行することに関心を持ち得る。例えば、トランザクションT1、T
2、T3それぞれに対する3つの異なるトランザクション要求を提出するクライアントは
、T1はT2の前にコミットされ、T3はT1とT2が両方ともコミットされた後にのみ
コミットされることを所望し得る。このようなコミット順序付け制約は、いくつかの実施
形態において、第2種の論理制約記述子を使用して施行され得る。図23は、少なくとも
いくつかの実施形態による、ログベーストランザクションマネジャーで受信されるトラン
ザクション要求に対応付けられた順序付け制約を施行する実施例を示す。示されるように
、トランザクション要求記述子2344は、読み出し書き込み競合検査デリミタ2312
と、読み出し集合記述子2314と、書き込み集合記述子2316と、図22の論理記述
子2218とは異なる種類の論理制約デリミタ2318とを備える。TRD2344の書
き込みペイロードは、図23に図示されない。論理制約記述子2318は、描かれた実施
形態において、論理制約種類は順序付け制約であることを示すLC種類フィールド231
9と、順序付け検査デリミタ2220と、トランザクションT1、T2にそれぞれ対応す
る要求順序付けシグネチャ2322A、2322Bとを含む。論理制約記述子2318は
TRD2344に含まれ、両トランザクションT1、T2(順序付けシグネチャ2322
A、2322Bにより示される)が先にコミットされた場合にのみ要求トランザクション
はコミットされることを確実にし得る。
要求トランザクションを受諾するか否かを判定するために、ログサービスはもう1度、
図23に示される実施例における2種類の検査を行う必要があり得る。1つは読み出し書
き込み競合検出であり、もう1つはトランザクションT1、T2がコミットされたことを
確認することである。持続的変更ログ2310内のコミットレコード2352はそれぞれ
、描かれた実施形態において、それぞれのコミットシーケンス番号(CSN2304)と
、書き込み集合記述子(WSD)2305と、順序付けシグネチャ2306とを含み得る
。読み出し書き込み競合が起こったか否かを判定するために、前述同様に、ログサービス
は、読み出し書き込み競合検査デリミタ2312に対応するシーケンス番号から始まり、
最新コミットレコード2352Fで終わるCR集合2309を特定し得る。当該CR集合
の書き込み集合は、要求トランザクションの読み出し集合記述子2314との重複に関し
て調べられる。読み出し書き込み競合が検出された場合(すなわちそのような重複が存在
する場合)、要求トランザクションは拒否され得る。
要求トランザクションの順序付け制約が満たされたか否かを判定するために、描かれた
実施形態において、順序付け検査デリミタ2320に対応するシーケンス番号から始まり
、最新コミットレコード2352Fで終わる別のCR集合2359が特定され得る。ログ
サービスは、要求シグネチャ2322A、2322Bと一致する順序付けシグネチャを有
するそれぞれのコミットレコードが、CR集合2359内に存在することを確認する必要
があり得る。要求シグネチャ2322のうちの少なくとも1つがCR集合2259内に見
つからない場合は、順序付け制約に違反することとなり、読み出し書き込み競合が検出さ
れなかったとしても、要求トランザクションは拒否され得る。両方の順序付けシグネチャ
がCR集合2359内に見つかった場合、かつ読み出し書き込み競合が検出されなかった
場合、トランザクションはコミットのために受諾され得る。
CR2352内(及びTRD2344内)に格納される順序付けシグネチャは、異なる
実施形態において様々な技術を使用して生成され得る。いくつかの実施形態において、そ
れらはトランザクションの書き込み集合から生成され得る。別の実施形態において、順序
付けシグネチャは、他の要素に少なくとも部分的に基づき得る。例えば、いくつかの実施
形態において書き込みシグネチャに加えて要求クライアントの識別が順序付けシグネチャ
に符号化され得る、トランザクションが要求された実時間が順序付けシグネチャに符号化
され得る、あるいはトランザクションが要求された元の位置の開示が符号化され得る等が
ある。いくつかの実施形態において、順序付けシグネチャを表すために、書き込み集合シ
グネチャとは異なる技術を使用することに関して、前述と同様の考察が適用され得る。従
って、いくつかの実施形態において、順序付けシグネチャと書き込み集合シグネチャの両
方が同一の基礎書き込み位置から導出されるとしても、書き込み集合記述子コンテンツを
生成するために使用される技術とは異なる技術が、順序付けシグネチャを生成するために
使用され得る。例えば、異なるハッシュ関数または異なるハッシュ値サイズが使用され得
る。しかしながら別の実施形態においては、読み出し書き込み競合検出と順序付け施行の
両目的のために、書き込み集合記述子が使用され得る(例えば別個の順序付けシグネチャ
は使用され得ない)。同様に、いくつかの実施形態において、同一のシーケンス番号値が
、読み出し書き込み競合検査デリミタ及び順序付け検査デリミタとして使用され得る。す
なわち、読み出し書き込み競合に関して調べられるコミットレコード集合は、順序付けに
関しても検査され得る。いくつかの事例においては、書き込み集合とは無関係の任意の数
字または文字列が、順序付けシグネチャとして使用され得る。少なくとも一実施形態にお
いて、制約記述子はLC種類フィールドを含み得ない。代わりに制約の種類は、トランザ
クション要求内における制約記述子の位置により示され得る。いくつかの実施形態におい
て、例えば、LC種類フィールドを使用する代わりに、「要求」フラグが順序付けシグネ
チャに対応付けられ、そして「排除」フラグが重複排除シグネチャに対応付けられ得る。
読み出し書き込み競合検査デリミタに関連して前述されたように、いくつかの実施形態に
おいて、制約検査に関して調べられるべきコミットレコードの範囲を示すために、CSN
の下限のみを指定する代わりにCSNの上限もトランザクション要求記述子内で指定され
得る。
いくつかの実施形態において、図23に例示される順序付け制約よりも複雑な順序付け
制約が施行され得る。例えば、クライアントは、ログサービスに対し単純に、要求トラン
ザクションのコミットより前に両トランザクションT1、T2が必ずコミットされたこと
(任意の順序で)を確認するよう要求する代わりに、T1が必ずT2より前にコミットさ
れたことを要求することが可能であり得る。同様に、いくつかの実施形態において、クラ
イアントは、例えば、要求トランザクションの前に、あるトランザクション集合{T1、
T2、Tk}がある特定の順序で(または任意の順序で)コミットされなければならない
、かつある他のトランザクション集合{Tp、Ts}はコミットされてはならないといっ
た、否定的順序要件を要求することも可能であり得る。
図22及び図23において、表示されたトランザクション要求内には、単一の種類の論
理制約が示された。いくつかの実施形態において、クライアントは、様々なトランザクシ
ョン上でいくつかの異なる種類の論理制約を施行することを所望し得る。図24は、少な
くともいくつかの実施形態による、複数の論理制約記述子を含むトランザクション要求記
述子の実施例を示す。トランザクション記述子2444により表される同一の要求トラン
ザクションに対し、1つの順序付け制約が適用され、かつ1つの重複排除制約が適用され
る。描かれた実施形態において、読み出し書き込み集合記述子は、読み出されるまたは書
き込まれるデータアイテムごとに、32ビット(4バイト)のハッシュ値を有する。例え
ば、それぞれの4バイト読み出しハッシュシグネチャ2464A、2464Bは、読み出
し集合記述子2404内で2つのデータアイテム位置を示し、そしてそれぞれの4バイト
書き込みハッシュシグネチャ2465A、2465Bは、書き込み集合記述子2406に
含まれ、トランザクションがコミットされると書き込み対象となる2つの位置を示す。読
み出し書き込み競合検査デリミタ2402は、持続的変更ログ内のシーケンス番号範囲の
下限を選択するために使用され、当該シーケンス番号範囲のコミットレコードは、要求ト
ランザクションとの読み出し書き込み競合の検査対象となる。
トランザクション要求記述子2444はまた、描かれた実施形態において、順序付け制
約記述子2408Aと、重複排除制約記述子2408Bとを含み得る。順序付け制約記述
子2408Aは、制約種類フィールド2409Aと、順序付け検査デリミタ2410と、
要求トランザクションが受諾されるためにはコミットが完了してなければいけないトラン
ザクションに対応する1つまたは複数の要求順序付けシグネチャ2412A、2412B
等とを含み得る。重複排除制約記述子2408Bは、制約種類フィールド2409Bと、
重複排除検査デリミタ2420と、重複排除シグネチャ2422とを含み得る。
示されるように、描かれた実施形態において、要求順序付けシグネチャ2412A、2
412Bと重複排除シグネチャ2422は、128ビット(16バイト)ハッシュシグネ
チャ2466A、2466B、2467をそれぞれ備え得る。このように、論理制約シグ
ネチャはそれぞれ、描かれた実施例において読み出し及び書き込み集合シグネチャのデー
タアイテムごとに使用されるビットの4倍のビットを使用し得る。これにより、論理制約
関連比較のハッシュ衝突数は、読み出し書き込み競合検出のために行われる比較と比べて
、低減され得る。いくつかの実施形態において、順序付け及び/または重複排除シグネチ
ャのために、MD5等の暗号化ハッシュ関数が使用され得る。少なくともいくつかのこの
ような実施形態において、暗号化ハッシュ関数の使用のおかげで、論理制約検査における
エラー確率は、ゼロ近くまでに低減され得る。誤判定ハッシュ衝突に(例えば誤判定読み
出し書き込み競合検出に)基づいたトランザクション拒否レートは合理的に低く、容認可
能であり得るが、少なくともいくつかのクライアントは、誤判定ハッシュ衝突(例えばコ
ミット順序付けの場合)によるトランザクションの受諾を回避することに一層関心を持ち
、そして暗号化強度ハッシュ関数の使用のおかげで、このようなトランザクション誤受諾
は回避され得る。いくつかの実施態様において、クライアントは、重複検出及び/または
順序付け目的で使用するハッシュ関数を選択可能であり得る。いくつかの実施形態におい
て、重複排除シグネチャ、順序付けシグネチャ、及び/または読み出しもしくは書き込み
シグネチャに、図24に示されるものとは異なるハッシュ関数及び/またはハッシュ値の
長さが使用され得る。例えば、重複排除及び順序付けシグネチャは、サイズで異なり得る
。少なくともいくつかの実施形態において、読み出し/書き込み集合シグネチャ、重複排
除及び/または順序付けシグネチャに、読み出されるまたは書き込まれるデータアイテム
のアドレスが、例えばアドレスから生成されるハッシュ値を使用する代わりに、使用され
得る。一実施形態において、重複排除及び/または書き込みシグネチャは、データが書き
込まれる先の位置から導出されることに加えて、またはこれに代わって、書き込みペイロ
ードから導出され得る。
いくつかの実施形態において、データ完全性/有効性制約、または最終コミット期限制
約等の追加論理制約も、トランザクション要求記述子内に指定され得る。例示的データ完
全性または有効性制約は、例えば特定の値V1は、異なる値V2がデータストアDS1ま
たはある他のデータストアに既に格納されている場合にのみデータストアDS1に格納さ
れ得ることを、要求し得る。データ有効性制約は、特定のデータ種類または格納するデー
タアイテムに対し、許容範囲(無条件、または指定データストア位置の格納値に関して条
件付き)を定義し得る。コミット期限制約は、トランザクションのコミットが完了される
べき最終期限を示し、最終期限が満たされない場合、トランザクションは中止またはアボ
ートされなくてはならないという意図がある。
図25は、少なくともいくつかの実施形態による、1つまたは複数の論理制約を示すト
ランザクション要求に応じてログサービスで行われ得る動作態様を示すフロー図である。
描かれた実施形態において、所定のトランザクションのコミット要件には、並行処理制御
要件(例えば前述の類の読み出し書き込み競合は見つからないという要件)、並びに論理
制約要件が含まれ得る。少なくともいくつかの実施形態において、重複排除及び順序付け
の両論理制約は、単一のトランザクションに関して対応され得る(他の論理制約も対応さ
れ得るが、重複排除及び順序付けに関わる動作のみが図25において示される)。構成要
素2501において示されるように、トランザクションT1の1つまたは複数の論理制約
記述子を含むトランザクション要求記述子が、ログサービスの特定の持続的変更ログイン
スタンスに対応付けられた競合検出器において受信され得る。描かれた実施形態において
、論理記述子ごとに対応検査デリミタが指定され、これは、論理制約を満たすか違反する
かを判定する分析対象となるコミットレコードの集合を選択するために使用される。1つ
または複数のシグネチャのそれぞれの集合も、論理制約ごとに指定され得る。要求トラン
ザクションの読み出し及び書き込み集合も、読み出し書き込み競合検査デリミタと一緒に
示され得る。前述のように、いくつかの実施形態において、読み出し書き込み競合の検査
に使用されるデリミタと同じデリミタが、1つまたは複数の論理制約に使用され得る。ま
た、少なくとも一実施形態において、論理制約に別個のシグネチャは必要ではあり得ない
。代わりに、例えば書き込み集合シグネチャが、重複排除及び/または順序付けシグネチ
ャとして使用され得る。
描かれた実施形態において、読み出し書き込み競合検査デリミタを使用して、分析対象
となるコミットレコード第1集合CRS1が特定され得る。このような集合は、例えば、
読み出し書き込み競合検査デリミタから始まり、最新格納コミットレコードのシーケンス
番号まで(またはトランザクション要求内に示される別の上限まで)の範囲内に存在する
シーケンス番号を有するコミットレコードを含み得る。読み出し書き込み競合が検出され
た場合(構成要素2504)(例えばCRS1のコミットレコードのうちのいずれかの書
き込み集合が、要求トランザクションの読み出し集合と重複する場合)、トランザクショ
ンは拒否/アボートされ得る(構成要素2531)。本明細書において、読み出し書き込
み競合の検査は、要求トランザクションが並行処理制御要件を満たすことの検証ともみな
され得る。いくつかの実施形態において、受信したトランザクション要求の送信元である
クライアントに対し、トランザクションがアボートされたことが通知され得る。
描かれた実施形態において、読み出し書き込み競合が検出されなかった場合(同様に構
成要素2504に対応する動作において)、対応記述子により示されるそれぞれの論理制
約が順次検査され得る。次の順序の論理制約記述子が調べられ、制約に対応付けられた検
査デリミタに基づいて、制約分析の対象となる新たなコミットレコード集合CRS‐kが
選択され得る(構成要素2507)。例えば、CRS‐kは、デリミタから始まり、記録
済み最大コミットシーケンス番号で終わる(またはトランザクション要求内に示される別
の上限までの)範囲内のシーケンス番号を有するコミットレコード全てを含み得る。行わ
れる分析は、論理制約記述子の種類に依存し得る。重複排除制約が検査内容であり、CD
R‐kの重複排除シグネチャと要求トランザクションを比較することで重複が見つかった
場合(構成要素2510)、トランザクションは同様に拒否/アボートされ得る(構成要
素2531)。制約が重複排除制約であり、重複が見つからなかった場合(同様に構成要
素2510にて検出)、かつまだ他に分析されていない論理制約がある場合、次の論理制
約記述子が調べられ、そして構成要素2507以降に対応する動作が次の論理記述子のた
めに繰り返され得る。
制約記述子がコミット済みトランザクションの1つまたは複数の要求シグネチャを示す
順序付け制約を示す場合、順序付け制約に関してCRS‐kが調べられ、コミットが完了
したトランザクションに関して要求シグネチャが実際に格納されたことが確認され得る。
要求トランザクションのコミットレコードが見つからなかった場合(構成要素2513に
て検出)、要求トランザクションは同様にアボート/拒否され得る(構成要素2531)
。要求トランザクションのコミットレコードが見つかった場合(同様に構成要素2513
に対応する動作において)、順序付け制約処理は完了し得る。読み出し書き込み競合検出
の場合のように、論理制約検査も、少なくともいくつかの実施形態において、比較のため
にハッシュ関数を使用して行われ、よってコミットレコード集合を走査するオーバーヘッ
ドは回避される。いずれかの論理制約記述子が残っている場合(構成要素2516)、そ
れらは順番に調べられ得る。論理制約記述子はもう残っていない場合(同様に構成要素2
516にて検出)、トランザクションはコミットのために受諾され得る。描かれた実施形
態において、トランザクションのコミットレコードを、持続的格納域に、例えば複製DA
Gのいくつかのノードに保存する手続きが開始され得る(構成要素2519)。複製が成
功した場合(例えば十分な数のコミットレコードのコピーが無事にそれぞれの格納デバイ
スに格納された場合)(構成要素2522にて検出)、トランザクションのコミットは完
了したとみなされ得る。ある理由で、要求される数のレプリカが格納されなかった場合、
トランザクションはやはり拒否/アボートされ得る(構成要素2531)。いくつかの実
施形態において、トランザクションが無事にコミットされたという通知が、要求クライア
ントへ送信され得る(構成要素2525)。
いくつかの実施形態において、代わりに複数の論理制約を検査する動作が並行して行わ
れ得る。一実施形態において、読み出し書き込み競合検出と論理制約検査の任意の組み合
わせが、並行して行われ得る。いくつかの実施形態において、それぞれの指示された論理
制約に関する応答が、制約のうちの1つまたは複数が満たされなかったとしても、要求ク
ライアントに対し提供され得る。例えば、重複排除制約と順序付け制約とを有するトラン
ザクション要求の場合、重複排除制約が満たされなかったとしても順序付け制約は検査さ
れ、そして両制約の調査結果がクライアントに対し提供され得る。いくつかの実施態様に
おいて、クライアントは、所定のトランザクション要求の論理制約の特定の部分集合また
は全てが検査されるように、明示的に要求することが可能であり得る。
ログ整合格納グループの価格設定ポリシー
少なくとも書き込み含有トランザクションが前述のようにログベーストランザクション
マネジャーを使用して集合的に管理されるデータストア集合は、本明細書において、ログ
整合格納グループ(LCSG)のメンバーデータストアと称され得る。例えば、LCSG
は、非リレーショナルデータベースの1つまたは複数のインスタンス、リレーショナルデ
ータベースの1つまたは複数のインスタンス、プロバイダネットワーク格納サービスの1
つまたは複数の格納オブジェクト、インメモリデータベースインスタンス、待ち行列サー
ビス実施の持続的待ち行列、通知サービス等の複数のデータストアインスタンスを含み得
る。データストアメンバーのためにインスタンス化された特定のログベーストランザクシ
ョンマネジャーも、LCSGの一部とみなされ得る。少なくともいくつかの実施形態にお
いて、LCSGによりユーザは、様々なデータストア横断動作を要求することが可能にな
り得る。例えば、LCSGにおいて所定のトランザクション内で行われる単一の論理書き
込みは、いくつかの異なるデータストアに適用される複数の物理的更新に最終的に変換さ
れ得る(すなわち結果的になる)。このようにして、同一の基礎変更に関するいくつかの
異なる見解は、データストアのそれぞれのデータアクセスインターフェースを介してアク
セス可能とされ得る。
格納システムクライアントが、持続性及びデータ耐久性のデータシステムインスタンス
と、書き込み要求の結果に対し低レイテンシアクセスのインメモリ分散キャッシュインス
タンスと、オフライン分析のデータウェアハウジングサービスと、長期記録保持のアーカ
イブ格納サービスとにおいて、同一の書き込み要求のデータペイロードを可視化すること
を所望するシナリオを検討する。一実施形態において、クライアントは、アプリケーショ
ンデータに対する所定の論理変化の対象として、4つのデータストアそれぞれを明示的に
示すトランザクションを構築し得る。別の実施形態において、データストア横断トランザ
クションに対応することに加えて、またはこれに代わって、LCSGがインスタンス化さ
れたログサービスは、全ての異なる書き込み対象が所定のトランザクション要求内で明示
的に指定されることを要さない自動データストア横断変換に対応し得る。その代わり、例
えば構成要求に応じて、またはLCSG設定中に、クライアントは、データベースインス
タンスに対するいずれの所定の書き込みに関しても、対応表現が自動でインメモリキャッ
シュ、データウェアハウジングサービス、及びアーカイブ格納サービスに伝播されるよう
に示すことが可能であり得る。いくつかの実施形態において、所定のペアのデータストア
間の両方向の変換が対応され得る。例えば、クライアントアプリケーションがデータベー
スインスタンスに直接書き込みを行う場合、書き込みの結果は、ログサービスによりイン
メモリキャッシュが望む好適な形式でインメモリキャッシュに自動で追加され、そしてク
ライアントアプリケーションがインメモリキャッシュに直接別の書き込みを行う場合、別
の書き込みの結果は、データベースインスタンスが望む形式でデータベースインスタンス
に自動で伝播され得る。
ログサービスは、いくつかの実施形態において、LCSGにおいて行われる動作に対し
、いくつかの異なる価格設定ポリシーを実施し、価格設定ポリシーのうちの少なくともい
くつかは、クライアントのために行われる動作種類の混合比に基づき得る(例えば、単一
データストアに対する書き込みを伴った動作の数に対し、いくつのデータストア横断変換
及び/またはトランザクションがある時間間隔に行われたか)。所定の請求期間にLCS
G顧客に課される請求額は、後述の多数の要因、及び顧客のために、または顧客により選
択された価格設定ポリシー(複数可)に基づいて変わり得る。後述の価格設定ポリシーの
うちの少なくともいくつかは、所定のクライアントに対し、お互い組み合わせて使用され
得る。例えば、段階的価格設定が、準備スループット型及びベストエフォート型の両リソ
ース割り当てモードに適用され、そしてLCSGの各データストアに対し、それぞれの準
備スループット型価格設定ポリシーが適用され得る。
少なくとも一実施形態において、所定のLCSGに含まれる異なるデータストアの数、
含まれるデータストアの種類、及び/またはクライアントのために行われるデータストア
横断動作の数(例えば最初特定のデータストアを対象とする書き込みの第2表現を別のデ
ータストアに生成することを伴う動作またはトランザクション)が、請求額に影響し得る
。例えば、1つの価格設定ポリシーに従うと、8つのデータストアを有するLCSGを確
立することは、全体の作業負荷レベル及び/またはデータ集合サイズ等の他の要素が同一
であると仮定すると、4つのデータストアを有するLCSGを確立する場合よりも費用が
かかり得る。他の例示的価格設定ポリシーに従うと、特定の作業負荷レベルに対応する4
つのリレーショナルデータベースインスタンスを有するLCSGは、同じ作業負荷レベル
に対応する4つのインメモリデータベースインスタンスを有するLCSGよりも費用がか
かり得る。いくつかの実施形態において、クライアントは、行われたデータストア横断動
作ごとに特定の額が請求され得る。一実施形態において、データストア横断動作の費用も
また、関与するデータストアの種類に基づいて異なり得る。例えば、最初リレーショナル
データベースを対象とする書き込みをインメモリデータベースにおける追加書き込みに変
換する動作は、最初非リレーショナルデータベースを対象とする書き込みをインメモリデ
ータベースにおける別の書き込みに変換する動作とは異なる額がかかり得る。いくつかの
実施形態において、書き込み伝播の方向もまた、動作の価格に影響し得る。例えばデータ
ストアDS1からDS2への書き込み変換は、DS2からDS1への書き込み変換とは異
なる額がかかり得る。
いくつかの実施形態において、いくつかのモードのうちの1つのモードのLCSGが使
用するプロバイダネットワークにおいて、リソース(演算サーバ、格納デバイス、ネット
ワーク帯域、メモリ等)が割り当てられ得る。準備スループットモードのリソース割り当
てにおいて、ログサービスのクライアントは、LCSGのメンバーとして登録される特定
のデータストアに対し目標スループットレート(例えば毎秒100トランザクション)を
指示し、ログサービスは、要求されるスループットに耐えられるような十分なリソースを
確保し得る(例えば障害がないといった少なくとも通常の動作条件下で)。準備スループ
ットモードに基づいた価格設定ポリシーに従って、所定の請求期間中にクライアントによ
り投入された実際の作業負荷が図らずも目標を下回ったとしても、クライアントは目標ス
ループットレート分請求され得る。いくつかの実施形態において、所定のLCSGの様々
なデータストアに対して、異なる準備スループットがクライアントにより要求され得る。
いくつかの実施形態によれば、準備スループットに対する請求レートは、データストアに
よって異なり得る。例えば、非リレーショナルデータベースの毎秒100トランザクショ
ンの準備スループットに対するレートは、同じLCSGのメンバーであるリレーショナル
データベースの毎秒100トランザクションの準備スループットに対するレートとは異な
り得る。
少なくともいくつかの実施形態において、ベストエフォートモードと呼ばれる別のモー
ドのリソース割り当てにおいて、ログサービスは、必ずしもクライアントの指定目標スル
ープットに対応するリソースを確保または献呈し得ない。代わりに、例えば、共有プール
(複数可)からのリソースが、クライアントのLCSGに割り当てられ得る。クライアン
トの作業負荷レベルは変動するため、ログサービスは、例えば共有プール内の利用可能能
力に基づいて、クライアントに割り当てられたリソース集合に対し、ベストエフォート調
整を行い得る。少なくともいくつかの実施形態において、同じ作業負荷レベルに対して、
ベストエフォート型リソース割り当てモードの価格設定ポリシーは、準備スループット型
リソース割り当てモードの価格設定ポリシーとは、請求レートが異なり得る。いくつかの
実施形態において、準備スループットの事例のように、ベストエフォート型リソース割り
当てに関しても、異なるデータストアに対し異なる請求レートが適用され得る。
少なくとも一実施形態によれば、段階的スループットベース価格設定モデルが実施され
得る。例えば、クライアントが毎秒0〜1000トランザクションを投入した場合、請求
レートB1(例えばトランザクションごと)が課され、これは毎秒1000〜2000ト
ランザクションのトランザクションレートに対する請求レートB2等とは異なる。いくつ
かの実施形態において、同様の段階ベース価格設定が、帯域使用量にも適用され得る。例
えば、転送ギガバイト総数が0〜10GB/日の場合、転送ギガバイト総数が10〜20
GB/日の場合とは、異なる転送データギガバイト毎請求レートが課され得る。いくつか
の実施形態において、使用されている持続的変更ログに関して及び/またはLCSGのメ
ンバーデータストアに関して、LCSGクライアントが要求する高可用性、データ耐久性
、レイテンシのレベルに少なくとも部分的に基づいて、請求額が変わり得る。少なくとも
一実施形態において、特定のデータストア種類集合にネイティブに対応するだけでなく、
例えばサービスによりネイティブに対応されるデータストア種類と、ネイティブに対応さ
れていない別のデータストア種類との間の変換に関して、カスタム拡張が追加されること
を許容する格納サービスにおいて、LCSGが実施され得る。いくつかのこのような実施
形態において、所定の拡張の使用に適用される請求レートは、ネイティブ対応のデータス
トア種類に使用される請求レートとは異なり得る。
自身の価格設定ポリシーをそれぞれ実施するプロバイダネットワークの各自のサービス
を介して、LCSGの様々なデータストアがそれぞれ実施される一実施態様において、ク
ライアントはそれらのプロバイダネットワークサービスの使用に対してと、LCSGの使
用に対してと、別個に請求され得る。例えば、LCSGのデータベースインスタンスを対
象とする読み出しの請求額は、データベースサービスの価格設定ポリシーに従って計算さ
れ、一方LCSGトランザクション及びデータストア横断変換動作に対する請求は、LC
SG価格設定ポリシーに従って決定され得る。
少なくとも一実施形態において、ログサービスのクライアントが代替価格設定ポリシー
を見て、及び/またはクライアントの好み及び要件に基づいて特定の価格設定ポリシーを
選択できるように、1つまたは複数のプログラマチックインターフェース(ウェブページ
、API等)が実装され得る。全体要求トランザクション及び/または読み出しレート、
行われたデータストア横断及び単一データストア動作数、使用されたネットワーク帯域等
の作業負荷関連メトリクスが、顧客のLCSGのために割り当てられたリソースから収集
され得る。少なくともいくつかの実施形態において、LCSGを実施するログサービスの
制御プレーンにより行われる請求関連作業の一部は、作業負荷レコードを、データストア
横断動作を示す1つの部分集合、あるいは単一データストア動作を示す別の部分集合に分
類することを含み得る。例えば、両種類の動作(単一データストアあるいはデータストア
横断)の書き込みレコードは、所定のデータストアにおける同一のログに格納され、そし
て作業負荷分析制御プレーンコンポーネントが、書き込みレコードのコンテンツを調べて
、書き込みレコードはデータストア横断書き込みを表すか単一データストア書き込みを表
すかを判定する必要があり得る。一実施態様において、メトリクスの収集のために、LC
SGに使用されているプロバイダネットワークの分散監視エージェントの集合が使用され
得る。LCSGに選択された価格設定ポリシーと収集されたメトリクスとに応じて、特定
の請求期間の請求額が決定され、クライアントに示され得る。
図26は、少なくともいくつかの実施形態による、それぞれのログ整合格納グループ(
LCSG)に対しそれぞれの価格設定ポリシーが実施され得る例示的システム環境を示す
。示されるように、システム2600は、2つのLCSG2605A、2605Bを備え
る。LCSG2605Aは2つのデータストア2630A、2630Bを含み、一方LC
SG2605Bは4つのデータストア2630C、2630D、2630E、2630F
を含む。競合検出器2615Aと、持続的変更ログ2601Aと、書き込みアプライヤ集
合2617Aとを含むログベーストランザクションマネジャー(LTM)2602Aは、
データストア2630A、2630Bに対するクライアントに指示された書き込みを含む
トランザクション要求を取り扱うように構成される。同様に、競合検出器2615Bと、
持続的変更ログ2601Bと、書き込みアプライヤ集合2617Bとを含むLTM260
2Bは、データストア2630C〜2630Fに対するクライアントに指示された書き込
みを管理するように構成される。持続的変更ログ2601は、本明細書において、書き込
みログとも称され得る。
LCSGが実施されるログサービスまたは格納サービスの制御プレーン2649は、例
えばLCSGメンバー情報の管理、クライアントアカウントとアカウントに割り当てられ
たサービスリソースとのマッピング、様々なLCSGに使用されている価格設定/請求ポ
リシーの追跡等を含む、設定及び管理タスクの責務を担う複数のコンポーネントを含み得
る。描かれた実施形態において、請求マネジャー2651は、例えば、LCSG2605
A、2605Bを対象とする要求に関する1つまたは複数の価格設定ポリシー選択肢に基
づいて、クライアントの請求額を生成する責務を担い得る。描かれた実施形態において、
利用可能な価格設定ポリシー集合が、LCSGを実施するサービスの実際の顧客または可
能性のある顧客に対し、ウェブページ、API、コマンドラインツール、またはカスタム
GUI等の1つまたは複数のプログラマチックインターフェースを介して示され得る。少
なくともいくつかの実施形態において、顧客も、このようなプログラマチックインターフ
ェースを介して、例えば顧客が様々なデータストア2630をLCSGメンバーとして登
録する時に、またはLCSGが設定された後のある時点に提出される価格設定ポリシー変
更要求により、顧客のLCSGに適用する特定の価格設定ポリシーを指示し得る。描かれ
た実施形態において、LCSG2605Aに対し価格設定ポリシー2644Aが特定され
、一方でLCSG2605Bに対し別の価格設定ポリシー2544Bが選択されている。
各価格設定ポリシーは、例えば、少なくとも特定の請求期間中に、様々な異なる動作種類
及び/またはリソース利用単位に使用する請求レートを示し得る。所定の請求期間に顧客
に課される請求額(例えばBA1またはBA2)は、請求期間中にそれらのLCSGに対
し実施されている価格設定ポリシー(複数可)と、請求期間中に収集された様々なメトリ
クスの分析とに基づいて、請求マネジャー2651により決定され得る。
メトリクスコレクタ2655Aは、データストア2630A及び/またはLTM260
2に使用されるサーバ及びデバイス等の様々なリソースを監視し、収集されたメトリクス
の開示を請求マネジャー2651に提供する責務を担い得る。例えばコンピューティング
サービス、格納サービス等のプロバイダネットワークのサービスを使用して、プロバイダ
ネットワーク内でLCSGが実施される実施形態において、一部または全てのサービスに
既存のメトリクス収集インフラストラクチャが利用可能であり、請求マネジャーは、当該
既存のメトリクス収集インフラストラクチャから、請求額を生成するために必要となるメ
トリクスのうちの少なくともいくつかを取得し得る。一実施形態において、制御プレーン
2649は、例えば、各LCSGのメンバーを特定する責務を担うメンバーシップマネジ
ャー、収集された作業負荷メトリクスをクライアント毎及び/または動作種類毎のサブグ
ループに分類するメトリクスアナライザ、及び選択された価格設定ポリシーと作業負荷メ
トリクスとに基づいて様々なクライアントに対する請求額を生成する請求書ジェネレータ
といった、様々な価格設定/請求関連タスクのそれぞれのコンポーネントを含み得る。
LCSG2605に適用される所定の価格設定ポリシー2644において、例えば、L
CSGのメンバーであるデータストア2630の数及び/または種類、動作混合比(単一
データストア書き込み対データストア横断書き込み)、使用したリソース割り当てモデル
(例えば準備スループット型あるいはベストエフォート型)、要求トランザクションレー
ト等、多数の異なる要素が考慮され得る。図27は、少なくともいくつかの実施形態によ
る、単一データストア及びデータストア横断書き込み動作の実施例を示す。描かれた実施
形態において、LCSG2705は、NoSQL DBインスタンス2730A、キー値
インメモリDB 2730B、分散キャッシュインスタンス2730C、リレーショナル
DBインスタンス2730D、格納サービスオブジェクト2730E、アーカイブサービ
スオブジェクト2730Fの6つのメンバーデータストアを含む。例示されるように、所
定LCSGのメンバーデータストアは、非常に異なるデータモデルを実施し(例えばリレ
ーショナルあるいは非リレーショナル、構造化レコードあるいは非構造化データオブジェ
クト等)、従って、少なくともいくつかの実施形態において、メンバーデータストアでは
、異なる読み出しインターフェース及びデータ形式が使用され得る。
クライアントによる要求トランザクションに明示的に含まれる書き込みと、ログサービ
スが自動的に行うように構成された書き込み(例えば明示的要求書き込みの結果または副
作用として)の、2種類の書き込み動作が図27において例示される。トランザクション
要求2702Aは、書き込みペイロードW1が、NoSQL DBインスタンス2730
Aと、格納サービスオブジェクト2730Eも対象にすることを示す。従って、書き込み
ペイロードW1の表現W1‐AはNoSQL DBインスタンス2730Aに格納され、
同じ書き込みペイロードの別の表現W1‐Bは格納サービスオブジェクト2730Eに格
納される。トランザクション要求2702Bも同様に、ペイロードW2のデータストア横
断書き込みの要求を含む。従って、書き込みペイロードW2の第1表現W2‐Aはリレー
ショナルDBインスタンス2730Dに格納され、一方、書き込みペイロードW2の第2
表現W2‐Bは分散キャッシュインスタンス2730Cに格納される。トランザクション
要求27002Cは、単一データストア書き込みを有する。トランザクション要求270
2Cの書き込みペイロードW3の表現W3‐Aは従って、NoSQL DBインスタンス
2730Aに格納される。少なくともいくつかの実施形態において、単一データストア書
き込みを有するトランザクションの請求レートは、データストア横断書き込みトランザク
ションの請求レートとは異なり得る。少なくともいくつかの実施態様において、基準請求
レートがトランザクションごとに課され、そして追加請求額が、トランザクションに含ま
れる書き込みの数と対象データストアの種類とに基づいて課金され得る。
要求トランザクション内に明示的に示される書き込みに加えて、LCSG2705は、
自動変換及び/またはあるメンバーデータストアから別のメンバーデータストアへのデー
タのコピーにも対応し得る。このようなデータストア横断変換の2つの実施例が、図27
に示される。第1の実施例において、書き込みペイロードW1の第3表現W1‐Cが、格
納サービスオブジェクト2730Eの表現W1‐Bから自動的に生成され、キー値インメ
モリデータベース2730Bに格納される。第2実施例において、W2‐Aを変換元とし
て使用して、書き込みペイロードW2の第3表現W2‐Cがアーカイブサービスオブジェ
クト2730Fに格納される。少なくとも一実施態様において、このような自動データス
トア横断変換動作が行われる変換元及び変換先データストアの各組に対し、それぞれの書
き込みアプライヤが設定され得る。例えば、書き込み(W1‐B等)が格納サービスオブ
ジェクト2730Eに適用された時に通知されるリスナーとして特定の書き込みアプライ
ヤが登録され、そのため対応書き込み(W1‐C等)がキー値インメモリデータベース2
730Bにて実行され得る。LCSG2705のために実施されている価格設定ポリシー
に従って、描かれた実施形態において、各種類の自動データストア横断変換に対し、それ
ぞれの請求レートが設定され得る。請求レートは、異なる実施形態において、例えば、具
体的な変換元及び変換先データストアの種類、特定の書き込みが変換元データストアに適
用されてから対応表現が変換先データストアに適用されるまでの許容遅延時間等、様々な
要素に基づき得る。従って、例えば、リレーショナルDBインスタンス2730D(変換
元データストア)に最初書き込まれるオブジェクトの別の表現をアーカイブ格納サービス
2730F(変換先データストア)内で生成することに対し、請求レートBR1が使用さ
れ、一方、同じオブジェクトの別の表現を分散キャッシュインスタンス2730C等の別
の変換先データストア内で生成することに対し、別の請求レートBR2が使用され得る。
少なくともいくつかの実施形態において、所定の組のデータストアに関して、データスト
ア横断変換動作の方向は、請求レートに影響し得る。
図28は、少なくともいくつかの実施形態による、ログ整合格納グループに対する価格
設定ポリシーを決定する際考慮され得る要素の実施例を示す。データストアの数及び種類
2802は、いくつかの実施形態において、クライアントに支払いが求められ得る最初の
前払い金、並びに現行の利用ベース料金を含む、価格設定のいくつか態様に影響し得る。
例えば、非リレーショナルデータベースの4つのインスタンスを有するLCSGを設定す
る場合、非リレーショナルデータベース、リレーショナルデータベース、分散キャッシュ
インスタンス、及びアーカイブサービスのアーカイブインスタンスそれぞれを1インスタ
ンスずつ有するLCSGを設定する場合とは、請求額が異なり得る。LCSGにおけるデ
ータストアの数は、同一基礎データに対してクライアントがアクセスできる可能閲覧数も
表し得る。
作業負荷動作種類混合比2804は、少なくともいくつかの実施形態において、請求額
に影響し得る。例えば前述のように、データストア横断動作の費用は、単一データストア
動作とは異なり得る。いくつかの実施形態において、顧客の作業負荷における読み出し及
び書き込みの混合比も請求額に影響を及ぼし得る。例えば読み出しの費用は通常、書き込
みより安くあり得る。図15に関して前述されたように、少なくともいくつかの実施形態
において、ログ読み出しインターフェースにより、クライアントはLCSGの持続的ログ
に対し直接読み出しを発行可能となり、そしてこのようなインターフェースを使用する毎
読み出し費用は、データストアのインターフェースを使用する毎読み出し費用とは異なり
得る。データストアを対象とする読み出しがプロバイダネットワークのそれぞれのサービ
スにより取り扱われる(すなわち秒ごとにログサービスによるのではない)いくつかの実
施態様において、データストアのネイティブ読み出しインターフェースを使用する読み出
しに対する請求は、ログサービスの使用に対応付けられる請求とは別個に取り扱われ得る
LCSGの使用に対する価格設定ポリシーは、いくつかの実施形態において、リソース
割り当てモード2806に基づいて異なり得る。準備スループットモードにおいて、ログ
サービスは、クライアントの指定スループットレベルに対し利用可能な十分な能力が確実
に残っているように、クライアントに対しリソースを確保または献呈する必要があり得る
。対照的に、ベストエフォート型リソース割り当てモードにおいて、クライアント要求を
遂行するために共有リソースが使用され、これにより、ログサービスリソースの平均使用
レベルは準備スループットモードより高くなり得る。従って、少なくともいくつかの実施
形態において、準備スループットモードが使用される時と、ベストエフォートモードが使
用される時とでは、同一の実トランザクションレートに対し、異なる額がクライアントに
課され得る。いくつかの実施形態において、要求レート段階2808が価格設定ポリシー
に関して定義され得る。段階ベース価格設定に従って、所定のトランザクションに対する
請求レートは、クライアントが毎秒0〜1000トランザクション要求を発行したか否か
、またはクライアントが毎秒1000〜2000トランザクションを発行したか否かに応
じて異なり得る。少なくともいくつかの実施形態において、クライアントの作業負荷に対
するネットワーク帯域使用量2810が、価格設定ポリシーに影響し得る。トランザクシ
ョンの特徴に応じて、特定数N1個のトランザクション要求は、第1クライアントに対し
てXギガバイトのトラフィックとなり、一方、N1個のトランザクションは、別のクライ
アントに対して(または第1クライアントに対しても別の時間間隔において)Yギガバイ
トのトラフィックとなり得る。ログサービスにより生じるリソース使用量の少なくとも一
部はネットワーク帯域に比例して異なり得るため、ログサービスのいくつかの価格設定ポ
リシーは、測定帯域使用量に少なくとも部分的に基づき得る。様々な実施形態において、
ログサービスにより使用される監視インフラストラクチャ(例えばメトリクスコレクタ2
655A)は、異なるクライアントに対し帯域使用量を割り当てる様々な技術を使用し得
る。例えば、このような割り当ては、ネットワークパケットヘッダーに組み込まれるクラ
イアントIPアドレス、パケットヘッダーまたは本体に組み込まれるクライアント識別子
等に基づき得る。
少なくともいくつかの実施形態において、価格設定ポリシーは、レイテンシ要件281
2、可用性要件2814、及び/またはデータ耐久性要件2816に基づいて定義及び/
または選択され得る。例えば、ほとんどのトランザクションは対応トランザクション要求
が提出されて2秒以内に受諾されるという要件を1つのクライアントのアプリケーション
集合が有し、そしてこのようなクライアントは、提出済みのトランザクションの少なくと
も95%が2秒以内に受諾されるのであれば、より高い毎トランザクションレートを支払
う意思があり得る。このようなレイテンシパーセンタイル値測定または平均レイテンシに
基づいた価格設定ポリシーは従って、このような実施形態においてログサービスにより対
応され得る。異なるクライアント及び/またはクライアントアプリケーションは、いくつ
かの実施形態において、ログサービスに対し異なる高可用性要件2814(例えばLCS
Gの様々なコンポーネントが99.99%の時間、または99.9999%の時間、オン
ラインで応答可能である必要がある)を有し、これは選択された価格設定ポリシーに影響
し得る。少なくとも一実施形態において、データ耐久性に関する要件2816(例えばロ
グレコードの最大許容データ損失レート)も価格設定に影響し得る。
ログサービスは、例えばプロバイダネットワークにおいて実施されるプロプライエタリ
データベースもしくは格納サービス、人気のオープンソースデータベース、キャッシュサ
ービス等、多数の異なるデータストアの種類にネイティブに対応し得る。さらに、少なく
ともいくつかの実施形態において、ログサービスは、第三者またはクライアントにより拡
張可能であり得る。このような実施形態において、拡張性インターフェース集合が開示さ
れ、これにより、ログサービスのオペレータ以外の組織または個人は、新たなデータスト
アの種類のログベーストランザクション管理に対しサポートを追加することが可能になる
。例示的拡張は、ログサービスによりネイティブに対応されない様々なデータストアに対
する書き込みアプライヤ、または、このようなデータストアが図27に例示される類の自
動データストア横断変換の変換元または変換先として機能することを可能にするデータト
ランスフォーマを含み得る。少なくともいくつかの実施形態において、LCSGの価格設
定ポリシーは、このような拡張の使用を考慮し得る。例えば、ネイティブに対応されるデ
ータストアを使用するトランザクションに適用される料金とは異なる料金が、拡張を使用
するトランザクションに適用され得る。
様々な実施形態において、所定の顧客のための所定のLCSGに使用する具体的な価格
設定ポリシーを特定するために、図27に例示される要素のうちのいくつか(または全て
)が結合され得ることに留意されたい。例えば、段階的価格設定及び/または帯域ベース
価格設定は、いくつかの実施形態において、準備スループット型リソース割り当てモード
またはベストエフォート型リソース割り当てモードと組み合わせて適用され得る。同様に
、LCSGに含まれるデータストアの数及び種類は、様々な実施形態において、作業負荷
動作混合比、スループット段階、レイテンシベース価格設定等と相まって、請求額に影響
し得る。
少なくともいくつかの実施形態において、ログサービスのクライアントは、いくつかの
選択肢の中から価格設定ポリシーを選択する機会を与えられ得る。図29は、少なくとも
いくつかの実施形態による、ログ整合格納グループを実施するサービスのユーザに対し価
格設定ポリシーの選択肢を示すために使用され得る例示的ウェブベースインターフェース
を示す。示されるように、ウェブページ2901は、メッセージエリア2904と、多数
の書式フィールドとを備え、書式フィールドは、ログサービスユーザが、異なる価格設定
ポリシーコンポーネントを試行して、ユーザの要件及び予算に最適である特定の価格設定
ポリシー要素集合を選択するために、使用され得る。
メッセージエリア2904に示されるように、描かれた実施形態におけるLCSGの使
用に関する費用は、ログサービスを使用してトランザクションが管理されるデータストア
の数及び種類に依存し得る。ユーザは、構成要素2907を使用して、LCSGにいくつ
の異なる種類のデータストアを含めるか指示し、これを基に、価格がウェブページ290
1を使用して推定または決定される。例えば、クライアントはゼロまたは複数のNoSQ
Lデータベースのインスタンス、ゼロまたは複数のリレーショナルデータベースのインス
タンス、ゼロまたは複数のインメモリデータベースのインスタンス、及び/またはゼロま
たは複数の他の種類のデータベースのインスタンスを選択し得る。データストアカウント
フィールドを含むページ2901上に表示される書式フィールドのうちのいくつかに関し
て、ログサービスは初期設定値を示し得る(NoSQLデータベースインスタンスの数の
初期設定値は1等)。いくつかの実施形態において、ユーザが様々な書式フィールド内に
値を入力すると、ウェブページ2901の他の構成要素内のデータは、瞬時またはほぼ瞬
時に更新され得る。例えば、ユーザがNoSQLデータベースインスタンスの数を1から
2に変更すると、総請求月額2925に対するこのような変更の影響が、リアルタイムに
示され得る。
描かれた実施形態において、ユーザは、書式フィールド2910を使用して、リソース
割り当てモードに対する希望(例えば準備スループット型あるいはベストエフォート型)
を指示し得る。図29の例示的シナリオにおいて、単一データストア要求とデータストア
横断要求の両方に対し、段階的価格設定モデルが使用され得る。データストア種類ごとに
、書き込みの予想要求レート(例えば毎秒書き込み数)が、書式フィールド2913を使
用して指示され得る。データストア横断書き込み(所定の変換元データストア種類と所定
の変換先データストア種類の間)の予想要求レートが、書式フィールド2916を使用し
て指示され得る。他の変換元と変更先の組のデータストア横断変換の予想要求レートも、
例えばフィールド2916内に示されるリンクをクリックして変換元、変換先、及びレー
トを指示することにより、同様に指示され得る。書き込み要求レートのフィールド等、1
つまたは複数のフィールドに関して、ウェブページ2901は、個別の選択肢集合を有す
るドロップダウンメニューを提供し得る(例えばこれにより、ユーザがマイナスの要求レ
ート等、対応エンティティの不対応値を指示することが防止される)。ユーザはまた、描
かれた実施形態において、構成要素2919を使用して、帯域使用量段階を指定し得る。
レイテンシ、データ耐久性及び/または可用性に関するカスタム希望指示は、構成要素2
922内に示されるリンクをクリックすることにより提供され、そしてこのような希望指
示も価格設定に影響し得る。ユーザが入力した値に基づいた請求月額の見積もりが、ウェ
ブページ2901の構成要素2925内に提供され得る。ウェブページ2901は、ログ
サービスのクライアントが価格設定ポリシー選択肢から選択を行うことを可能にするため
に使用され得るプログラマチックインターフェースの一例にすぎないことに留意されたい
。定義済み性能特性を有する事前定義のデータストアパッケージ(例えば「小さい」ある
いは「中くらい」あるいは「大きい」LCSG)及び価格設定ポリシーの使用等、多数の
他の手法が、別の実施形態において使用され得る。ユーザが最初に予算を指定して、その
後そのような予算に対応可能な特定のデータストアの組み合わせ、作業負荷混合比等をユ
ーザに案内する予算ベースモデル等、価格設定に対し他の手法をとるウェブページが、別
の実施形態において使用され得る。いくつかの実施形態において、LCSG価格設定に影
響すると示される要素は、図29に示されるものとは異なり得る。様々な実施形態におい
て、ウェブページよりも、API、カスタム価格設定GUI、または他のプログラマチッ
クインターフェースが使用され得る。
図30は、少なくともいくつかの実施形態による、ログ整合格納グループ(LCSG)
に対応するサービスにて請求額を決定するために行われ得る動作態様を示すフロー図であ
る。構成要素3001に示されるように、サービスは、クライアントのための特定のログ
整合格納グループのメンバーとして指定された複数のデータストア(例えばリレーショナ
ルデータベース、非リレーショナルデータベース、インメモリデータベース、分散キャッ
シュ環境、格納サービスオブジェクト集合、ファイルシステム等のインスタンス)を特定
または同定し得る。いくつかの実施形態において、メンバー情報は、データストアが登録
された時に(例えばクライアントの要求でLCSGが設定された時に)、サービスの制御
プレーンコンポーネントにおいて取得され得る。別の実施形態において、現行メンバーを
特定するために、LCSGメンバー情報のレポジトリ(メンバーの追加または削除により
経時的に変化し得る)が、例えば少なくとも請求期間ごとに1度、調べられ得る。読み出
しは、データストアに対しそれぞれの読み出しインターフェースを介して送られ、一方書
き込みは、書き込みレコードログのコンテンツに少なくとも部分的に基づいて、LCSG
のトランザクションマネジャーにより受諾または拒否され得る。
構成要素3004に示されるように、LCSGの使用に対する請求額に影響する複数の
価格設定ポリシーの選択肢または要素の指示が、クライアントに提供され得る。少なくと
もいくつかの実施形態において、クライアントは、図29に示されるものと同様のプログ
ラマチックインターフェースを使用して、所定のLCSGの可能性のあるデータストアの
組み合わせを指示し、そしてサービスはクライアントの入力に応じて価格設定ポリシーの
選択肢を表示し得る。価格設定ポリシー選択肢は、異なる実施形態において価格設定の決
定に関与し得る幅広い種類の要素を含み得る。これには例えば、LCSGのメンバーであ
るデータストアの数及び種類のある組み合わせ、動作種類の混合比(例えば単一データス
トア書き込み対複数データストア書き込み)、リソース割り当てモード(例えば準備スル
ープット型あるいはベストエフォート型)、段階的または絶対的性能レベル(例えばスル
ープットまたはレイテンシに関して)、帯域使用量、データ耐久性、可用性等が含まれる
特定の価格設定ポリシー、例えばデータストア選択、データストア横断書き込み等の異
なる動作種類の予想作業負荷レベルに関してクライアントが提供した入力に少なくとも部
分的に基づいて導出されるポリシーを、少なくともある時間帯に、クライアントのLCS
Gに対し使用するという指示が、クライアントから受信され得る(構成要素3007)。
当該時間帯に、価格設定ポリシーに関連する様々なメトリクスが収集され、例えばサービ
スの請求/価格設定制御プレーンコンポーネントに提供され得る。様々な種類のクライア
ント要求の数及びレート(かつクライアント要求に対応付けられた応答時間またはレイテ
ンシ)を含む作業負荷関連メトリクス、並びにクライアントが使用したネットワーク帯域
等のリソース関連メトリクスが収集され得る。いくつかの実施形態において、制御プレー
ンコンポーネントは、作業負荷レコード(及び/またはリソース使用量メトリクス)を、
例えばデータストア横断書き込み、あるいは単一データストア書き込みといった、異なる
動作カテゴリを表すサブグループに分類する責務を担い得る(構成要素3010)。描か
れた実施形態において、収集されたメトリクスと、クライアントのために、またはクライ
アントにより選択された価格設定ポリシーとに基づいて、時間帯の請求額が決定され(構
成要素3013)、クライアントに示され得る(構成要素3016)。少なくとも一実施
形態において、クライアントは、サービスのプログラマチックインターフェースを使用し
て、先の請求時間帯の請求ポリシーを変更し得る。
読み出し再現性検証のための記述子
前述のように、ログベーストランザクションマネジャーは、いくつかの種類の直接読み
出し動作に関して、読み出し位置(すなわちトランザクション中にデータが読み出される
アドレスに関する情報)にのみ基づいて、後続の書き込みとの競合を検出することが可能
であり得る。しかしながら、さらに複雑な読み出しに関しては、このような単なる位置ベ
ース競合検出は、十分ではあり得ない。図31は、少なくともいくつかの実施形態による
、トランザクション受諾のために読み出し位置ベース競合検出を使用することによりデー
タ不整合が生じ得る、格納システムにおける例示的一連イベントを示す。タイムライン3
199は、ログサービスのクライアントの観点からの一連のイベントE1、E2、E3、
E4、E5を、より前のイベントは左側に、そしてより後のイベントは右側に示す。デー
タストア3110は、E1より前に少なくとも3つレコードを有する「従業員」テーブル
を備える。各レコードはそれぞれの位置(“Lc”等、接頭文字“L”の表示で示される
)を有し、従業員名フィールド及び給与フィールドを含む。描かれた実施例において、従
業員“Andy”の給与は$Xであり、従業員“Ann”の給与は$Yである。イベント
E1は、クライアントによる、“A”で始まる名前の従業員のレコードのコンテンツを取
得する読み出し要求R1の提出に対応する(例えば、SQLのような疑似コードで、要求
「従業員テーブルから従業員名が“A”で始まる*を選択」が提出され得る)。イベント
E2は、従業員“Andy”、“Ann”のレコードを含むR1の結果集合を有する、デ
ータストアからの応答を含む。2つのレコードのアドレス/位置Lc、Lk、並びに最新
のコミット済み書き込み(読み出しより前)がデータストア3110に適用された時を示
す論理タイムスタンプLTS1も、クライアントに返される。
その後クライアントは、R1の結果集合に基づいて、“A”で始まる名前の従業員の平
均給与(“A_sal”)の計算を行う(イベントE3)。クライアントが受信した結果
集合に従って、A_salは、$Xと$Yの平均に設定される(すなわち($X+$Y)
/2)。その一方で、(LTS1+デルタ1)に対応するある時間に、新従業員“Art
”(給与は$J)のレコードが、書き込みアプライヤにより従業員テーブル内の位置Ln
に挿入される。クライアントは、挿入に気が付かずに、クライアントにより計算されたA
_salの書き込みを含むトランザクション要求を準備する。TR1はまた、読み出し位
置Lc、Lk(例えば2つの位置のそれぞれのハッシュシグネチャを使用する)と、競合
検査デリミタとして論理タイムスタンプLTS1とを示す。TR1は、論理タイムスタン
プ(LTS1+デルタ1+デルタ2)に対応する時間に、データストア3110に割り当
てられたログベーストランザクションマネジャー(LTM)において調べられる(イベン
トE4)。競合検出の一環として、ログベーストランザクションマネジャーは、LTS1
以降に読み出し集合位置Lc、Lkに対し書き込みが行われたか否かを検査し、いずれの
そのような書き込みも発見しない。従って、(LTS1+デルタ1+デルタ2)のコミッ
ト論理タイムスタンプと、A_salの不整合/不正確な値とを有する要求トランザクシ
ョンが、コミットのために受諾される(イベントE5)。(示される例示的一連イベント
を考えると、A_salの値は、($X+$Y)/2の代わりに($X+$Y+$J)/
3に設定されるべきであり、故に不整合または不正確とみなされ得る。)不一致は、LT
Mによるエラーの結果ではなく、むしろいくつかの種類の読み出しに関してアドレスベー
スの読み出し書き込み競合検出は、必ずしも読み出し再現性を検証するのに使用可能とは
限らないという事実の結果であることに留意されたい(すなわち読み出しの結果集合が変
化していないことを検査するには、読み出しが再発行されなければならない)。
図31に例示される問題の類に対応するために、トランザクション要求に含められる読
み出し記述子は、アドレスベースのハッシュシグネチャ等の位置インジケータよりも複雑
なメタデータを含む必要があり得る。例えば、いくつかの種類の読み出しに関して、メタ
データは、読み出しに使用されるクエリ述語(例えばSQLのようなクエリの「WHER
E句」)の少なくとも一部の符号化、または読み出し要求の全テキストさえ、含み得る。
いくつかの事例において、読み出しの結果集合が変化したか否かを判定するために呼び出
し可能な関数(または関数へのポインタ)が、メタデータ内に示され得る。いくつかの実
施形態において、読み出しの結果が変化したか否かを判定するために評価され得る式が、
RRVMとして提供され得る。用語「読み出し再現性検証メタデータ」(RRVM)は、
本明細書において、対応読み出し要求が再提出された場合でも、前の読み出し要求の提出
時と同じ結果集合を生じるか否か、すなわち所定の読み出し要求は、最初の読み出し要求
の提出後のある時点で「再現可能な読み出し」を表すか否かを、判定するために使用可能
な情報を指すのに使用され得る。
図32は、少なくともいくつかの実施形態による、読み出し要求に応じて提供される読
み出し記述子がRRVMコンポーネントを含むシステム環境を示す。示されるように、シ
ステム3200は、格納サービスの異種格納グループ3201を含み、当該格納グループ
は、メンバーデータストア3230A、3230Bを備える。各データストア3230は
、例えばデータストア3230Aの読み出しインターフェース3227A、データストア
3230Bの読み出しインターフェース3227B等、それぞれのプログラマチック読み
出しインターフェースを提示し得る。2つのデータストアは、読み出しインターフェース
のみではなく、基礎データモデルにおいても異なり得る(例えば1つのデータストアはリ
レーショナルデータベースのインスタンスを有し、一方もう一つのデータストアは非リレ
ーショナルデータベースのインスタンスを表し得る)。データストア3230は、いくつ
かの実施形態において、データストアがプロバイダネットワークにてインスタンス化され
たクライアント等、特定のクライアントの要求で、格納グループ3201のメンバーとし
て登録され得た。各データストアは、データストア3230Aのオブジェクト3210A
〜3210F、及びデータストア3230Bのオブジェクト3210M〜3210Q等、
それぞれの複数のデータオブジェクト(例えばレコード、ファイル、ウェブサービスイン
ターフェースを介してアクセス可能な非構造化データオブジェクト、キャッシュエントリ
等、データソースの性質による)を含み得る。さらに、各データストアは、データストア
で行われた様々な書き込み動作に対応する論理スタンプ等、1つまたは複数のステート遷
移インジケータ3225を格納し得る。例えば、データストア3230Aの事例において
、3つの異なる書き込みW1‐A、W2‐A、W3‐Aがこの順序で完了または適用され
た場合、W3‐Aの書き込みが完了した後の少なくとも1つのSTI3225Aは、W3
‐Aに対応付けられる論理タイムスタンプに該当し得る。同様に、データストア3230
Bにおいて、書き込みW1‐B、W2‐Bがこの順序で完了した後の少なくとも1つのS
TI3225Bは、W2‐Bに対応する論理タイムスタンプを表し得る。
描かれた実施形態において、格納グループ3201の様々なメンバーデータストア32
30はそれぞれ、共通読み出し記述子形式3298に従って、読み出し記述子を生成する
ように構成され得る。読み出しインターフェース3227Aを介してデータストア323
0Aにて受信された読み出し要求R1‐Aに応じて、例えば、STI3246AとRRV
M3244Aを含む読み出し記述子3242Aが、格納サービスのクライアント側コンポ
ーネント3235へ提供され得る。前述のように、RRVMは、最初のR1‐A結果集合
3240Aが生成された後のある時点で、R1‐Aの結果集合が変化したか否かを判定す
る(またはある高い確率で予測する)ために使用され得る。少なくともいくつかの実施形
態において、クライアント側コンポーネント3235は、エンドユーザ3266からエン
ドユーザ読み出し要求(及び/または書き込み要求)を受信し、対応内部要求を好適なバ
ックエンドデータストア3230へ送る格納サービスのフロントエンド要求ハンドラノー
ドを備え得る。別の実施形態において、クライアント側コンポーネント3235は、格納
サービスにより提供されるライブラリのコンポーネントを備え、当該ライブラリコンポー
ネントは、例えば異種格納グループ3201が実施されるプロバイダネットワークの外側
、またはプロバイダネットワーク内で、クライアント所有のコンピューティングデバイス
にてインストール及び実行され得る。一般に、異種格納グループが実施されるプロバイダ
ネットワーク内、またはプロバイダネットワークの外側に配置され、かつ読み出し要求及
び/またはコミット要求のために本明細書において説明されるプログラマチックインター
フェースを使用可能な任意のプロセスまたはデバイスが、クライアント側コンポーネント
として機能し得る。同様に、読み出しインターフェース3227Bを介してデータストア
3230Bへ送られる読み出し要求R1‐Bに応じて、R1‐Bの結果集合3240Bに
加えて、読み出し記述子3242Bが、クライアント側コンポーネントに提供され得る。
読み出し記述子3242Bは、R1‐Bが再現可能な読み出しであるか否かを検証するた
めに使用可能なRRVM3244Bと、R1‐Bの最初の結果集合3240Bが生成され
た時のデータストア3230Bのステートに対応するSTIとを含み得る。少なくともい
くつかの実施形態において、RRVM3244を含む読み出し記述子3242は、対応読
み出しがこれからトランザクション要求に使用されるか否か(例えば書き込みが読み出し
要求の結果集合に依存するか否か)とは関係なく、読み出し要求に応じて提供され得るこ
とに留意されたい。同様に、RRVMを含む読み出し記述子は、少なくともいくつかの実
施形態において、データストアに対する書き込みがクライアント側コンポーネントにより
直接行われるか否か、または書き込みが前述の類のログベーストランザクションマネジャ
ーにより整合され、及び/または前述の類の書き込みアプライヤにより伝播されるか否か
に関係なく、提供され得る。少なくともいくつかの実施形態において、単純な読み出し(
例えば「テーブルT1からレコードIDがRID1である*を選択」)に関して読み出し
再現性を検証するには、読み出しオブジェクトのアドレスの符号化(例えばハッシュシグ
ネチャ)、または読み出しオブジェクトの識別子の符号化で十分であり得る。従って、よ
り複雑な読み出しの再現性を検査するために述語ベースまたはクエリ句ベースのメタデー
タが生成される実施形態においてでも、いくつかのRRVMは位置ベースインジケータを
含み得る。少なくとも一実施形態において、例えばRRVMが「単一位置ハッシュシグネ
チャ」であるか、「複雑クエリ符号化」であるか等、提供されるRRVMの種類を示すフ
ィールドが、読み出し記述子内に含まれ得る。
少なくともいくつかの実施形態において、データストアは、いくつかの異なる粒度でス
テート遷移に関する情報を格納し、そして複数のステート遷移インジケータが読み出し記
述子に含まれ得る。図33は、少なくともいくつかの実施形態による、読み出し記述子の
例示的構成コンポーネントを示す。描かれた実施形態において、例示的データストア33
30は、テーブル3310A、3310B等、複数のテーブル3310を備える。各テー
ブルは多数のデータレコードを含み、各データレコードは、各自のレコード識別子すなわ
ちRID(レコードの位置インジケータとして機能し得る)3318と、レコードに対し
て適用された最新更新または書き込みを示す各自のレコード変更タイムスタンプ(RMT
)3320とを有する。従って、例えば、テーブル3310Aは、RID3318A、3
318B、3318Cを有するレコードを含み、一方、テーブル3310Bは、RID3
318K、3318L、3318Mを有するレコードを含む。各レコードは、図示されて
いない他のデータカラムまたは属性を含み得る。少なくともいくつかの実施形態において
、RMT3320は、論理タイムスタンプを表し(実時間ベースタイムスタンプの代わり
に)、論理タイムスタンプは、例えば単調に増加するタイムスタンプ値を生成し、かつデ
ータストアによりアクセス可能な論理クロックの出力値で表現される。描かれた実施形態
において、レコードがテーブル3310に挿入されると、そのRMTは挿入に対応する論
理タイムスタンプ値に設定され得る。後で同一のレコードが更新されたとすると、当該R
MTは、更新の論理タイムスタンプを示すように更新され得る。いくつかの実施形態にお
いて、論理クロックは、単調に増加する一連のタイムスタンプ値(実時間値に対応しない
かもしれない)を提供する責務を担い得る。一実施態様において、格納グループごとに、
単一の論理タイムスタンプ源が特定され得る(例えばグループのトランザクションマネジ
ャーに対応付けられたクロック)。別の実施形態において、異なるデータストアが異なる
論理クロックを使用し得る。
描かれた実施形態において、レコードレベル変更時間情報に加えて、テーブルレベル変
更時間情報も同様に、テーブル変更タイムスタンプ(TMT)の形態で、例えばテーブル
3310AのTMT3316A、テーブル3310BのTMT3316B等で、保持され
得る。描かれた実施形態において、テーブル3310のTMTは、そのテーブルのレコー
ドのRMTの中で最新のRMTを示し得る。従って、テーブル3310に関して、所定の
時点でRID3318Cを有するレコードがテーブル内で最新の書き込み対象レコードで
ある場合、TMT3316Aも、RMT3320Cと同じ論理タイムスタンプ値を含み得
る。同様に、さらに高い粒度で、データストア変更タイムスタンプ(DMT)3308が
、データストア3330に格納されているレコードのうちのいずれかにおける最新の変更
を示す、テーブルのTMTの中で最新のTMT値に設定され得る。
図33に示される実施形態において、データストア3310内の所定のレコードに対す
る読み出しの読み出し記述子は、レコードレベル(例えば読み出されたレコードが最後に
変更された時間を示す)、テーブルレベル、及びデータストアレベルの3つのレベルの階
層全てに関する変更論理タイムスタンプを示し得る。示されるように、その結果集合がテ
ーブル3310Aのレコード3318Bを含む読み出し要求R1に応じて、生成された読
み出し記述子RD1は、RMT3320B、TMT3316A、及びDMT3308を含
み得る(読み出し再現性検証メタデータ(RRVM)3340Aに加えて)。同様に、そ
の結果集合がテーブル3310Bのレコード3318Mを含む読み出し要求R2に応じて
、読み出し記述子RD2は、RMT3320M、TMT3316B、DMT3308、及
び異なるRRVM3340Bを含み得る。読み出しの結果集合がいくつかの異なるレコー
ドを含む場合、いくつかの実施態様において、これらのレコードのRMTのうち最小のR
MTが読み出し記述子に含まれ、一方、他の実施態様において、全てのレコードのRMT
が読み出し記述子に含まれ得る。同様に、所定の読み出し要求の結果が複数のテーブルか
らのレコードを含む場合、いくつかの実施形態において、テーブルのTMTの中の最小T
MTが読み出し記述子内に示され、一方、他の実施形態において、テーブルのTMT全て
を含むベクトルが読み出し記述子に含まれ得る。異なる実施態様において、また異なる種
類のデータストアに、ステート遷移レコードの他の階層が使用され得る。例えば、データ
ストアテーブルがパーティションに分割される実施形態においては、パーティション変更
タイムスタンプが読み出し記述子に含まれ得る(例えばTMTに加えて、あるいはTMT
の代わりに)。いくつかの実施形態において、ファイルシステムを実施するデータストア
には、ファイル、ディレクトリ、及びファイルシステムに対する書き込みの論理タイムス
タンプが、ステート遷移インジケータの階層として使用され得る。いくつかの実施形態に
おいて、読み出し記述子にステート遷移インジケータの階層を含むことにより(DMT等
の単一値のみの代わりに)、ログベーストランザクションマネジャーは、異なるレベルの
保守性にて並行処理制御決定を行うことが可能になり得る。例えば、一保守的手法におい
て、トランザクションマネジャーは、DMT以降にデータストアのレコードのうちのいず
れかを対象とした全ての書き込みを競合書き込みとして特定し、一方、より保守性の低い
手法においては、そのRMTが競合とみなされ得る特定レコード(複数可)読み出しを対
象とした書き込みのみを競合書き込みとして特定し得る。
少なくともいくつかの実施形態において、図32において示されるように、読み出し記
述子が格納グループのデータストアにより、システムのクライアント側コンポーネントに
対し提供され得る。いくつかのこのような実施形態において、読み出し記述子は、クライ
アント側コンポーネントにて生成されるトランザクションコミット要求内に組み込まれ、
並行処理制御目的でトランザクションマネジャーにより調べられ得る。多数の理由から、
読み出し記述子はトランザクションマネジャーにより解読可能でなければならないが、少
なくともいくつかの実施形態において、ログサービスまたはプロバイダネットワークのオ
ペレータは、読み出し記述子の内部詳細が、読み出し及び書き込み要求を提出するエンド
ユーザに対し可視状態であることを所望しないかもしれない。例えば、サービスオペレー
タは、読み出し記述子の形式またはコンテンツを変更する能力を保持することを所望し得
る。しかしエンドユーザが固定サイズのエンドユーザ可読読み出し記述子を期待し慣れて
しまった場合、そのような能力を保持することは難しくあり得る。従って、いくつかの実
施形態において、読み出し記述子のコンテンツは、クライアント側コンポーネントに送信
される前に、1つまたは複数の変換処理を施され得る。図34は、少なくともいくつかの
実施形態による、格納システムのクライアント側コンポーネントに読み出し記述子が提供
される前に読み出し記述子に適用され得る例示的変換を示す。3つのレベルの格納階層の
それぞれの変更論理タイムスタンプ(データストア、テーブル、及びレコード)が、描か
れた実施形態において生成される読み出し記述子に含まれる。示されるように、非修正ま
たは変換前状態の読み出し記述子3401は、元のDMT3408に使用されるN1バイ
トと、元のTMT3416に使用されるN2バイトと、元のRMT3420に使用される
N3バイトと、RRVM3440に使用されるN4バイトとを含む、N1+N2+N3+
N4バイトを有し得る。
描かれた実施形態において、第1変換で、複数(N5)のバイトが、読み出し記述子に
「パディング」として追加され得る。いくつかの実施形態において、例えば乱数ジェネレ
ータを使用してパディングサイズのある選択された範囲内からパディングバイトの数を選
択することで、異なる数のバイトが同じデータストアにて生成された異なる読み出し記述
子に追加され得る。いくつかの実施形態において、パディングバイトには、ランダムに選
択されたデータも投入され得る。このようなランダムに生成されたパディング要素のおか
げで、エンドユーザは、全ての読み出し記述子が同一サイズであると想定しないようにな
り得る。
いくつかの実施形態において、パディング変換に加えて、読み出し記述子が同様または
代わりに、符号化または難読化され、そのため読み出し記述子の構成要素は、復号化なし
では解釈または理解不可能となる。従って、例えば、パディングされた読み出し記述子3
451は、クライアント側コンポーネントに送信される前に、難読化読み出し記述子34
58に暗号化または符号化され得る。描かれた実施形態において、格納サービスのサーバ
側コンポーネント(読み出し記述子が復号化される必要があり得るトランザクションマネ
ジャー等)は、必要なメタデータ(例えば復号化認証情報、または読み出し記述子の復号
化に使用する機能または方法の指示)を有し得るが、難読化を取り消すために必要な情報
は、エンドユーザによりアクセス可能ではあり得ない。様々な実施形態において、異なる
2つの一連変換(パディング及び難読化)が行われ得る。例えば読み出し記述子の構成要
素の原版は、いくつかの実施形態において、パディングバイトが追加される前に、まず符
号化され得る。いくつかの実施形態において、パディングのみ、または難読化のみが使用
され得る。少なくともいくつかの実施形態において、読み出し記述子はクライアント側コ
ンポーネントに送信される前に、他の変換が同様に適用され得る。例えば記述子は圧縮さ
れ得る。
ステートレスデータストア独立トランザクション
図35は、少なくともいくつかの実施形態による、格納システムのクライアント側コン
ポーネントから候補トランザクションコミット要求の提出を引き起こす例示的一連動作を
示す。クライアント側コンポーネントは、例えば、格納サービスのフロントエンド要求ハ
ンドラで実行されるプロセス、またはクライアント所有コンピューティングデバイスにて
インストール可能な格納サービスプロバイダライブラリのコンポーネントを備え得る。ク
ライアント側コンポーネントタイムライン3599上の時間t1に、BEGIN_TRA
NSACTION要求が、例えばエンドユーザから、クライアント側コンポーネントにて
受信され得る。クライアント側コンポーネントは、いくつかの実施形態において、BEG
IN_TRANSACTION要求に応じて、候補トランザクション要求を準備するため
に、メモリバッファ3535を割り当て得る、または確保し得る。別の実施形態において
、メモリバッファ3535は、トランザクションの異なる読み出し及び/または書き込み
が完了すると、動的に割り当てられ得る。
タイムライン3599上の時間t2に、読み出し要求R1が、クライアント側コンポー
ネントから(例えばサービスのフロントエンド要求ハンドラまたはライブラリコンポーネ
ントにて受信されたエンドユーザ読み出し要求に応じて)、ステートレスプロトコルを介
して異種格納グループ3575のデータストアDS1に対し送られ得る。描かれた実施形
態において、異種格納グループ3575は、メンバーデータストアDS1、DS2、DS
3、DS4を含み、それぞれは、書き込み動作がログベーストランザクションマネジャー
(LTM)を介して管理される格納グループのメンバーとして登録済みであり得る。格納
グループ3575のメンバーはまた、読み出し要求に応じて、読み出し記述子(例えば前
述の類のステート遷移インジケータ及びRRVMを含む記述子)を生成及び送信するよう
に求められ得る。格納グループの少なくともいくつかのメンバーは、いくつかの実施形態
において、異なるデータモデル(例えばリレーショナルあるいは非リレーショナルデータ
ベース、構造化あるいは非構造化レコード)を、対応読み出しインターフェース及びレコ
ード/オブジェクト格納形式で実施し得る。前述のように、例えば、リレーショナルデー
タベース、非リレーショナルデータベース、インメモリデータベース、分散キャッシュ、
プロバイダネットワークサービスにより実施されるウェブサービスインターフェースを介
してアクセス可能な格納オブジェクト集合、プロバイダネットワークにて実施される待ち
行列サービス、またはプロバイダネットワークにて実施される通知サービスのインスタン
スを含む、多数の異なるカテゴリのデータストアが格納グループに含まれ得る。描かれた
実施形態において、読み出し要求R1に対応する結果集合3510A及び読み出し記述子
3512Aがクライアント側コンポーネントに送信された後、DS1はクライアント側コ
ンポーネントに関するいかなるセッションメタデータも保持し得ないという点で、読み出
し要求R1に使用されるプロトコルは、ステートレスであり得る。異なる実施形態におい
て、読み出し要求及び応答には、例えばREST(具象的ステート転送)アーキテクチャ
に従う様々なHTTP(ハイパーテキスト転送プロトコル)変体のうちのいずれか等、様
々なステートレスアプリケーション層プロトコルのうちのいずれかが使用され得る。結果
集合3510A及び読み出し記述子3512Aは、メモリバッファ3535に格納され得
る。
タイムライン3599上の時間t3に、トランザクションの範囲内の第2読み出し要求
R2が、例えばエンドユーザの別の読み出し要求に応じて、ステートレスプロトコルを介
して格納グループ3575の第2データストアDS2に対し提出され得る。前と同じよう
に、結果集合3510B及び読み出し記述子3512Bをクライアント側コンポーネント
に提供後、データストアDS2は、R2またはクライアント側コンポーネントに関するい
かなるセッションステートメタデータも保持し得ない。描かれた実施形態において、格納
グループ3575のメンバーデータストアのいずれも、クライアント側コンポーネントに
てトランザクションが始まったという事実を認識しておらず、データストアにとって、各
読み出し要求は単純に、他のいかなる読み出しまたは書き込みにも無関係な独立要求とし
て映り得る。
時間t4に、ペイロード3520AがR2の結果集合に依存し、最終的にデータストア
DS3に適用される(準備されている候補トランザクションが最終的にコミットされた場
合に)書き込みW1は、ローカルに、例えば描かれた実施形態においてクライアント側バ
ッファ3535内のメモリの一部に対し、実行され得る。W1が対象とする目標アドレス
を示すW1の書き込み記述子3522Aも、バッファ内で作成され得る。例えば、いくつ
かの実施態様において、目標アドレスのハッシュシグネチャが、書き込み記述子3522
Aとして使用され得る。時間t5に、ペイロード3520BがR1の結果集合に依存し、
DS4を対象とする書き込みW2は、同様にクライアント側コンポーネントのローカルメ
モリ内で実行され得る。描かれた実施形態において、W2の第2書き込み記述子3522
Bもまた、クライアント側コンポーネントのメモリバッファ3535内で準備され得る。
時間t6に、COMMIT_TRANSACTION要求が、エンドユーザから受信さ
れ得る。従って、読み出し記述子3512A、3512B、書き込み記述子3522A、
3522B、及び書き込みペイロード3520A、3520Bは全て、格納グループ35
75のLTMに提出する候補トランザクションコミット要求3524内に包括され得る。
LTMの競合検出器3566は、読み出し記述子と、LTMのコミットレコードログの選
択部分集合のコンテンツとの分析に基づいて(部分集合は読み出し記述子に少なくとも部
分的に基づいて選択される)、候補トランザクションを受諾するか拒否するかを判定し得
る。後続の書き込みが結果集合を変更し、読み出し要求が再提出されたら変更された結果
集合が返されるため、R1またはR2は再現不可能であるという読み出し書き込み競合が
検出された場合(例えば読み出し記述子のうちの1つに含まれるRRVMを使用した判定
の結果)、候補トランザクションは拒否され得る。このようなシナリオで、クライアント
側コンポーネントは、描かれた実施形態において、読み出しR1、R2を再試行して新た
な結果集合と読み出し記述子とを取得し、LTMに提出する新たな候補トランザクション
コミット要求を生成し得る。このような再試行は、試みのうちの1つが成功するまで、ま
たは要求中のトランザクションを有するエンドユーザにトランザクションが失敗したと通
知されるまで、ある閾値回数実行され得る。
描かれた実施形態において、競合検出器3566がコミット要求3524を受諾する場
合、W1及びW2の書き込み記述子及びペイロードは、LTMのログに格納され得る。少
なくともいくつかの実施形態において、競合を検出するために、前に格納された書き込み
記述子により示される書き込みは、読み出し記述子により示される読み出しとの潜在的ま
たは実際の重複を検査される必要があり得る点で、書き込み記述子は、コミット要求に含
まれる読み出し記述子の論理的「双対」とみなされ得る。従って、所定の実施態様におい
て書き込みが書き込み記述子内に示される方法は、読み出しが読み出し記述子内に示され
る方法と、高いレベルで、論理的に適合する必要があり得る。LTMの書き込みアプライ
ヤ3568は、受諾決定に関して同期的または非同期的に、書き込みW1、W2をその対
象データストアDS3、DS4に適用し得る。いくつかの実施形態において、書き込みア
プライヤもステートレスプロトコルを使用し、対象データストアDS3、DS4は、書き
込みアプライヤ、または書き込みアプライヤにより発行される書き込み要求に関するいか
なるセッション関連メタデータも格納する必要はなくてよい。
従って、図35に示される実施形態において、複数の書き込み(W1、W2等)は、い
かなるトランザクション関連メタデータが関与データストアにて生成または格納されるこ
となく、クライアント側コンポーネントにて準備される原子トランザクションの一環とし
てコミットされ得る。基礎データストアは複数書き込みトランザクションにネイティブに
対応し得ないにもかかわらず、及び/または基礎データストアはステートレス読み出し及
び書き込み動作にのみ対応し得るにもかかわらず、いくつかの実施形態において、このよ
うなクライアント側複数書き込みトランザクションが実施され得る。すなわち、メンバー
データストアは所定の読み出しの発生時間から所定の読み出しの結果に依存する書き込み
の発生時間までセッション情報(またはトランザクションステート情報)を保持しないに
もかかわらず、トランザクション原子性及び整合性が異種格納グループのユーザに提供さ
れ得る。
前述のように、ログベーストランザクションマネジャーは、コミット済み書き込みに対
応する書き込み記述子(3522A、3522B等)を持続的変更ログ(前述の複製DA
Gを使用して実施されるログ等)に格納し得る。いくつかの実施形態において、コミット
済みトランザクションの読み出し記述子は先のコミット判定に不要であり得るにもかかわ
らず、読み出し記述子のコンテンツもトランザクションマネジャーにより保存され得る。
図36は、少なくともいくつかの実施形態による、書き込み記述子と読み出し記述子とを
それぞれのログに格納する例示的トランザクションマネジャーを示す。示されるように、
ログベーストランザクションマネジャー3602は、書き込み記述子ログ3610と、読
み出し記述子ログ3620との2つの別個の持続的ログを使用する。別の実施形態におい
て、両種類の記述子は、共有持続的ログに格納され得る。読み出し記述子ログ3610の
コンテンツは、前述の楽観的並行処理制御手法の一環として読み出し書き込み競合に関し
て、及び/または同様に前述の論理制約管理に関して、検査を行うために使用され得る。
読み出し記述子ログ3620は、例えば異種格納グループの異なる部分にわたる読み出し
の分散を決定するために、例えば作業負荷分析に使用され得る。いくつかの実施形態にお
いて、コミット済み及び拒否済みトランザクション両方の読み出し記述子は、作業負荷分
析の目的で保持され得る。拒否済みトランザクションの読み出し記述子も、トランザクシ
ョン拒否の原因を特定するために分析され、例えばトランザクション拒否の頻度を低減す
るために任意の行動が取られるべきか否か(多数のトランザクション拒否を生じるほど頻
繁に読まれ頻繁に更新される特定のデータオブジェクトをパーティション分割する等)が
判定され得る。
図37は、少なくともいくつかの実施形態による、読み出し要求に応じて読み出し記述
子が提供される、格納システムで行われ得る動作態様を示すフロー図である。構成要素3
701に示されるように、複数のデータストアを備える異種格納グループHSG1が確立
され得る。グループのメンバーデータストアは、異なるデータモデル及び/または読み出
しインターフェースに対応し得る。例えばグループは、リレーショナルデータベース、非
リレーショナルデータベース、インメモリデータベース、分散キャッシュインスタンス、
ファイルストアもしくはファイルシステム、ウェブサービスインターフェースを介してア
クセス可能な非構造化データオブジェクトを含む格納サービス等の1つまたは複数のイン
スタンスを含み得る。HSG1を実施するサービスのクライアントは、グループにデータ
ストアを登録(追加)し得る、またはグループからデータストアをプログラムで削除し得
る。少なくともいくつかの実施形態において、グループHSG1の全てのメンバーデータ
ストアは、読み出し要求に対し、(読み出し結果集合に加えて)サービスにより指示され
る共通読み出し記述子形式に従った読み出し記述子で、応答するように求められ得る。
HSG1のデータストアDS1を対象とする特定読み出し要求R1が受信され得る(構
成要素3704)。R1は、その結果集合を決定するのに使用するフィルタ基準の指示を
含み得る。フィルタ基準の特質は、対象とするデータストアの種類によって異なり得る。
例えば、R1がSQL(構造化照会言語)またはSQL似のインターフェースに対応する
データベースである場合、フィルタ基準は、SQLのSELECT句として表現され得る
。DS1がウェブサービスインターフェースを提供する格納サービスである場合、フィル
タ基準は、1つまたは複数のURL(ユニバーサルリソースロケータ)として表現され得
る。キー値データストアでは、フィルタ基準は、データストア内の特定レコード位置/ア
ドレスに順に対応する一意キーの集合を含み得る。読み出し要求の結果集合が、データス
トアDS1の前にコミット済みのステートを表すDS1の1つまたは複数のステート遷移
インジケータ(STI)と共に、特定され得る(構成要素3707)。結果集合が生成さ
れた時にコミット済み書き込みの結果が可視状態であるように、いくつかの実施形態にお
いて、STIは、データストアに対するコミット済み書き込みの適用に対応する論理タイ
ムスタンプを含み得る。一実施態様において、例えば、STIは、データストアレベル変
更論理タイムスタンプ、テーブルレベル変更論理タイムスタンプ、またはレコードレベル
変更論理タイムスタンプ(例えば図33に例示されるDMT、TMT、及びRMT)、以
上のうちの1つまたは複数含み得る。いくつかの実施形態において、論理タイムスタンプ
の代わりに、または論理タイムスタンプに加えて、実時間ベースタイムスタンプが使用さ
れ得る。
R1に対応する読み出し記述子RD1が生成され得る(構成要素3710)。読み出し
記述子は、例えば、STI(複数可)と、少なくともいくつかの読み出し再現性検証メタ
データ(RRVM)を含み得る。RRVMは、例えば、R1が再現可能な読み出しか否か
、すなわち、最初に結果集合が取得された後のある時点でR1が再発行されたとしても、
R1の結果集合は変化のないままであるか否かを判定するのに使用され得る。RRVMの
形式及びコンテンツは、異なる実施形態において、例えば再現性を判定する読み出しの種
類、関与するデータストアの特質等に基づいて異なり得る。いくつかの実施形態において
、例えば、RRVMは、R1結果集合のオブジェクトが取得された取得先位置の符号化、
例えば少なくとも1つのそのような位置のハッシュシグネチャ等を含み得る。範囲クエリ
、または図31に関連して議論された読み出しに類似するクエリ等、より複雑なフィルタ
/選択基準を有する読み出しに関しては、クエリ述語またはSELECT句の符号化がR
RVMに含まれ得る。そしていくつかの実施形態において、R1の結果が変化したか否か
を判定するために調査可能な式(または実行可能な関数)が、RRVM内に示され得る。
一実施態様において、読み出し要求R1全体は、例えば符号化または圧縮された形式で、
RRVMに含まれ得る。いくつかの異なる種類のRRVMが生成され得る(例えばアドレ
スベースシグネチャ、あるいはクエリ述語符号化、あるいは関数)いくつかの実施形態に
おいて、RRVMの種類は、読み出し記述子RD1内のフィールドにより示され得る。R
D1は、HSG1のクライアント側コンポーネント(例えばHSG1が実施されるサービ
スのフロントエンド要求ハンドラノード、またはサービスのライブラリコンポーネント)
に送信され得る。RD1は、いくつかの実施形態においてトランザクションコミット要求
を構成するために、または作業負荷分析等の他の目的で、クライアント側コンポーネント
にて使用され得る。
図38は、少なくともいくつかの実施形態による、候補トランザクションコミット要求
がクライアント側コンポーネントにて生成される、格納サービスで行われ得る動作態様を
示すフロー図である。クライアント側コンポーネントには、例えば、格納サービスのフロ
ントエンド要求ハンドラノードにて、または格納サービスにより顧客へ提供されるライブ
ラリ内で、実行される1つまたは複数のプロセスが含まれ得る。構成要素3801に示さ
れるように、候補トランザクションを準備するという指示、例えばサービスのアプリケー
ションプログラミングインターフェース(API)を介して受信されるBEGIN_TR
ANSACTION要求等が、エンドユーザから異種格納グループHSG1のクライアン
ト側コンポーネントにて受信され得る。いくつかの実施態様において、BEGIN_TR
ANSACTION要求からCOMMIT_TRANSACTION要求(またはEND
_TRANSACTION要求)までの間にクライアント側コンポーネントにて行われる
動作集合は、例えば当該間隔内に発行された読み出しの再現性は、トランザクションの書
き込みがコミットされる前に検証される必要があり得るという意味で、トランザクション
の範囲内であるとみなされ得る。
1つまたは複数の読み出し要求が、例えばエンドユーザによる読み出しAPI呼び出し
に応じて、クライアント側コンポーネントにより、トランザクションの範囲内で、格納グ
ループHSG1のデータストアに送られ得る。読み出しのうちの少なくともいくつかは、
描かれた実施形態においてステートレスプロトコルを使用して実行され得る。すなわち、
読み出しが対象とするデータストアは、クライアントセッション情報を維持する、または
読み出し要求に関するその他の持続的メタデータを保持する必要はなくてよい。例えば、
データストアは、読み出しの結果が書き込み動作またはトランザクションに使用される予
定であることを示す情報を有し得ない。このような読み出し要求それぞれに応じて、対象
データストアにより、読み出し集合と読み出し記述子とが提供され得る(構成要素380
4)。所定の読み出し記述子は、読み出し集合が取得された時点でのデータストアのコミ
ット済みステート(またはデータベースインスタンスの場合はテーブルもしくはレコード
といったデータストアの部分集合のコミット済みステート)を示す1つまたは複数のステ
ート遷移インジケータ(STI)を含み得る。さらに、読み出し記述子は、読み出し再現
性検証メタデータ(RRVM)の少なくとも1つの要素、例えば、読み出しが再提出され
たら読み出しの結果は変わるか否かを検査するのに使用可能な読み出しクエリもしくは述
語の符号化等の情報、関数、または読み出し対象位置を表すハッシュシグネチャも含み得
る。読み出し結果集合及び読み出し記述子は、クライアント側コンポーネントによりアク
セス可能なメモリバッファに、例えばフロントエンド要求ハンドラノードにおける、また
はクライアント所有コンピューティングデバイスにおけるローカルメモリに、格納され得
る(構成要素3807)。
書き込みペイロードが読み出し結果集合のうちの少なくとも1つに依存し得る1つまた
は複数の書き込みは、ローカルメモリを使用して実行され得る。例えば書き込みペイロー
ドは、クライアント側コンポーネントにより書き込み可能なバッファに格納され得る。少
なくとも一実施形態において、トランザクションの範囲内の書き込みの結果として最終的
に書き込まれるHSG1のデータストアにおける対象位置もまた、読み出し結果集合に依
存し得る。いくつかの実施形態において、書き込み記述子(例えば書き込みの対象HSG
1位置に基づくハッシュシグネチャ)も、書き込みのうちの少なくともいくつかのために
、クライアント側メモリバッファに格納され得る(構成要素3810)。いくつかの実施
形態において、書き込み記述子は必要でなくてよいことに留意されたい。例えば、書き込
みペイロードが書き込み位置の指示を含み、そして読み出し書き込み競合検出を行うには
、当該位置で十分であり得る。トランザクションの全ての読み出し及び書き込みがローカ
ルで実行された後、トランザクションのローカル動作が完了したことの開示(COMMI
T_TRANSACTIONまたはEND_TRANSACTION要求等)が、クライ
アント側コンポーネントにて受信され得る。(構成要素3813)
描かれた実施形態において、読み出し記述子と、書き込みペイロードと、書き込み記述
子とを含む候補トランザクションのコミット要求が、クライアント側コンポーネントにて
生成され得る(構成要素3816)。いくつかの実施形態において、トランザクションの
範囲内に含まれる1つまたは複数の書き込みは、必ずしもトランザクション内に指示され
る読み出しの結果に依存するとは限らないことに留意されたい。例えば候補トランザクシ
ョンがコミットのために受諾される前に前述の類の論理制約(例えば重複排除制約または
コミット順序付け制約)が検査されるいくつかの実施形態において、論理制約のために追
加データシグネチャが生成され、コミット要求内に組み込まれ得る。HSG1のためにコ
ミット判定を行う責務を担うトランザクションマネジャー、例えば前述の類の楽観的並行
処理制御機構を使用するように構成されたログベーストランザクションマネジャー等に対
し、コミット要求は送信され得る(構成要素3819)。候補トランザクションをコミッ
トするか拒否するかに関する判定は、前述のように例えば読み出し書き込み競合を特定す
るための読み出し記述子と選択されたログの部分集合とを使用して、トランザクションマ
ネジャーにて行われ得る(構成要素3822)。候補トランザクションを受諾するという
決定がなされた場合(例えば使用されている並行処理制御プロトコルに従って読み出し書
き込み競合が検出されない場合)、新たなコミットレコードがトランザクションマネジャ
ーのログに追加され得る。少なくともいくつかの実施形態において、ログは、前述のよう
に複製有向非巡回グラフ(DAG)を使用して実施され得る。
拡張縮小性のための複数ログベーストランザクションマネジャーの使用
いくつかの実施形態において、単一のログベーストランザクションマネジャー(LTM
)は、前述の類の1つまたは複数のデータストアを含む格納グループにトランザクション
が要求されるレートに、対応不可能であり得る。例えば、少なくともいくつかの実施態様
において、要求コミットまたはトランザクションのレートが増加すると、コミットレコー
ドを持続的ログに挿入するのに利用可能なCPUリソース(例えば持続的ログに使用され
る複製DAGの所定のノードが実施されるホストにおける)が障壁となり得る。いくつか
の事例において、CPUに加えて、またはCPUの代わりに、ログレコードに使用される
格納デバイス、及び/またはログへのネットワーク経路もしくはログからのネットワーク
経路が、障壁となり得る。いずれかの単一のこのような障壁、またはこのような障壁の組
み合わせは、結果的に所定のLTMにより対応可能なトランザクションスループットを抑
制し得る。所定のLTMによる増大スループットに対応するためにより速い個別サーバ、
より速い格納デバイス、またはより速いネットワークコンポーネントを配備することは、
例えば費用の理由から、可用性の理由から、及び/または単純に最も速く利用可能なコン
ポーネントでもいくつかの作業負荷を処理不可能であり得るため、最終的には非実用的と
なり得る。
従って、少なくともいくつかの実施形態において、楽観的ログベース並行処理制御が使
用される格納グループの1つまたは複数のデータストアのデータは、論理的にパーティシ
ョンに分割され、パーティションレベルの競合検出のために、異なるパーティションにそ
れぞれのLTMが割り当てられる。例えば、テーブルT1、T2、T3、T4、T5の集
合を有するデータベースの場合、1つのLTMがT1、T2、T3を有するパーティショ
ンに割り当てられ、別のLTMがT4、T5を有するパーティションに割り当てられ得る
。このようなLTMは各自、1つの特定パーティションのコミットレコードが格納される
自身の持続的ログに関して、ローカル競合検出を実行可能であり得る。読み出し及び書き
込みが全て単一パーティションを対象とするトランザクションのコミット判定は、単一L
TMにより前述と同様の方法で対処され得る。しかしながら、いくつかのトランザクショ
ンは、複数のパーティションからの読み出し(及び/または複数のパーティションへの書
き込み)を伴い得る。このようなトランザクションは、本明細書において複数パーティシ
ョントランザクションと称され得る。複数パーティショントランザクションに対応する実
施形態において、クライアント側コンポーネント(ログベーストランザクション管理が実
施されている格納サービスのフロントエンド要求ハンドラにおけるプロセス、またはクラ
イアント所有デバイスにインストールするためにそのようなサービスにより提供されるラ
イブラリのコンポーネント等)は、関与するパーティションのローカル競合を検出するよ
うに割り当てられたそれぞれのLTMと一緒に、後述のように複数パーティショントラン
ザクションのコミットに参加する必要があり得る。
(a)格納グループのパーティションP1を対象とし、かつP1に対する前の読み出し
R1の結果に依存する書き込みW1、及び(b)パーティションP2を対象とし、かつP
2に対する前の読み出しR2の結果に依存する書き込みW2、以上を含む単純な例示的複
数パーティショントランザクションMPT1を検討する。当実施例において、ログベース
トランザクションマネジャーLTM1、LTM2はそれぞれ、P1、P2に関する読み出
し書き込み競合を検出するように指示される。一実施形態において、コミット要求CR1
(W1の書き込み記述子とR1の読み出し記述子RD1とを含む)は、クライアント側コ
ンポーネントCSC1によりLTM1に対し送信され得る。少なくともいくつかの実施形
態において、読み出し記述子RD1は、例えば図32〜図38に関して前述された読み出
し再現性検証メタデータ及びステート遷移インジケータの類を含み得る。RD1とコミッ
ト済み書き込みのLTM1のログとを使用して、LTM1は、CR1がローカルで検出可
能な競合、すなわちLTM1にて入手可能な情報を使用して特定可能な競合を有するか否
かを判定し得る。LTM1のログとRD1とを使用してLTM1により競合が見つからな
かった場合、LTM1は、CR1を条件付きでコミット可能であると指定し、条件付きコ
ミットレコードをLTM1のログに挿入し得る。W1が条件付きでコミット可能であると
指定されたことが、クライアント側コンポーネントCSC1に通知され得る。MPT1の
第2書き込みW2に関して、CSC1は同様に、第2コミット要求CR2をLTM2へ送
信し得る。W2もローカルでコミット可能であること(例えばW2に対し条件付きコミッ
トレコードがLTM2のログに格納されたこと)がLTM2によりCSC1に通知された
場合、CSC1は、MPT1が全体的に、すなわち無条件でコミット可能であると判定し
得る。CSC1はそれから、MPTR1の無条件コミットレコードを、複数パーティショ
ンコミット判定レポジトリ(MCDR)に、例えばCR1、CR2に対応する条件付きコ
ミットレコード内のポインタが格納された位置に、挿入し得る。コミット済み書き込みを
P1に伝播するように割り当てられた書き込みアプライヤWA1は、W1は条件付きでコ
ミット可能であると判定されたことを示す、CR1に応じて生成されたコミットレコード
を調べ得る。WA1は、W1が条件付きでコミットされたと判定すると、対応する無条件
コミットレコードをMCDR内で検索し得る。いくつかの実施形態において、このような
無条件コミットレコードが見つかった場合(例えば後述のようなタイムアウト内に)、W
1はP1に伝播され得る。同様に、P2に対し書き込みを伝播するように指示された書き
込みアプライヤ(WA1または別の書き込みアプライヤWA2)は、CR2及びW2に対
応する条件付きコミットレコードを調べ、MPT1の無条件コミットレコードを探し、P
2に対しW2を伝播し得る。書き込みアプライヤ(複数可)により無条件コミットレコー
ドが見つからない場合、少なくともいくつかの実施形態において、書き込みは破棄され得
る(例えばW1、W2のどちらもそれぞれの目的パーティションに伝播され得ない)。
図39は、少なくともいくつかの実施形態による、格納グループの異なるパーティショ
ンに対しそれぞれのログベーストランザクションマネジャー(LTM)が確立され得る例
示的システム環境を示す。示されるように、システム3900において、パーティション
分割された格納グループ3902は、3つの論理パーティション(LP)のLP3910
A、3910B、3819Cを備え得る。一般に、前述の類の1つまたは複数のデータス
トア(例えば、リレーショナルデータベースインスタンス、非リレーショナルデータベー
スインスタンス、格納サービスオブジェクト、インメモリデータベースインスタンス、分
散キャッシュインスタンス、ファイルシステム等)を備える格納グループは、後述のよう
に、格納グループの目標性能要件等の様々な要素に応じて、様々な実施形態において任意
の所望数のパーティションに論理的に細分化され得る。いくつかの実施形態において、論
理パーティションは、それぞれの物理格納デバイスにも格納され得る。このような論理パ
ーティションの物理的分離は要件ではあり得ないが、例えば、パーティションP1内のテ
ーブルT1はディスクD1上に格納され、パーティションP2内のテーブルT2は別のデ
ィスクD2上に格納され得る等する。各論理パーティションは、対応LTMと、描かれた
実施例において構成される対応書き込みアプライヤ(WA)とを有するが、LTMとWA
間のこのような1対1のマッピングは、少なくともいくつかの実施形態において必要でな
くてよい。システム3900において、LP3910Aは持続的ログ3918Aを含むL
TM3915Aを有し、LP3910Bは持続的ログ3918Bを含むLTM3915B
を有し、LP3910Cは持続的ログ3918Cを含むLTM3915Cを有する。いく
つかの実施形態において、持続的ログ3918はそれぞれ、前述の複製DAGと同様の複
製DAGを使用して実施され得る。WA3920Aは、ログ3918A内のコミットレコ
ードを調べ、そこに指示される書き込みのうちの少なくともいくつかをLP3910Aに
伝播するように構成され、同様に、WA3920Bは、ログ3918Bのコミットレコー
ドを調べ、少なくともいくつかの書き込みをLP3910Bに伝播するように構成され、
そしてWA3920Cは、ログ3918Cのコミットレコードを調べ、少なくともいくつ
かの書き込みをLP3910Cに伝播するように構成される。
矢印1a、1bで示されるように、格納グループ3902のクライアント側コンポーネ
ント3930は、複数パーティショントランザクションMPT1のそれぞれのコミット要
求C‐Req1、C‐Req2を、LTM3915A、LTM3915Cに対しそれぞれ
提出し得る。C‐Req1は、LP3910Aを対象とする前の読み出しR1に依存する
少なくとも1つの書き込みW1を含み、一方、C‐Req2は、LP3910Cを対象と
する前の読み出しR2に依存する少なくとも1つの書き込みW2を含み得る。(a)コミ
ット要求に含まれる読み出し記述子と(b)ログ3918A、3918Cとを使用して、
LTM3915A、3915Cは、書き込みW1、W2が条件付きでコミット可能である
か否か(例えばそれぞれのローカルログとそれぞれの読み出し記述子とを使用して、書き
込みとのいずれかの読み出し書き込み競合が検出され得るか否か)をそれぞれ判定し得る
。描かれた実施形態において、複数パーティショントランザクションのW1またはW2等
の書き込みは、所定のLTMにより条件付きで(無条件ではなく)コミット可能であると
みなされ得る。なぜなら、LTMは、複数パーティショントランザクション全体としての
コミットに関して判定を行うのに十分な情報を有さなくてよいからである。実際に、少な
くともいくつかの実施態様において、LTMは、複数パーティショントランザクションの
他の書き込みを認識すらしなくてよい。ローカルで入手可能な情報を使用して競合が全く
検出されない場合、例えば、C‐Req1に対応する条件付きコミットレコードCond
‐C‐Rec1がLTM3910Aによりログ3918Bに格納され、C‐Req2に対
応する条件付きコミットレコードCond‐C‐Rec2がLTM3910Cによりログ
3918Cに格納され得る。さらに、少なくともいくつかの実施形態において、要求書き
込みが条件付きでコミットされたことを示すそれぞれの応答が、それぞれのLTM391
5A、3915Bにより、クライアント側コンポーネント3930に提供され得る。従っ
て、矢印2aで示されるように、応答C‐Resp1がLTM3915Aによりクライア
ント側コンポーネント3930に提供され、そして矢印2bで示されるように、応答C‐
Resp1がLTM3915Bにより提供され得る。コミット要求C‐Resp1、C‐
Resp2は、少なくともいくつかの実施態様において並行して送信され、同様にコミッ
ト要求の処理もまた並行して行われ得ることに留意されたい。少なくともいくつかの実施
形態において、複数パーティショントランザクションの異なるコミット要求は任意の順序
でまたは並行して送信され、対応する条件付きコミットレコードはそれぞれのLTMによ
り任意の順序でまたは並行して格納され、そしてコミット要求に対する応答はクライアン
ト側コンポーネントにより任意の順序でまたは並行して受信され得る。
描かれた実施形態において、書き込みW1、W2は両方とも条件付きでコミット可能で
あるという確認に応じて、クライアント側コンポーネント3930は、無条件コミットレ
コードUncond‐C‐Recを、複数パーティションコミット判定レポジトリ(MC
DR)3940Aに格納し得る(矢印3)。少なくともいくつかの実施形態において、ク
ライアント側コンポーネントは通常、MPT1等の所定の複数パーティショントランザク
ションの全ての書き込みが条件付きでコミット可能であると指定されたことを確認後、こ
のような無条件コミットレコードを格納し得る。描かれた実施例において、2つのMCD
R3940A、3940Bが、格納グループ3902に対し確立されている。後述のよう
に例えば複数パーティショントランザクション要求の見込みまたは目標スループットに基
づいて、一般に様々な実施形態において任意の所望数のMCDRが確立され得る。複数の
MCDRが確立された実施形態において、所定の無条件コミットレコードにどのMCDR
を使用するかに関する決定が、例えばトランザクションに関与する特定のパーティション
に基づいて、クライアント側コンポーネントにより実施される負荷分散基準に基づいて等
、様々な要素に基づいて行われ得る。少なくともいくつかの実施形態において、無条件コ
ミットレコードを格納する位置の開示が、クライアント側コンポーネントによりLTMへ
送信されるコミット要求内に含まれ、かつログ3918に格納されている条件付きコミッ
トレコードにも含まれ得る。いくつかの実施態様において、MCDRは、持続的ログ(例
えばログ3918と同様)のインスタンスとして実施され得る。
条件付きコミットレコードCond‐C‐Rec1がログ3918Aに格納された後の
ある時点に、書き込みアプライヤ3920Aが当該レコードを調べ得る(矢印4aにより
提示)。いくつかの事例において、このような調査は同期的であり(例えば条件付きコミ
ットレコードはログ3918に書き込まれるとすぐに、格納グループのデータストアにコ
ミット済み書き込みをプッシュする責務を担う書き込みアプライヤにより読み出され得る
)、一方、他の事例において、書き込みアプライヤは、条件付きコミット判定とは非同期
的にコミットレコードを調べ得る。Cond‐C‐Rec1を調べた際、WA3920A
は、コミットが条件付きであると判断し、よって対応する無条件コミットレコードの検出
を試み得る。少なくともいくつかの実施形態において、無条件コミットレコードUnco
nd‐C‐Recの位置の開示が、条件付きコミットレコードCond‐C‐Rec1に
含まれ得る。別の実施形態において、書き込みアプライヤは、例えばデータベース内の複
数パーティショントランザクションの識別子を検索することにより、他の情報源から無条
件コミットレコードの位置を学び得る。矢印5aで示されるように、描かれた実施形態に
おいて、WA3920Aは、Uncond‐C‐RecをMCDR3940A内に発見し
、よって条件付きコミットレコードCond‐C‐Rec1内に示される書き込みを、そ
の対象書き込み先に実際に適用することを確定し得る。矢印6aに示されるように、書き
込みW1は従って、パーティションLP3910Aに伝播され得る。描かれた実施形態に
おいて、書き込みアプライヤ3920Cは、WA39020Aと同様の手続きを行い得る
。例えば書き込みアプライヤ3920Cは、条件付きコミットレコードCond‐C‐R
ec2を同期的または非同期的に調べ(矢印4b)、対応する無条件コミットレコードが
格納されていると見込まれる位置を特定し、Uncond‐C‐Recを検索し得る(矢
印5b)。W2が属する複数パーティショントランザクションが無条件にコミットされて
いることを確認した後、WA3920Cは従って、W2をその目的書き込み先であるLP
3910Cに伝播し得る。
さらに詳しく後述されるように、少なくともいくつかの実施形態においてタイムアウト
機構が実施され、よって無条件コミットレコードUncond‐C‐Recがある時間間
隔内に書き込まれたことをWA3920のどちらかが確認不可能な場合には、W1または
W2等の対応書き込み(複数可)の伝播は破棄され得る。いくつかの実施形態において、
複数パーティショントランザクションの書き込みがコミット不可能となる競合をLTM3
915が発見した場合、クライアント側コンポーネント3930は、無条件コミットレコ
ードの代わりに無条件アボートレコードをMCDR3940Aに格納し得る。LTM39
15AはW1を条件付きでコミット可能であると指定するが、LTM3915Bは競合に
基づきW2をコミット不可能であると指定するシナリオを検討する。後述のシナリオにお
いて、W1が属する複数パーティショントランザクションの無条件コミットレコードを見
つけようとWA3920Aが試みる場合、WA3920Aは、代わりに複数パーティショ
ントランザクションが破棄/アボートされたことを発見し、従って書き込みW1の伝播を
破棄し得る。少なくともいくつかの実施形態において、複数パーティショントランザクシ
ョンを破棄/アボートする決定がなされた場合、ログ3918内の条件付きコミットレコ
ードは、変更(例えばアボートを示すように)または削除され得る。同様に、いくつかの
実施形態において、複数パーティショントランザクションを無条件にコミットする決定が
なされた場合、ログ3918内の対応する条件付きコミットレコードは、親複数パーティ
ショントランザクションが無条件にコミットされたことを示すように変更され得る。コミ
ット判定のための競合検出動作のうちの少なくともいくつかは、ログ3918のコンテン
ツに基づいて行われ得るため、このような実施形態において、コミットの条件制限の不明
確さを解消することは、後続のコミット判定を行うのに役立ち得る。
格納グループの構成に含めるLTM、WA、及びMCDRの数に関する決定は、異なる
実施形態において、様々な要素に基づき得る。図40は、少なくともいくつかの実施形態
による、格納グループの性能ベースのトランザクション管理構成の実施例を示す。示され
るように、分散格納サービス構成マネジャー4080は、2つの格納グループのそれぞれ
の構成要求4050A、4050Bを受信し得る。構成要求4050Aは、クライアント
が、10000の目標トランザクションスループットレートすなわちTPS(毎秒トラン
ザクション)4005Aと、50ミリ秒の目標書き込みレイテンシ4010A(例えば書
き込み要求と対応書き込みの対象データストアへの伝播との間の遅延が平均50ミリ秒を
超えない)とを有することを示し得る。例えば含まれるデータストアの種類、ストアの最
大サイズ等を示す、クライアントの格納グループのデータストアリスト4020A(例え
ばデータストアDS1、DS2)も提供され得る。同様に、構成要求4050Bは、クラ
イアントのデータストアリスト4020B(例えばデータストアDS3、DS4、DS5
)と、目標TPS4005B(例えば20000)と、目標書き込みレイテンシ4010
B(例えば200ミリ秒)とを示し得る。
構成要求のコンテンツに少なくとも部分的に基づいて、構成マネジャー4080(分散
格納サービスの管理/制御プレーンのコンポーネントであり得る)は、それぞれの要求4
050に対し、候補トランザクション管理構成を生成し得る。描かれた実施例において、
構成要求4050Aに応じて生成されたトランザクション管理構成4060Aは、2つの
LTM4025A、4025Bと、4つの書き込みアプライヤ4027A〜4027Dと
、1つのMCDR4029Aとを含み得る。いくつかの実施形態において、提案されるト
ランザクション管理構成のLTMの数は、クライアントの格納グループの提示または推薦
パーティション分割に対応し得る(例えば論理パーティションごとに1つのLTMが設定
され得る)。このような実施形態において、クライアントが提案パーティション分割を了
承する場合、クライアントまたは格納サービスのどちらかが、好適なパーティション分割
プランを決定し得る。別の実施形態において、クライアントは、例えばクライアントの目
標TPSに少なくとも部分的に基づいて、その格納グループをパーティション分割し、パ
ーティション分割プランを構成要求の一部として構成マネジャーに提供するように求めら
れ得る。
図40の描かれた実施例において、所定の構成に選ばれるLTMの数は、目標TPSに
比例する。従って、要求4050Aに示される目標10000TPSに対して、構成40
60A内に2つのLTMが提示され、そして要求4050Bに示される目標20000T
PSに対して、4つのLTM(4025K〜4025N)が推薦される。推薦される書き
込みアプライヤの数は、目標書き込みレイテンシに基づき、より小さい目標レイテンシに
はより多くのアプライヤが推薦される。従って、50ミリ秒の目標書き込みレイテンシの
ために4つの書き込みアプライヤが構成4060Aに含まれ、一方要求4050Bに示さ
れる200ミリ秒の書き込みレイテンシのためには、2つの書き込みアプライヤ4027
K、4027Lのみが構成4060Bに含まれる。MCDRの数もまた、異なる実施形態
において、目標TPS、複数パーティショントランザクションの目標分数等、様々な要素
に基づいて選択され得る。示される実施例において、要求4050Aに示されるパラメー
タに対して、2つのMCDR4029K、4029Lが推薦される。
構成要求4050に含まれるパラメータの種類、及びパラメータとトランザクション管
理構成4060の推薦コンポーネント数との関係は、異なる実施形態において図40に示
されるものとは異なり得る。例えば、いくつかの実施形態において、クライアントは、複
数パーティショントランザクション対単一パーティショントランザクションの目標割合も
、自身の構成要求内に示す必要があり、このような割合は、構成マネジャーによりMCD
Rの推薦数を決定するのに使用され得る。少なくともいくつかの実施形態において、構成
マネジャーがクライアントに対し推薦構成を提供した後、クライアントは、構成マネジャ
ーがLTM、WA、及び/またはMCDRを配備/インスタンス化する前に、推薦内容を
承認する必要があり得る。いくつかの実施形態において、格納グループに設定されるMC
DR、LTM、及び/またはWAの数は、例えばトランザクション処理上の中断を要する
ことなく、作業負荷が変化するとともに動的に調整され得る。
少なくともいくつかの実施形態において、所定のデータストアは、ログベーストランザ
クション管理のために、いくつかの論理パーティションに分割され得る。すなわち、単一
のデータストアの部分集合のために、競合検出及び条件付きコミット判定を管理するよう
に、LTMが確立され得る。図41は、少なくともいくつかの実施形態による、所定のデ
ータストアのために複数のログベーストランザクションマネジャーが確立され得る例示的
構成を示す。示されるように、描かれたシナリオにおいて、格納グループ4102は、デ
ータストア4110A(例えば非リレーショナルデータベースのインスタンスを備え得る
)と、データストア4110B(例えばインメモリデータベースのインスタンス)と、デ
ータストア4110C(例えば非構造化オブジェクトへインターフェース接続するウェブ
サービスを提供する格納サービスのオブジェクトの集合)とを含み得る。
描かれた実施形態において、格納グループ4102は、6つの論理パーティション(L
P)4120A〜4120Fに分割されている。データストア4110AはLP4120
A、4120Bを有し、データストア4110BはLP4120Cを有し、そしてデータ
ストア4120CはLP4120D、4120E、4120Fを有する。各論理パーティ
ション4120には、対応LTM4125が確立され、例えばLP4120AはLTM4
125Aを有し、LP4120BはLTM4125Bを有する等する。予想データ集合サ
イズはパーティションの数を決定する際の要素であり得るが、少なくともいくつかの実施
態様において、所定のデータストアのためにインスタンス化される論理パーティション及
び/またはLTMの数は、データストア内に予想されるデータ量に必ずしも比例するとは
限らない。様々な実施形態においてパーティション分割を決定するために、例えば、様々
な種類のトランザクション(例えば単一パーティション、複数パーティション、またはデ
ータストア横断トランザクション)の予想レート、LTM4125に使用されるデータス
トア及び/またはサーバのネイティブ性能(例えばどれだけ速く書き込みがLTMログに
適用され得るか)、データストアに対する可用性またはデータ耐久性目標、クライアント
予算目標、異なるデータストアに関する価格設定ポリシー差異等、他の要素も使用され得
る。
少なくともいくつかの実施形態において、いくつかのLTM4125は、特定の種類の
トランザクションを実施するために協働する必要があり得る。例えば、LP4120Aが
テーブルT1を備え、そしてLP4120Bが別のテーブルT2を備えるシナリオを検討
する。複数パーティショントランザクションのコミット要求CR1が、クライアント側コ
ンポーネントによりLTM4125Aに送られる。CR1はT1に対する読み出しR1の
読み出し記述子を示し、かつR1の結果に基づく2つの書き込み、T1に対する書き込み
W1とT2に対する書き込みW2とを含む。このようなシナリオにおいて、LTM412
5AがそのローカルログとR1の読み出し記述子とに基づいていかなる競合も検出しない
場合、W1とW2の両方ともコミット可能と指定され得る。しかしながら、W2はT1を
備えるパーティションとは異なるパーティションを対象とする。このようなシナリオにお
いて、少なくともいくつかの実施形態において、それぞれの条件付きコミットレコードが
、LTM4120AとLTM4120Bの両方のログに書き込まれ得る(例えばLTM4
120AからLTM4120Bへ送られる要求の結果)。いくつかの実施形態において、
格納グループの異なるデータストアのために確立されたLTM間で同様の協働が実施され
得る。例えば、W2がLP4120Dを対象とする場合、LTM4120Aは、W2の条
件付きコミットを含むための要求をLTM4120Dへ送信し得る。
前述のように、いくつかの実施態様において、複数パーティションコミット判定レポジ
トリ(MCDR)は、LTMにより使用される持続的ログと同様の持続的ログを使用して
実施され得る。従って、このような一実施態様において、LTMに使用されるログが複製
DAGを使用して実施され得るように、所定のMCDRは、図1に示される複製DAGと
同様の複製DAGを使用して実施され得る。図42は、少なくともいくつかの実施形態に
よる、格納グループのマスタパーティションに対し確立されるログベーストランザクショ
ンマネジャーのログと共に、複数パーティションコミット判定レポジトリが共同配置され
る例示的構成を示す。描かれた実施形態において、格納グループ4202は、マスタ論理
パーティション4210Aと、非マスタ論理パーティション4210B、4210Cとに
細分化されている。パーティションのうちの1つをマスタまたは主要に指定することは、
異なる実施形態において、例えば、パーティションに格納されたデータの相対的重要度(
格納グループ4202が確立されたクライアントの観点から)、目標性能、コンテンツが
パーティションに含まれるデータストアの可用性またはデータ耐久性目標、及び/または
他の要素に基づき得る。
描かれた実施形態において、論理パーティション4210それぞれのために、それぞれ
のLTM4215が構成され得る。描かれた実施形態において、マスタLP4210Aの
ためにインスタンス化されたLTM4215AはマスタLTMに指定され、一方、421
5B、4215C等の残りのLTMは非マスタLTMに指定され得る。少なくとも一実施
態様において、マスタLTM4215Aは、非マスタLTMのために配備されるサーバよ
り大きな演算、格納、メモリ、及び/またはネットワーク能力を有する1つまたは複数の
サーバを使用して実施され得るが、リソース能力におけるこのような非対称は要件でなく
てよい。描かれた実施形態において、マスタLTMのログ4218Aは、格納グループ4
202に使用されるMCDR4240と共に、共同配置され得る(例えば演算、ネットワ
ーク、格納、及び/またはメモリのために同じサーバのリソースを共有し得る)。MCD
R4240及び/またはログ4218Aはそれぞれ、共同配置されているノードのうちの
いくつかと共に、いくつかの実施形態において、複数の複製DAGノードのそれぞれとし
て実施され得る。例えば、複製DAG‐RD1のノードN1、N2、N3、N4がログ4
218Aに使用され、別の複製DAGのノードNk、Nl、Nm、NnがMCDR424
0に使用され、N1は所定のサーバ上でNkと共同配置され、N2は別のサーバ上でNl
と共同配置される等する。少なくともいくつかの実施形態において、MCDR4240に
使用される複製DAGのノードの数は、マスタLTMのログ4218Aに使用される複製
DAGのノードの数と同一である必要はない。一実施形態において、ログ4218A及び
MCDR4240のレコードに、同一の複製DAGが使用され得る。いくつかの実施形態
において、LTMのうちの1つをマスタとして指定することは、必ずしもそのLTMのリ
ソースをMCDRと共有することを伴うとは限らないことに留意されたい。別の実施形態
において、複数のLTMログが、格納グループのそれぞれのMCDRと共同配置され得る
図43は、少なくともいくつかの実施形態による、複数パーティショントランザクショ
ンに対応する格納グループで生成され得るコミット要求の例示的構成要素を示す。示され
るように、コミット要求4344は、トランザクション種類4302(例えばコミットが
要求されている書き込み(複数可)は、単一パーティショントランザクションの一環であ
るか、複数パーティショントランザクションの一環であるか)の開示を含み得る。いくつ
かの実施態様において、トランザクション種類4302の代わりに、コミット種類がコミ
ット要求内に示され、例えば、複数パーティショントランザクションの書き込み(複数可
)に対し「条件付き」コミット種類が示され、単一パーティショントランザクションの書
き込み(複数可)に対し「無条件」コミット種類が示される。コミット要求は、1つまた
は複数の書き込み記述子4306により表現される書き込みが依存する読み出しを示す1
つまたは複数の読み出し記述子4304を含み得る。いくつかの実施形態において、読み
出し記述子は、RRVM(読み出し再現性検証メタデータ)、及び/または読み出しが対
象とするパーティションのコミット済みステートを表す1つまたは複数のステート遷移イ
ンジケータを含み、これらのRRVMとステート遷移インジケータは、(パーティション
レベルで)前述のRRVMとステート遷移インジケータに類似する。
書き込み記述子4306(図17〜25に関連して前論された書き込み集合記述子に類
似し得る)は、例えばコミット要求の書き込みが対象とする位置の指示を含み得る。書き
込みペイロード(複数可)4308は、書き込み記述子内に示されるアドレスに書き込む
データまたはコンテンツを示し得る。いくつかの実施形態において、重複排除制約及び/
またはコミット順序付け制約等を参照して前述された論理制約は、それぞれの論理制約記
述子4310を介して示され得る。(この論理制約記述子は、図22〜25を参照して論
じられる論理制約記述子に類似し得る。)論理制約は、いくつかのこのような実施形態に
おいてパーティションレベルで、他の実施形態において格納グループレベルで指示され得
る。論理制約が格納グループレベルで指示される場合、コミット要求4344を受信する
LTMは、いくつかの実施形態において、要求された書き込みを条件付きで(または無条
件に)コミットする前に確実に制約が満たされているように、他のLTMと協働する必要
があり得る。
図43に描かれた実施形態において、MCDR情報4312は、複数パーティショント
ランザクションのコミット要求内に含まれ得る。MCDR情報は、例えば、コミット要求
に応じて作成されると予想される無条件コミットレコード(またはアボートレコード)に
アクセスするために使用可能な識別子、キー、またはアドレスを含み得る。複数パーティ
ショントランザクションを表す一意的識別子またはキーは、例えば、いくつかの実施形態
において、ハッシュテーブルまたは同様の構造内で無条件コミットレコードを検索するた
めに使用され得る。MCDR情報4312は、LTMログに格納されている条件付きコミ
ットレコードに含まれ、そのため例えば書き込みアプライヤは無条件コミット/アボート
レコードの位置を特定することが可能である。
いくつかの実施形態において、コミットタイムアウト値4314がコミット要求内に指
示され得る。コミットタイムアウト値は、複数パーティショントランザクションMT1の
条件付きコミットレコードCCR1を調べた書き込みアプライヤWA1が、CCR1の書
き込み(複数可)の伝播を破棄する前に、MT1に対応する無条件コミットレコードUC
RがMCDRに書き込まれるのを待たなければならない最大時間を示し得る。従って、コ
ミットタイムアウト値により、クライアント側コンポーネントがハングアップした場合ま
たは障害を生じた場合の問題を解決する方法が提供され得る。これがなければ、いくつか
の実施態様において、複数パーティショントランザクションの結末(コミットまたはアボ
ート)に関して不確定性を生じる可能性があり得る。少なくともいくつかの実施形態にお
いて、MCDRは、単調に増加する論理タイムスタンプ値を提供する論理クロックを実施
し、そしてタイムアウト値は、このようなクロックの将来論理タイムスタンプ値として表
現され得る。例えば、1つのシナリオにおいて、コミット要求4344を準備するクライ
アント側コンポーネントは、MCDR論理クロックから現在の論理タイムスタンプ値LT
S1を読み出し、ある選択オフセット(例えば1000)をLTS1に加えてタイムアウ
ト値を取得し得る。タイムアウト値(LTS1+1000)は、コミット要求4344を
受信するLTMにより生成される条件付きコミットレコード内に格納され得る。いくつか
の実施形態において、そのコミット要求内に示される書き込みを伝播する責務を担う書き
込みアプライヤは、無条件コミットレコード(または無条件アボートレコード)が適切な
MCDR内に存在するか否かを定期的に確認し得る。書き込みアプライヤは、無条件コミ
ット/アボートレコードを発見できなかった場合、MCDRの論理クロックから現在の論
理タイムスタンプを取得し得る。当実施例において現在のタイムスタンプがLTS1+1
000のタイムアウト値を超える場合、書き込みアプライヤは、条件付きコミットレコー
ドの書き込みの伝播/適用を破棄し得る。いくつかの実施形態において図43に示される
全てのコンポーネントがコミット要求内に組み込まれ得るとは限らず、また他の実施形態
においては図43に図示されていない別のコンポーネントが含まれ得ることに留意された
い。MCDR情報4312及びコミットタイムアウト値4314は、コミット要求レコー
ド4344に含まれ得る複数パーティショントランザクションメタデータの実施例として
みなされ得る。
いくつかの実施形態において、単一パーティショントランザクションは、格納グループ
で処理される総作業負荷のうちかなりの割合(または過半数すら)を占め、コミット済み
単一パーティショントランザクションの書き込みは、MCDRを調べることなく書き込み
アプライヤによりパーティションに伝播され得る。単一パーティショントランザクション
の書き込みが依存する読み出しは、書き込み自体と同様に、複数のパーティションを対象
とし得ないため、単一のLTMのみがこのようなトランザクションに対し競合検出を行う
ように求められ得る。いくつかのこのような実施形態において、単一パーティショントラ
ンザクションに関してLTMログに格納される情報の種類は、複数パーティショントラン
ザクションに関して格納される情報の種類とは異なり得る。図44aと図44bは、少な
くともいくつかの実施形態による、ログベーストランザクションマネジャーにより単一パ
ーティショントランザクションと複数パーティショントランザクションに関してそれぞれ
格納され得るコミットレコードの例示的構成要素を示す。図44aに示されるように、単
一パーティショントランザクションのコミット要求4431が、クライアント側コンポー
ネント4430により、そのパーティションに指定されたLTM4402に対し提出され
得る。LTM4402の競合検出器4402は、コミット要求4431に含まれる1つま
たは複数の読み出し記述子を、持続的ログ4442に前に格納されているコミットレコー
ドの選択集合と共に使用して、コミット要求4431内に示される読み出しが後続のコミ
ット済み書き込みと競合するか否かを判定し得る。競合が検出されない場合、コミット要
求4431に対応するコミットレコード4444Aが、ログ4442に追加され得る。要
求4431は単一パーティショントランザクションに対するものであるため、コミットを
無条件として指定するために追加の整合(例えば複数パーティショントランザクションの
場合にクライアント側コンポーネントにより行われる整合と同様の整合)は必要でなくて
よい。従って、少なくともいくつかの実施形態において、コミットレコード4444Aは
、例えば示される種類フィールド4452Aを使用して、コミットが無条件であることを
示し得る。単一パーティションコミット要求のコミットレコード4444Aはまた、例え
ば1つまたは複数の書き込みペイロードの指示と、書き込みが対象とするパーティション
内の位置とを含む書き込み(複数可)情報4462Aも含み得る。
図44bに示されるように、複数パーティショントランザクションの書き込みのコミッ
ト要求4432に応じて、(例えば要求4432の読み出し記述子(複数可)と、ログ4
442に前に格納されたコミット要求の選択集合とに基づいて、)競合検出器4440は
、単一パーティショントランザクションのコミット要求に行われたのと同類のローカル競
合検出を行い得る。しかしながら、描かれた実施形態において、競合がローカルで検出さ
れないイベントで、ログ4442に格納される新たなコミットレコード4444Bは、コ
ミットレコード4444Aとはいくつかの点で異なり得る。例えば、フィールド4452
Bに示されるコミットの種類は、無条件に設定される代わりに条件付きに設定され得る。
コミット種類フィールド及び書き込み情報4462Bに加えて、いくつかの実施形態にお
いて、MCDR検索情報4456がコミット要求に含まれ得る。MCDR検索情報(コミ
ット要求4432のコンテンツに少なくとも部分的に基づき得る)により、書き込みアプ
ライヤは、条件付きコミットレコード4444Bに対応する無条件コミット/アボートレ
コードが位置すると見込まれる場所を特定することが可能になり得る。実施態様により、
異なる種類のエントリがMCDR検索情報4456に含まれ得る。例えば無条件コミット
レコードのアドレスまたは識別子が一実施態様において提供され得る、あるいはアドレス
の検索に使用可能なキーが提供され得る、あるいはアドレスを取得するために呼び出し可
能な関数が提供され得る。少なくともいくつかの実施形態において、例えば無条件コミッ
ト/アボートレコードがMCDR内で取得可能となるべき最終時間を示すコミットタイム
アウト4458が条件付きコミットレコード4444Bに含まれ、そのためタイムアウト
経過後このような無条件コミット/アボートレコードが見つからなかった場合、条件付き
コミットレコード4444Bの書き込み(複数可)は、それらの対象パーティションに伝
播される必要はなくてよい。前述のように、少なくともいくつかの実施形態において、こ
のようなタイムアウト値4458は、MCDRの論理クロックから取得されると見込まれ
る論理タイムスタンプ値により表現され得る。MCDR検索情報及びコミットタイムアウ
ト4458は、例えば書き込みアプライヤにより使用される、条件付きコミットレコード
4444Bに格納される複数パーティショントランザクションメタデータの実施例として
みなされ得る。
いくつかの実施形態において、単一パーティションまたは複数パーティションのコミッ
トレコードのコンテンツは、図44a、44bに例示されるものとは異なり得る。例えば
、一実施形態において、コミットレコードは、コミット種類フィールドの代わりにトラン
ザクション種類フィールド(例えば単一パーティションあるいは複数パーティション)を
含み、そして書き込みアプライヤは、トランザクション種類フィールドのコンテンツに基
づいて、所定のコミットレコードに関してMCDRのコンテンツの調査が必要か否かを判
定し得る。いくつかの実施態様において、MCDR検索情報4456は必要ではあり得な
い。例えば、条件付きコミットの無条件レコードが見つかり得る場所を特定するために書
き込みアプライヤが書き込み記述子のコンテンツを使用することを可能にするプロトコル
が使用され得る。一実施形態において、タイムアウト値はコミットレコード内に示され得
ない。代わりに例えば、書き込みアプライヤが、最初にコミットレコードを読み出した時
に自身のタイムアウトを設定し、そのタイムアウトが経過した時に書き込み伝播の破棄を
判定し得る。
図45は、少なくともいくつかの実施形態による、クライアント側コンポーネントと、
複数パーティショントランザクションに対応する格納グループのそれぞれのパーティショ
ンのログベーストランザクションマネジャーとにより行われ得る動作態様を示すフロー図
である。構成要素4502により示されるように、格納グループのクライアント側コンポ
ーネントCSC1は、格納グループのパーティションP1に対応付けられた第1ログベー
ストランザクションマネジャーLTM1に対し、複数パーティショントランザクションM
PT1の書き込みW1のコミット要求CR1を提出し得る。例えば、トランザクションが
格納グループの複数のパーティションを対象とする読み出しに依存する場合、トランザク
ションはCSC1により複数パーティションとして指定され、従ってトランザクション全
体としてのコミット判定は、複数のLTMにより個々のコミット判定が行われる(例えば
それぞれの読み出し書き込み競合検出が行われる)ことを要し得る。図45に例示される
簡潔なシナリオにおいて、MPT1は2つの書き込みW1、W2を含み得る。描かれた実
施形態において、書き込みW1は、読み出し記述子RD1がCR1に含まれる読み出しR
1(パーティションP1を対象とする)の結果に依存し得る。LTM1は、例えば自身の
持続的ログL1とRD1とを使用して競合検出を行い、LTM1によりローカルで検出可
能な読み出し書き込み競合の類に関してW1はコミット可能であるか否かを判定する。競
合が見つからなかった場合(構成要素4506にて判定)、W1は条件付き、またはロー
カルでコミット可能であるとLTM1により指定されたことを示す新たな条件付きコミッ
トレコードCCR1が、L1に格納され得る(構成要素4510)。いくつかの実施形態
において、CCR1はまた、コミットタイムアウト値、及び/またはMPT1が無条件で
コミット可能であると判明した場合/時に無条件コミットレコードが書き込まれる見込み
のMCDRの指示も含み得る。LTM1はCSC1に対し、例えばCR1に応じて、W1
が条件付きでコミット可能であると判明したこと、かつCCR1がL1に書き込まれたこ
とを通知し得る。描かれた実施形態において、W1がローカルでコミット可能ではない場
合、例えば構成要素4506に対応する動作において1つまたは複数の競合がLTM1に
より検出された場合、CCR1はL1に格納されず、そしてW1は拒否されたことがCS
C1に通知され得る(構成要素4518)。
描かれた実施形態において、CSC1はまた、別の書き込みW2に対応するコミット要
求CR2を、別のパーティションP2の競合検出の責務を担うログベーストランザクショ
ンマネジャーLTM2に対し提出し得る(構成要素4504)。CR2は、W2が依存す
る読み出し(複数可)を示す自身の読み出し記述子集合も含み得る。LTM2は、LTM
2のログL2とCR2の読み出し記述子とを使用して、W2に関する自身の競合検出を行
い、W2がコミット可能であるか否かを判定し得る。LTM2がW2を受諾することを妨
げる競合が見つからなかった場合(構成要素4508)、W2の条件付きコミットレコー
ドCCR2が、LTM2のログL2に格納され得る(構成要素4512)。描かれた実施
形態において、CCR2はまた、コミットタイムアウト値(例えばCCR1に格納された
ものと同じ値、またはLTM2により決定された異なる値)と、W2の無条件コミットレ
コードが見込まれるMCDR位置の指示とを含み得る。例えばLTM2により生成された
CR2に対する応答において、W2が条件付きまたはローカルでコミット可能であると指
定されたこと、かつCCR2がL2に書き込まれたことが、CSC1に通知され得る(構
成要素4516)。W2がローカルでコミット可能ではない場合、例えば構成要素450
8に対応する動作において1つまたは複数の競合がLTM2により検出された場合、CC
R2はL2に格納されず、そしてW2は拒否されたことがCSC1に通知され得る(構成
要素4520)。
描かれた実施形態において、例えばLTM1とLTM2の両者がそれぞれのログに対し
それぞれの条件付きコミットレコードCCR1、CCR2を書き込んだという特定に基づ
いて、CSC1がW1とW2の両方とも条件付きでコミットされたと判定した場合(構成
要素4528)、CSC1は、MPT1の無条件コミットレコードを生成し、MCDR内
に当該無条件コミットレコードを格納し得る(構成要素4531)。W1とW2のうちの
1つ、または両方がコミット不可能であると拒否された場合(同様に構成要素4528に
て検出)、例えば条件付きコミットレコードCCR1またはCCR2のうちの少なくとも
1つが書き込まれていないとCSC1が判定した場合、CSC1はMPT1の無条件コミ
ットレコードをMCDRに格納し得ない。いくつかの実施形態において、代わりにアボー
トレコードがMCDRに、例えば両方の書き込みがコミット可能であると指定された場合
に無条件コミットレコードが書き込まれ得る位置と同じ位置に、任意で格納され得る(構
成要素4534)。MPT1に関して2つの書き込みのみが論述されたが、一般に、複数
パーティショントランザクションは任意の所望数の書き込みを含み、そしてCSCは、少
なくともいくつかの実施形態において、全ての書き込みがそれぞれのLTMによりローカ
ルでコミット可能であると指定されたことを確認した後に、無条件コミットレコードを格
納し得ることに留意されたい。いくつかのシナリオにおいて、所定の複数パーティション
トランザクションのいくつかの異なる書き込み(例えばWx、Wy、Wz)は、単一のパ
ーティション(例えばLP1)を対象とし得る。いくつかの実施態様において、所定のパ
ーティションに対するいくつかのこのような書き込みは、単一のコミット要求に含まれ得
る。例えばWx、Wy、Wzを示す1つのコミット要求が、CSC1によりLTM1に対
し送られ得る。別の実施態様において、各書き込み要求は、個別のコミット要求を使用し
て処理され得る。いくつかの実施形態において、要求書き込みが条件付きでコミットされ
たか否かに関して通知されるのを待つ代わりに、CSCは、書き込みのステータスを特定
するためにより能動的な役割を果たし得る。例えば、CSCは、直接LTMログを読み出
し得る(例えば図15に示されるインターフェース1513と同様のログ読み出しインタ
ーフェースを使用して)、あるいはLTMに問い合わしてコミット要求の結果を特定し得
る。
少なくとも一実施形態において、クライアント側コンポーネントは、単一パーティショ
ントランザクションを複数パーティショントランザクションの特例として扱い得る。例え
ば単一パーティショントランザクションの書き込みがLTMによりコミットのために受諾
されたことが特定されると、単一パーティショントランザクションの無条件コミットレコ
ードは、単一パーティションと複数パーティションの両トランザクションに使用されるコ
ミット判定レポジトリ(CDR)に同様に格納され得る。このような実施形態において、
CDRは、単一パーティショントランザクションに関して、並びに複数パーティショント
ランザクションに関して、書き込みアプライヤにより調べられ得る。別の実施形態におい
て、コミット判定レポジトリは、複数パーティショントランザクションのためにのみ使用
され得る。
図46は、少なくともいくつかの実施形態による、複数パーティショントランザクショ
ンに対応する格納グループの書き込みアプライヤにより行われ得る動作態様を示すフロー
図である。構成要素4601に示されるように、格納グループの1つまたは複数のパーテ
ィションに変更を適用するように構成された書き込みアプライヤWA1は、格納グループ
のパーティションP1に対応付けられたログベーストランザクションマネジャーLTM1
の持続的ログに格納されているコミットレコードCRec1を調べ得る。対応コミットは
条件付きであるとCRec1が示す場合(構成要素4604にて検出)、WA1は、CR
ec1内に示される書き込み(複数可)は複数パーティショントランザクションの一部で
あること、かつ書き込みがそれらの対象書き込み先に伝播される前に無条件コミットレコ
ードが発見されなければならないことを、推測し得る。従って、構成要素4610に示さ
れるように、WA1は、(a)CRec1に対応する無条件コミットレコードUCR1が
格納されると見込まれるMCDR内の位置と、(b)複数パーティショントランザクショ
ンが破棄されないように、UCR1が見つからなければならない最終時間を示すコミット
タイムアウト値TO1とを、特定し得る。
WA1は、UCR1が既にMCDRに格納されているか否かを検査し得る(構成要素4
614)。描かれた実施形態において、UCR1が既に格納されている場合、WA1は、
CRec1内に示される書き込み(複数可)を、それらの書き込み先に伝播または適用し
得る(構成要素4626)。UCR1がMCDR内に存在しない場合(同様に構成要素4
614にて検出)、WA1は、(a)TO1により示されるタイムアウトが経過したか、
(b)CRec1に対応するアボートレコードがMCDRに格納されているかを検査し得
る(構成要素4617)。タイムアウトがMCDRの論理クロックの論理タイムスタンプ
単位で表現される実施態様において、例えば、WA1は、現在の論理タイムスタンプに関
してMCDRにクエリを提出し、タイムアウトが経過したか否かを判定し得る。タイムア
ウトが経過したこと、またはCRec1に対応する複数パーティショントランザクション
が明示的にアボートされたことがWA1により特定された場合、CRec1の書き込み伝
播及び/またはさらなる処理はWA1により破棄され得る、すなわちCRec1の書き込
みは、それらの書き込み先位置に適用される必要はない(構成要素4620)。タイムア
ウトは経過しておらず、かつアボートレコードも見つからない場合(同様に構成要素46
17にて検出)、WA1は、CRec1に対応する無条件コミットレコードがもう書き込
まれたか否かを確認するためMCDRを再検査する前に(構成要素4614)、特定また
は調整可能MCDR検査間隔を待ち得る(構成要素4623)。描かれた実施形態におい
て、MCDRは、(a)CRec1に対応する無条件コミットレコードUCR1が見つか
った、(b)CRec1に対応するアボートレコードが見つかった、または(c)タイム
アウトが経過した、以上の3つのイベントのうちの1つが起こるまで、構成要素4614
以降に従って、間隔を置いて検査され得る。(a)が起こった場合、CRec1の書き込
みは伝播され(構成要素4626)、他の場合には、書き込みは最終的に破棄され得る。
いくつかの実施態様において、書き込みの伝播が破棄された場合、コミットレコードCR
ec1は、破棄を示すために、変更され得る、あるいはLTM1のログから削除され得る
(例えばWA1からの要求に応じて、WA1により、またはLTM1により)。
図46に描かれた実施形態において、同様に構成要素4604にて検出されるように、
CRec1がそのコミットは無条件であると示した場合(例えばCRec1内に示される
書き込み(複数可)が複数パーティショントランザクションの代わりに単一パーティショ
ントランザクションの一部である場合)、書き込みは、MCDRのいかなる調査もするこ
となく、WA1によりそれらの目的書き込み先へ伝播され得る(構成要素4626)。別
の実施形態において、前述のように、単一パーティション及び複数パーティションの両ト
ランザクションは、無条件コミットレコードが両種類のトランザクションのコミット判定
レポジトリに格納され得るという点で、統一した手法で処理され、そして書き込みアプラ
イヤは、いずれの種類のトランザクションの書き込みも伝播する前に、このような無条件
コミットレコードが書き込まれていることを確認する必要があり得る。
様々な実施形態において、図6、7、8、9、10、12、13、14、19、20、
25、30、37、38、45、46のフロー図において例示される動作とは異なる動作
が、前述の技術のうちの少なくともいくつかを実施するために使用され得ることに留意さ
れたい。フローチャートに示される動作のうちのいくつかは、いくつかの実施形態におい
て実行されなくてよい、または別の順序で実行され得る、または順次ではなく並行して実
行され得る。
使用事例
読み出し記述子とクライアント側トランザクション準備を使用するログベーストランザ
クション管理を含む、複製DAGを使用してアプリケーションステート変更を管理する前
述の技術は、様々な実施形態において有用であり得る。より多くの組織が自身のコンピュ
ーティングをプロバイダネットワーク環境へ移行するにつれ、それぞれの整合性セマンテ
ィック及びそれぞれのインターフェースを有するより多様な分散格納アプリケーションが
開発されてきた。いくつかの大アプリケーションは複数データストアインスタンスにわた
り、そして複製DAG及びログベーストランザクション管理技術は、分散格納アプリケー
ション管理に対する、統合され、柔軟で、拡大縮小可能な、可用性の高い手法を表し得る
。DAG構成のそれぞれの見解は少なくとも一時的に異なり得るが、複製DAGノードの
アプリケーションステート遷移を進行させる能力は、より少ない動的複製技術が使用され
た場合に起こり得る、アプリケーション要求を処理する際の「全世界停止」中断のうちの
少なくともいくつかを低減または削除し得る。ログベーストランザクション管理は、デー
タストア横断トランザクション(並びに原子複数書き込みトランザクションに対応し得な
いデータストアに対する複数アイテムトランザクション)を可能にし得るだけでなく、自
動化クエリ応答生成、スナップショット生成等の機能の促進も行い得る。ログサービスの
自身の読み出しインターフェースを使用することで、複数データストアにわたるデータ分
析を行う完全に新しい方法が利用可能となり得る。このような新たな種類のデータストア
横断動作の費用を明確にする価格設定ポリシーが実施され、これによりユーザは、自身の
データ変換要求に関して、情報に基づいた予算決定を行うことが可能となる。非常に高い
スループットのアプリケーションのために、前述の手法を使用して、楽観的ログベースト
ランザクション管理は拡張され得る。拡張された楽観的ログベーストランザクション管理
では、ログベーストランザクションマネジャーは所定格納グループのそれぞれのパーティ
ションに設定され、そしていずれかの所定の複数パーティショントランザクションのコミ
ットは、複数のこのようなトランザクションマネジャーと対話するクライアント側コンポ
ーネントにより整合される。
いくつかのプロバイダネットワーク環境において、仮想化コンピューティングサービス
、格納サービス、またはデータベースサービス等、プロバイダネットワークにて実施され
る別のネットワークアクセス可能サービスの制御プレーン構成情報を格納するのに、複製
DAGによるログベーストランザクション管理が使用され得る。このようなシナリオにお
いて、ログを使用して管理されるトランザクションは、ネットワークアクセス可能サービ
スの様々なリソース(仮想コンピューティングサービスの事例における演算インスタンス
または仮想ホスト等)の構成に対する変更を表し得る。
例示的コンピュータシステム
少なくともいくつかの実施形態において、複製DAGの様々なコンポーネント、トラン
ザクション管理のためのログサービス、または異種格納システム(フロントエンド要求ハ
ンドラ等のクライアント側コンポーネント、並びに複数パーティションコミット判定レポ
ジトリを含む)を実行する技術を含む、本明細書において説明される技術のうちの1つま
たは複数の一部または全てを実施するサーバは、1つまたは複数のコンピュータアクセス
可能媒体を含む、またはそのような媒体にアクセスするように構成された、汎用コンピュ
ータシステムを含み得る。図47は、このような汎用コンピューティングデバイス900
0を例示する。例示される実施形態において、コンピューティングデバイス9000は、
入出力(I/O)インターフェース9030を介してシステムメモリ9020(不揮発性
及び揮発性メモリモジュールの両方を備え得る)に接続された1つまたは複数のプロセッ
サ9010を含む。コンピューティングデバイス9000はさらに、I/Oインターフェ
ース9030に接続されたネットワークインターフェース9040を含む。
様々な実施形態において、コンピューティングデバイス9000は、1つのプロセッサ
9010を含むユニプロセッサシステム、またはいくつか(例えば2つ、4つ、8つもし
くは別の好適な個数)のプロセッサ9010を含むマルチプロセッサシステムであり得る
。プロセッサ9010は、命令を実行可能な任意の好適なプロセッサであり得る。例えば
、様々な実施形態において、プロセッサ9010は、様々な命令集合アーキテクチャ(I
SA)、例えばx86、PowerPC、SPARC、MIPS‐ISA、またはその他
の好適なISA等、そのうちのいずれかを実施する汎用または組み込みプロセッサであり
得る。マルチプロセッサシステムにおいて、それぞれのプロセッサ9010は一般に、必
ずではないが、同一のISAを実施し得る。いくつかの実施態様において、従来のプロセ
ッサの代わりに、または従来のプロセッサに加えて、グラフィック処理ユニット(GPU
)が使用され得る。
システムメモリ9020は、プロセッサ9010(複数可)によりアクセス可能な命令
及びデータを格納するように構成され得る。少なくともいくつかの実施形態において、シ
ステムメモリ9020は、揮発性及び不揮発性部分の両方を備え得る。別の実施形態にお
いては、揮発性メモリのみが使用され得る。様々な実施形態において、システムメモリ9
020の揮発性部分は、静的ランダムアクセスメモリ(SRAM)、同期式動的RAM、
またはその他の種類のメモリ等、任意の好適なメモリ技術を使用して実行され得る。シス
テムメモリの不揮発性部分(例えば1つまたは複数のNVDIMMを備え得る)に関して
、いくつかの実施形態において、NANDフラッシュデバイスを含むフラッシュベースメ
モリデバイスが使用され得る。少なくともいくつかの実施形態において、システムメモリ
の不揮発性部分は、超コンデンサまたは他の蓄電装置(例えば電池)等の電源を含み得る
。様々な実施形態において、メモリスタベースの抵抗ランダムアクセスメモリ(ReRA
M)、3次元NAND技術、強誘電性RAM、磁気抵抗RAM(MRAM)、または様々
な種類の相変化メモリ(PCM)のうちのいずれかが、少なくともシステムメモリの不揮
発性部分に使用され得る。例示される実施形態において、前述の方法、技術、及びデータ
等、1つまたは複数の所望する機能を実行するプログラム命令及びデータは、システムメ
モリ9020内にコード9025及びデータ9026として格納されることが示される。
一実施形態において、I/Oインターフェース9030は、プロセッサ9010と、シ
ステムメモリ9020と、様々な種類の持続的及び/または揮発性格納デバイス等、ネッ
トワークインターフェース9040または他の周辺インターフェースを含む任意の周辺デ
バイスとの間のデバイス内のI/Oトラフィックを調整するように構成され得る。いくつ
かの実施形態において、I/Oインターフェース9030は、1つのコンポーネント(例
えばシステムメモリ9020)からのデータ信号を、別のコンポーネント(例えばプロセ
ッサ9010)が使用するのに好適な形式に変換するために、任意の必要なプロトコル変
換、タイミング変換、または他のデータ変換を行い得る。いくつかの実施形態において、
I/Oインターフェース9030は、例えば周辺構成要素相互接続(PCI)バス規格ま
たは汎用シリアルバス(USB)規格の変形等、様々な種類の周辺バスを介して取り付け
られるデバイスのサポートを含み得る。いくつかの実施形態において、I/Oインターフ
ェース9030の機能は、例えばノースブリッジとサウスブリッジといった2つ以上の別
々のコンポーネントに分割され得る。また、いくつかの実施形態において、システムメモ
リ9020に対するインターフェース等、I/Oインターフェース9030の機能性のう
ちの一部または全ては、プロセッサ9010に直接組み込まれ得る。
ネットワークインターフェース9040は、コンピューティングデバイス9000と、
例えば図1から図46までにおいて例示される他のコンピュータシステムまたはデバイス
等、ネットワーク9050(複数可)に接続される他のデバイス9060との間でデータ
交換が可能なように構成され得る。様々な実施形態において、ネットワークインターフェ
ース9040は、例えばイーサネット(登録商標)ネットワークの類等、任意の好適な有
線または無線汎用データネットワークを介して、通信に対応し得る。さらに、ネットワー
クインターフェース9040は、アナログ音声ネットワークもしくはデジタルファイバ通
信ネットワーク等の電気通信/電話ネットワークを介した、またはファイバチャネルSA
N等の格納エリアネットワークを介した、またはその他の好適な種類のネットワーク及び
/またはプロトコルを介した、通信に対応し得る。
いくつかの実施形態において、システムメモリ9020は、対応方法及び装置の実施形
態を実行するために、図1から図46に関して前述されたプログラム命令及びデータを格
納するように構成されたコンピュータアクセス可能媒体の一実施形態であり得る。しかし
ながら、別の実施形態において、プログラム命令及び/またはデータは、異なる種類のコ
ンピュータアクセス可能媒体上で受信、送信、または格納され得る。一般に、コンピュー
タアクセス可能媒体には、例えばI/Oインターフェース9030を介してコンピューテ
ィングデバイス9000に接続されるディスクまたはDVD/CDといった磁気媒体また
は光学式媒体等の非一時的記憶媒体またはメモリ媒体が含まれ得る。非一時的コンピュー
タアクセス可能記憶媒体には、システムメモリ9020または別の種類のメモリとしてコ
ンピューティングデバイス9000のいくつかの実施形態に含まれ得るRAM(例えばS
DRAM、DDR‐SDRAM、RDRAM、SRAM等)、ROM等の任意の揮発性ま
たは不揮発性媒体も含まれ得る。さらに、コンピュータアクセス可能媒体は、ネットワー
クインターフェース9040を通して実施され得るネットワーク及び/または無線リンク
等の通信媒体を介して伝達される伝送媒体または電気、電磁、もしくはデジタル信号等の
信号を含み得る。様々な実施形態において説明される機能性を実行するために、図47に
例示されるような複数のコンピューティングデバイスの一部または全てが使用され得る。
例えば、様々な異なるデバイス及びサーバ上で稼働するソフトウェアコンポーネントは、
協働して機能性を提供し得る。いくつかの実施形態において、説明される機能性の一部は
、汎用コンピュータシステムを使用して実行されるのに加えて、またはそれに代わって、
格納デバイス、ネットワークデバイス、または特殊目的コンピュータシステムを使用して
実行され得る。本明細書で使用される「コンピューティングデバイス」という用語は、少
なくとも全てのこれらの種類のデバイスを指し、かつこれらの種類のデバイスに限定され
ない。
前述の内容は、以下の追加条項を考慮することでより理解され得る。
1.1つまたは複数のコンピューティングデバイスを備えるシステムであって、前記1
つまたは複数のコンピューティングデバイスは、
第1ログベーストランザクションマネジャー(LTM)にて、格納グループのクライア
ント側コンポーネントから、第1複数パーティショントランザクションの第1書き込みに
対する第1コミット要求を受信することであって、前記第1書き込みは前記第1コミット
要求内に示される第1読み出しの結果に依存し、前記第1読み出しは前記格納グループの
第1パーティションを対象とした、前記第1複数パーティショントランザクションの前記
第1書き込みに対する前記第1コミット要求を受信することと、
第2LTMにて、前記クライアント側コンポーネントから、前記第1複数パーティショ
ントランザクションの第2書き込みに対する第2コミット要求を受信することであって、
前記第2書き込みは前記第2コミット要求内に示される第2読み出しの結果に依存し、前
記第2読み出しは前記格納グループの第2パーティションを対象とした、前記第1複数パ
ーティショントランザクションの前記第2書き込みに対する前記第2コミット要求を受信
することと、
前記第1LTMの第1持続的ログ内に、前記第1読み出しと前記第1持続的ログ内に記
録されている書き込みの第1部分集合との間の読み出し書き込み競合に関して前記第1書
き込みはコミット可能であることを示す、前記第1書き込みに対応する第1条件付きコミ
ットレコードを格納することであって、前記第1条件付きコミットレコードは前記第1複
数パーティショントランザクションに関するメタデータを含む、前記第1書き込みに対応
する前記第1条件付きコミットレコードを格納することと、
前記第2LTMの第2持続的ログ内に、前記第2読み出しと前記第2持続的ログ内に記
録されている書き込みの第2部分集合との間の読み出し書き込み競合に関して前記第2書
き込みはコミット可能であることを示す、前記第2書き込みに対応する第2条件付きコミ
ットレコードを格納することであって、前記第2条件付きコミットレコードは前記第1複
数パーティショントランザクションに関する前記メタデータを含む、前記第2書き込みに
対応する前記第2条件付きコミットレコードを格納することと、
(a)前記第1条件付きコミットレコードが格納され、かつ(b)前記第2条件付きコ
ミットレコードが格納されたことの特定に応じて、前記クライアント側コンポーネントに
より、前記第1複数パーティショントランザクションに対応する第1無条件コミットレコ
ードを、複数パーティションコミット判定レポジトリ(MCDR)に格納することと、
(a)前記第1条件付きコミットレコードに含まれる前記第1複数パーティショントラ
ンザクションに関する前記メタデータの調査と、(b)前記第1無条件コミットレコード
の調査と、に応じて、前記格納グループの特定パーティションに対応付けられた第1書き
込みアプライヤにより、前記特定パーティションに対し前記第1書き込みを伝播すること
と、
を実行するように構成される、前記システム。
2.前記1つまたは複数のコンピューティングデバイスはさらに、
前記第1LTMにて、別の複数パーティショントランザクションの第3書き込みに対す
る第3コミット要求を受信することであって、前記第3書き込みは前記第1パーティショ
ンを対象とし、前記第3コミット要求は前記別の複数パーティショントランザクションの
タイムアウトの表現を含む、前記別の複数パーティショントランザクションの前記第3書
き込みに対する前記第3コミット要求を受信することと、
前記第1持続的ログ内に、読み出し書き込み競合に関して前記第3書き込みがコミット
可能であることを示す、前記第3書き込みに対応する第3条件付きコミットレコードを格
納することと、
前記タイムアウトの経過後、前記別の複数パーティショントランザクションに対応する
第2無条件コミットレコードが前記MCDRに格納されていないことを検出することと、
前記第1パーティションに対する前記第3書き込みの伝播は実施しないことを決定する
ことと、
を実行するように構成される、条項1に記載のシステム。
3.前記第1コミット要求は前記MCDRの指示を含み、前記第1複数パーティション
トランザクションに関する前記メタデータは前記MCDRの前記指示を含む、条項1に記
載のシステム。
4.前記1つまたは複数のコンピューティングデバイスはさらに、
前記第1コミット要求の前に、前記格納グループに対する1つまたは複数の種類の動作
の目標性能レベルの指示を受信し、
(a)前記格納グループのために確立すべきLTMの数、(b)前記格納グループのた
めに確立すべきMCDRの数、または(c)前記格納グループのために確立すべき書き込
みアプライヤの数、以上のうちの1つまたは複数を、前記目標性能レベルの前記指示に少
なくとも部分的に基づいて決定する、
ように構成される、条項1に記載のシステム。
5.前記第1パーティションは前記格納グループのマスタパーティションに指定され、
前記第1持続的ログは第1サーバの1つまたは複数の格納デバイスの少なくとも第1部分
を備え、前記MCDRは前記第1サーバの前記1つまたは複数の格納デバイスの少なくと
も第2部分を備える、条項1に記載のシステム。
6.1つまたは複数のコンピューティングデバイスにより、
格納グループの第1ログベーストランザクションマネジャー(LTM)の第1持続的ロ
グ内に、前記第1LTMにより行われた第1競合検出分析に少なくとも部分的に基づいて
第1書き込みがコミット可能であると指定されたことを示す、第1複数パーティショント
ランザクションの前記第1書き込みに対応する第1条件付きコミットレコードを格納する
ことと、
前記格納グループの第2LTMの第2持続的ログ内に、前記第2LTMにより行われた
第2競合検出分析に少なくとも部分的に基づいて第2書き込みがコミット可能であると指
定されたことを示す、前記第1複数パーティショントランザクションの前記第2書き込み
に対応する第2条件付きコミットレコードを格納することと、
前記第1及び第2書き込みがコミット可能であると指定されたことの検出に応じて、前
記第1複数パーティショントランザクションに対応する第1無条件コミットレコードを格
納することと、
(a)前記第1条件付きコミットレコードの調査と、(b)前記第1無条件コミットレ
コードの調査と、に応じて、第1書き込みアプライヤにより前記格納グループの特定パー
ティションに対し前記第1書き込みを伝播することと、
を含む方法。
7.前記1つまたは複数のコンピューティングデバイスにより、さらに、
前記第1LTMにて、別の複数パーティショントランザクションの別の書き込みに対す
るコミット要求を受信することであって、前記別の書き込みは前記第1パーティションを
対象とし、前記コミット要求は前記別の複数パーティショントランザクションのタイムア
ウトの表現を含む、前記別の複数パーティショントランザクションの前記別の書き込みに
対する前記コミット要求を受信することと、
前記第1持続的ログ内に、前記第1LTMにより行われた第3競合検出分析に少なくと
も部分的に基づいて前記別の書き込みがコミット可能であることを示す、前記別の書き込
みに対応する第3条件付きコミットレコードを格納することと、
前記タイムアウトの経過後、前記別の複数パーティショントランザクションに対応する
第2無条件コミットレコードが複数パーティションコミット判定レポジトリ(MCDR)
に格納されていないことを検出することと、
前記第1パーティションに対する前記別の書き込みの伝播は実施しないことを決定する
ことと、
を含む条項6に記載の方法。
8.前記MCDRは単調に増加する論理タイムスタンプ値を提供する関連論理クロック
を有し、前記タイムアウトは前記論理クロックから取得が見込まれる特定の将来論理タイ
ムスタンプ値を含む、条項7に記載の方法。
9.前記第1書き込みに対する第1コミット要求に応じて前記第1条件付きコミットレ
コードは格納され、前記第2書き込みに対する第2コミット要求に応じて前記第2条件付
きコミット要求は格納され、前記1つまたは複数のコンピューティングデバイスにより、
さらに、
前記第1LTMにて、第2複数パーティショントランザクションの第3書き込みに対す
る第3コミット要求を受信することであって、前記第3書き込みは前記第1パーティショ
ンを対象とする第3読み出しの結果に依存する、前記第2複数パーティショントランザク
ションの前記第3書き込みに対する前記第3コミット要求を受信することと、
前記第2LTMにて、前記第2複数パーティショントランザクションの第4書き込みに
対する第4コミット要求を受信することであって、前記第4書き込みは前記第2パーティ
ションを対象とする第4読み出しの結果に依存する、前記第2複数パーティショントラン
ザクションの前記第4書き込みに対する前記第4コミット要求を受信することと、
前記第1持続的ログ内に、前記第1LTMにより行われた第3競合検出分析に少なくと
も部分的に基づいて前記第3書き込みがコミット可能であることを示す、前記第3書き込
みに対応する第3条件付きコミットレコードを格納することと、
前記第2LTMにより検出された特定の競合に少なくとも部分的に基づいて、前記第2
LTMにより前記第4コミット要求は拒否されたことを特定することと、
前記第4コミット要求が拒否されたことの前記開示に応じて、前記第3書き込みの伝播
を破棄することと、
を含む請求項6に記載の方法。
10.前記第1LTMにて前記格納グループのクライアント側コンポーネントから受信
された第1コミット要求に応じて前記第1条件付きコミットレコードは格納され、前記第
1無条件コミットレコードの前記格納は前記クライアント側コンポーネントにより行われ
る、条項6に記載の方法。
11.前記第1コミット要求は、前記第1無条件コミットレコードが格納されるMCD
Rの指示を含む、条項10に記載の方法。
12.前記第1コミット要求は第1読み出しの開示を含み、前記第1書き込みは前記第
1読み出しの結果に依存し、前記第1読み出しの前記開示は前記第1LTMにより前記第
1競合検出分析を行うために使用される、条項10に記載の方法。
13.前記1つまたは複数のコンピューティングデバイスにより、さらに、
前記格納グループに対する1つまたは複数の種類の動作の目標性能レベルの指示を受信
することと、
(a)前記格納グループのために確立すべきLTMの数、(b)前記格納グループのた
めに確立すべき複数パーティションコミット判定レポジトリの数、または(c)前記格納
グループのために確立すべき書き込みアプライヤの数、以上のうちの1つまたは複数を、
前記目標性能レベルの前記指示に少なくとも部分的に基づいて決定することと、
を含む条項6に記載の方法。
14.前記第1パーティションは前記格納グループのマスタパーティションに指定され
、前記第1持続的ログは第1サーバの1つまたは複数の格納デバイスの少なくとも第1部
分を備え、前記第1無条件コミットレコードは前記1つまたは複数の格納デバイスのうち
の特定格納デバイスに格納される、条項6に記載の方法。
15.前記第1無条件コミットレコードは、第1ノード及び第2ノードを含む複製有向
非巡回グラフの複数のノードを備える複数パーティションコミット判定レポジトリ(MC
DR)に格納され、前記第1無条件コミットレコードの前記格納は、前記第1ノード及び
前記第2ノードに前記第1無条件コミットレコードのそれぞれのレプリカを格納すること
を含む、条項6に記載の方法。
16.プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって
、前記プログラム命令は1つまたは複数のプロセッサ上で実行されると、格納グループの
クライアント側コンポーネントを実行し、前記クライアント側コンポーネントは、
格納グループの第1ログベーストランザクションマネジャー(LTM)へ、第1複数パ
ーティショントランザクションの第1書き込みに対する第1コミット要求を送信すること
であって、前記第1コミット要求は前記第1書き込みが依存する第1読み出しの開示を含
み、前記第1読み出しは前記格納グループの第1パーティションを対象とした、前記第1
複数パーティショントランザクションの前記第1書き込みに対する前記第1コミット要求
を送信することと、
前記格納グループの第2ログベーストランザクションマネジャー(LTM)へ、第1複
数パーティショントランザクションの第2書き込みに対する第2コミット要求を送信する
ことであって、前記第2コミット要求は前記第2書き込みが依存する第2読み出しの開示
を含み、前記第2読み出しは前記格納グループの第2パーティションを対象とした、前記
第1複数パーティショントランザクションの前記第2書き込みに対する前記第2コミット
要求を送信することと、
(a)第1コミット分析に少なくとも部分的に基づいて前記第1LTMにより前記第1
書き込みはコミット可能であると指定され、かつ(b)第2コミット分析に少なくとも部
分的に基づいて前記第2LTMにより前記第2書き込みはコミット可能であると指定され
たことの特定に応じて、前記第1複数パーティショントランザクションに対応する第1無
条件コミットレコードを選択位置に格納することと、
を実行するように構成される、前記非一時的コンピュータアクセス可能記憶媒体。
17.前記第1コミット要求は、(a)前記選択位置の指示、または(b)前記第1複
数パーティショントランザクションのコミットタイムアウト、以上のうちの1つまたは複
数を含む、条項16に記載の非一時的コンピュータアクセス可能記憶媒体。
18.前記クライアント側コンポーネントはさらに、
前記第1LTMにより別の複数パーティショントランザクションの少なくとも1つの書
き込みがコミット不可能であると指定されたことの特定に応じて、前記別の複数パーティ
ショントランザクションに対応するアボートレコードを別の選択位置に格納する、
ように構成される、条項16に記載の非一時的コンピュータアクセス可能記憶媒体。
19.プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって
、前記プログラム命令は1つまたは複数のプロセッサ上で実行されると、格納グループの
書き込みアプライヤを実行し、前記書き込みアプライヤは、
前記格納グループのログベーストランザクションマネジャーにより持続的ログ内に格納
された特定レコードが、前記格納グループの第1パーティションを対象とする第1書き込
みの条件付きコミットを表すことを特定し、
第1パーティションを対象とする1つまたは複数の書き込みを含む複数パーティション
トランザクションの無条件コミットレコードを格納するように指定されたコミット判定レ
ポジトリを特定し、
前記第1書き込みを含む第1複数パーティショントランザクションの無条件コミットレ
コードを前記コミット判定レポジトリが含むことの特定に応じて、前記格納グループの前
記第1パーティションに対し前記第1書き込みを伝播する、
ように構成される、前記非一時的コンピュータアクセス可能記憶媒体。
20.前記書き込みアプライヤは、
第2複数パーティショントランザクションの一部であり、前記第1パーティションを対
象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコー
ドが表すことを特定し、
前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウト
を特定し、
前記タイムアウトの経過前に前記コミット判定レポジトリに前記第2複数パーティショ
ントランザクションに対応する無条件コミットレコードが書き込まれていないことの検出
に少なくとも部分的に基づいて、前記第1パーティションに対する前記第2書き込みの伝
播を破棄する、
ように構成される、条項19に記載の前記非一時的コンピュータアクセス可能記憶媒体
21.前記書き込みアプライヤは、
前記持続的ログ内に格納された第2レコードが、前記第1パーティションを対象とする
第2書き込みの無条件コミットを表すことを特定し、
前記コミット判定レポジトリを調べることなく、前記第1パーティションに対し前記第
2書き込みを伝播する、
ように構成される、条項19に記載の前記非一時的コンピュータアクセス可能記憶媒体
さらに、前述の内容は、以下の追加条項を考慮することでより理解され得る。
1.1つまたは複数のコンピューティングデバイスを備えるシステムであって、前記1
つまたは複数のコンピューティングデバイスは、
第1データストア及び第2データストアを含む複数のデータストアを備える異種格納グ
ループのクライアント側コンポーネントにて、前記第1データストアを対象とする第1読
み出しに対応する第1読み出し記述子を含む、1つまたは複数の読み出しに対応するそれ
ぞれの読み出し記述子を受信することであって、前記第1読み出し記述子は前記第1デー
タストアにて適用されたステート遷移の開示を含み、前記第1データストアは、ステート
レスプロトコルに従って、前記第1読み出し記述子が前記クライアント側コンポーネント
に提供された後に前記クライアント側コンポーネントに関するセッションメタデータを保
持しない、前記1つまたは複数の読み出しに対応する前記それぞれの読み出し記述子を受
信することと、
前記クライアント側コンポーネントがアクセス可能な1つまたは複数のバッファに、前
記異種格納グループの特定データストアを対象とする第1書き込みの第1書き込み記述子
を含む、1つまたは複数の書き込みのそれぞれの書き込み記述子を格納することであって
、前記第1書き込みのペイロードは前記第1読み出しの結果に少なくとも部分的に基づき
、前記第1書き込み記述子は前記特定データストアにて変更するオブジェクトを示す、前
記1つまたは複数の書き込みの前記それぞれの書き込み記述子を格納することと、
前記クライアント側コンポーネントにて、前記1つまたは複数の書き込みを含む候補ト
ランザクションに対するコミット要求を生成することであって、前記コミット要求は少な
くとも前記第1読み出し記述子と前記第1書き込み記述子とを含む、前記1つまたは複数
の書き込みを含む前記候補トランザクションに対する前記コミット要求を生成することと

前記クライアント側コンポーネントからトランザクションマネジャーに対し、前記コミ
ット要求を送信することと、
前記トランザクションマネジャーにて、並行処理制御プロトコルに従った前記第1読み
出し記述子の分析に少なくとも部分的に基づいて、前記候補トランザクションがコミット
のために受諾されることを決定することと、
前記第1書き込み記述子内に示される前記オブジェクトの変更を開始することと、
を実行するように構成される、前記システム。
2.前記クライアント側コンポーネントは、プロバイダネットワークにて実施される格
納サービスの要求ハンドラノードを実行するプロセスを有する、条項1に記載のシステム
3.前記第1読み出し記述子は、少なくとも前記第1読み出しの読み出し再現性検証メ
タデータを含む、条項1に記載のシステム。
4.前記コミット要求は前記第2データストアを対象とする第2読み出しに対応する第
2読み出し記述子を含み、前記1つまたは複数の書き込みのうち少なくとも1つの書き込
みのペイロードは前記第2読み出しの結果に少なくとも部分的に基づく、条項1に記載の
システム。
5.前記1つまたは複数の書き込みは、前記特定データストアとは異なるデータストア
を対象とする第2書き込みを含む、条項1に記載のシステム。
6.1つまたは複数のコンピューティングデバイスにより、
第1データストアを含む1つまたは複数のデータストアを備える格納グループのクライ
アント側コンポーネントにて、前記第1データストアを対象とする第1読み出しに対応す
る第1読み出し記述子を含む、1つまたは複数の読み出しに対応するそれぞれの読み出し
記述子を受信することであって、前記第1読み出し記述子は前記第1データストアにて適
用されたステート遷移の開示を含む、前記1つまたは複数の読み出しに対応する前記それ
ぞれの読み出し記述子を受信することと、
前記クライアント側コンポーネントにて、前記1つまたは複数のデータストアのうちの
特定データストアを対象とする第1書き込みの第1書き込み記述子を含む、1つまたは複
数の書き込みのそれぞれの書き込み記述子を生成することであって、前記第1書き込みの
ペイロードは前記第1読み出しの結果に少なくとも部分的に基づき、前記第1書き込み記
述子は前記特定データストアにて変更するオブジェクトを示す、前記1つまたは複数の書
き込みの前記それぞれの書き込み記述子を生成することと、
前記クライアント側コンポーネントからトランザクションマネジャーに対し、前記第1
書き込みを含む1つまたは複数の書き込みを有する候補トランザクションに対するコミッ
ト要求を送信することであって、前記コミット要求は少なくとも前記第1読み出し記述子
と前記第1書き込み記述子とを含む、前記1つまたは複数の書き込みを有する前記候補ト
ランザクションに対する前記コミット要求を送信することと、
前記トランザクションマネジャーにて、前記第1読み出し記述子の分析に少なくとも部
分的に基づいて、前記候補トランザクションがコミットのために受諾されることを決定す
ることと
を含む方法。
7.ステートレスプロトコルに従って前記第1データストアは、前記第1読み出し記述
子が前記クライアント側コンポーネントに提供された後、前記第1読み出しに関するセッ
ションメタデータを保持しない、条項6に記載の方法。
8.前記1つまたは複数のコンピューティングデバイスにより、さらに、
前記トランザクションマネジャーの持続的ログに、前記候補トランザクションがコミッ
トのために受諾されたことを示すトランザクションレコードを格納することを含み、
前記候補トランザクションがコミットのために受諾されることの前記決定は、前記持続
的ログに格納された1つまたは複数の他のトランザクションレコードの分析に少なくとも
部分的に基づく、
条項6に記載の方法。
9.前記持続的ログは複製グラフの複数のノードを使用して実施される、条項8に記載
の方法。
10.前記候補トランザクションがコミットのために受諾されることの前記決定は、前
記読み出し記述子が生成されてから前記第1読み出しの結果集合は変更されていないこと
を確認することを含む、条項6に記載の方法。
11.前記特定ステート遷移の前記開示は、論理タイムスタンプを含む、条項6に記載
の方法。
12.前記第1読み出し記述子は、少なくとも前記第1読み出しの読み出し再現性検証
メタデータを含む、条項6に記載の方法。
13.前記1つまたは複数のデータストアは第2データストアを有し、前記第1データ
ストアは第1データモデルを実施し、前記第2データストアは別のデータモデルを実施し
、前記コミット要求は前記第2データストアを対象とする第2読み出しに対応する第2読
み出し記述子を含み、前記1つまたは複数の書き込みのうち少なくとも1つの書き込みの
ペイロードは前記第2読み出しの結果に少なくとも部分的に基づく、条項6に記載の方法
14.前記第1データストアは、非リレーショナルデータベースシステム、リレーショ
ナルデータベースシステム、非構造化データオブジェクトへのアクセスを可能にするウェ
ブサービスインターフェースを実施する格納サービス、インメモリデータベース、分散キ
ャッシュのインスタンス、待ち行列サービスのコンポーネント、または通知サービスのコ
ンポーネント、以上のうちの1つを含む、条項12に記載の方法。
15.前記第1データストアは複数の書き込みを含むトランザクションの原子性に対応
しない、条項6に記載の方法。
16.プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって
、前記プログラム命令が1つまたは複数のプロセッサにおいて実行されると、前記1つま
たは複数のプロセッサは、
第1データストアを含む1つまたは複数のデータストアを備える格納グループのクライ
アント側コンポーネントにて、前記第1データストアを対象とする第1読み出しに対応す
る第1読み出し記述子を含む、1つまたは複数の読み出しに対応するそれぞれの読み出し
記述子を受信することであって、前記第1読み出し記述子は前記第1データストアにて適
用されたステート遷移の開示を含む、前記1つまたは複数の読み出しに対応する前記それ
ぞれの読み出し記述子を受信することと、
前記クライアント側コンポーネントにて、前記1つまたは複数のデータストアのうちの
特定データストアを対象とする第1書き込みの第1書き込み記述子を含む、1つまたは複
数の書き込みのそれぞれの書き込み記述子を生成することであって、前記第1書き込みの
ペイロードは前記第1読み出しの結果に少なくとも部分的に基づき、前記第1書き込み記
述子は前記特定データストアにて変更するオブジェクトを示す、前記1つまたは複数の書
き込みの前記それぞれの書き込み記述子を生成することと、
前記クライアント側コンポーネントからトランザクションマネジャーに対し、前記第1
書き込みを含む1つまたは複数の書き込みを有する候補トランザクションに対するコミッ
ト要求を送信することであって、前記コミット要求は少なくとも前記第1読み出し記述子
と前記第1書き込み記述子とを含む、前記1つまたは複数の書き込みを有する前記候補ト
ランザクションに対する前記コミット要求を送信することと
を実行する、前記非一時的コンピュータアクセス可能記憶媒体。
17.ステートレスプロトコルに従って前記第1データストアは、前記第1読み出しに
関するセッションメタデータを保持しない、条項16に記載の非一時的コンピュータアク
セス可能記憶媒体。
18.前記第1読み出し記述子は、少なくとも前記第1読み出しの読み出し再現性検証
メタデータを含む、条項16に記載の非一時的コンピュータアクセス可能記憶媒体。
19.前記1つまたは複数のデータストアは第2データストアを有し、前記第1データ
ストアは第1データモデルを実施し、前記第2データストアは別のデータモデルを実施し
、前記コミット要求は前記第2データストアを対象とする第2読み出しに対応する第2読
み出し記述子を含み、前記1つまたは複数の書き込みのうち少なくとも1つの書き込みの
ペイロードは前記第2読み出しの結果に少なくとも部分的に基づく、条項16に記載の非
一時的コンピュータアクセス可能記憶媒体。
20.前記第1データストアは複数の書き込みを含むトランザクションの原子性に対応
しない、条項16に記載の非一時的コンピュータアクセス可能記憶媒体。
さらに、前述の内容は、以下の追加条項を考慮することでより理解され得る。
1.1つまたは複数のコンピューティングデバイスを備えるシステムであって、前記1
つまたは複数のコンピューティングデバイスは、
異種格納グループの複数のデータストアの第1データストアを対象とする第1読み出し
要求を受信することであって、前記第1読み出し要求は第1結果集合を特定するために使
用する第1フィルタ基準を含む、前記第1読み出し要求を受信することと、
特定ステート遷移のインジケータを確定することであって、前記特定ステート遷移は、
前記第1結果集合の特定の前に前記第1データストアに適用された1つまたは複数の変更
を含む、前記特定ステート遷移の前記インジケータを確定することと、
前記第1フィルタ基準を使用して前記第1結果集合を特定することと、
(a)前記特定ステート遷移の前記インジケータと、(b)前記第1読み出し要求が再
現可能な読み出しを表すか否かを判定するために利用可能な読み出し再現性検証メタデー
タ(RRVM)と、を含む読み出し記述子を生成することと、
前記第1結果集合と前記読み出し記述子の表現とを、前記異種格納グループのクライア
ント側コンポーネントへ送信することと、
前記読み出し記述子の分析に少なくとも部分的に基づいて、前記第1読み出し要求に続
く前記異種格納グループの特定データストアを対象とする書き込み要求が受諾基準を満た
すと判定することと、
を実行するように構成される、前記システム。
2.前記RRVMは前記第1フィルタ基準の表現を含む、条項1に記載のシステム。
3.前記RRVMは前記第1結果集合に含まれるデータオブジェクトのアドレスに少な
くとも部分的に基づく、条項1に記載のシステム。
4.前記読み出し記述子の前記表現は、前記読み出し記述子の難読化版を含む、条項1
に記載のシステム。
5.1つまたは複数のコンピューティングデバイスにより、
第1データストアを対象とする第1読み出し要求を受信することと、
特定ステート遷移のインジケータを確定することであって、前記特定ステート遷移は、
前記第1読み出し要求の第1結果集合の特定の前に前記第1データストアに適用された1
つまたは複数の変更を含む、前記特定ステート遷移の前記インジケータを確定することと

(a)前記特定ステート遷移の前記インジケータと、(b)前記第1読み出し要求が再
現可能な読み出しを表すか否かを判定するために利用可能な読み出し再現性検証メタデー
タ(RRVM)と、を含む読み出し記述子を生成することと、
前記第1読み出し要求に応じて、少なくとも前記読み出し記述子の表現と前記第1結果
集合とを特定送信先へ送信することと、
を含む方法。
6.前記RRVMは、前記読み出し要求内に示される選択基準の表現を含む、条項5に
記載の方法。
7.前記RRVMは、前記第1読み出し要求の再現が前記第1結果集合とは異なる結果
集合を生じるか否かを判定するために呼び出す関数の表現を含む、条項5に記載の方法。
8.前記RRVMは、前記第1結果集合に含まれるデータオブジェクトのアドレスに少
なくとも部分的に基づく、条項5に記載の方法。
9.前記RRVMは、前記第1結果集合に含まれるデータオブジェクトの前記アドレス
に適用された選択ハッシュ関数の出力を含む、条項5に記載の方法。
10.前記特定ステート遷移の前記開示は、論理タイムスタンプを含む、条項5に記載
の方法。
11.前記読み出し記述子は、前記第1結果集合のデータオブジェクトの最終変更時間
の開示を含む、条項5に記載の方法。
12.前記読み出し記述子は前記第1データストアのテーブルの最終変更時間の開示を
含み、前記テーブルは前記第1結果集合の1つまたは複数のデータオブジェクトを含む、
条項5に記載の方法。
13.前記読み出し記述子の前記表現は、前記読み出し記述子の難読化版を含む、条項
5に記載の方法。
14.前記1つまたは複数のコンピューティングデバイスにより、さらに、
前記読み出し記述子の前記表現に組み込むパディングバイト数を決定することであって
、前記決定は乱数演算を使用することを含む、前記読み出し記述子の前記表現に組み込む
前記パディングバイト数を決定することと、
前記読み出し記述子の前記表現の前記送信の前に、前記読み出し記述子の前記表現内に
前記パディングバイト数を組み込むことと、
を含む条項5に記載の方法。
15.プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって
、前記プログラム命令が1つまたは複数のプロセッサにおいて実行されると、前記1つま
たは複数のプロセッサは、
格納グループの第1データストアに対する読み出し要求に応じて、前記読み出し要求の
第1結果集合の生成の前に前記第1データストアにて適用された変更に対応する特定ステ
ート遷移のインジケータを確定し、
(a)前記特定ステート遷移の開示と、(b)前記第1読み出し要求が再現可能な読み
出しを表すか否かを判定するために利用可能な読み出し再現性検証メタデータ(RRVM
)と、を含む読み出し記述子を生成し、
前記格納グループのクライアント側コンポーネントに対し、前記読み出し記述子と、前
記第1結果集合との送信を開始する、
前記非一時的コンピュータアクセス可能記憶媒体。
16.前記RRVMは、前記読み出し要求内に示される選択基準の表現を含む、条項1
5に記載の非一時的コンピュータアクセス可能記憶媒体。
17.前記RRVMは、前記読み出し要求の再現が前記第1結果集合とは異なる結果集
合を生じるか否かを判定するために呼び出す関数の表現を含む、条項15に記載の非一時
的コンピュータアクセス可能記憶媒体。
18.前記RRVMは、前記第1結果集合に含まれるデータオブジェクトのアドレスに
少なくとも部分的に基づく、条項15に記載の非一時的コンピュータアクセス可能記憶媒
体。
19.前記特定ステート遷移の前記開示は、論理タイムスタンプを含む、条項15に記
載の非一時的コンピュータアクセス可能記憶媒体。
結論
様々な実施形態はさらに、コンピュータアクセス可能媒体に関する前述の説明に従って
実行される命令及び/またはデータの受信、送信、または格納処理を含み得る。一般に、
コンピュータアクセス可能媒体は、例えばディスクまたはDVD/CD‐ROM、RAM
(例えばSDRAM、DDR、RDRAM、SRAM等)、ROM等の揮発性または不揮
発性媒体といった、磁気または光学式媒体等の記憶媒体またはメモリ媒体、並びに、ネッ
トワーク及び/または無線リンク等の通信媒体を介して伝達される伝送媒体または電気、
電磁、もしくはデジタル信号等の信号を含み得る。
本明細書において図示及び説明される様々な方法は、方法の例示的実施形態を表す。方
法は、ソフトウェア、ハードウェア、またはこれらの組み合せで実施され得る。方法の順
序は変更され、そして様々な要素が追加、並替、結合、省略、変更等され得る。
本開示の恩恵を受ける当業者には明らかであるように、様々な修正及び変更を行うこと
が可能である。本明細書には全てのこのような修正及び変更を包含する意図があり、従っ
て前述の説明も制限的な意味ではなく例示的な意味で考慮されるものとする。

Claims (15)

  1. コンピューティングデバイスであって、
    格納グループの書き込みアプライヤを実行するよう構成される1つまたは複数のプロセッサを備え、
    前記書き込みアプライヤは、
    前記格納グループのログベーストランザクションマネジャーにより持続的ログ内に格納された特定レコードが、前記格納グループの第1パーティションを対象とする第1書き込みの条件付きコミットを表すことを特定し、前記特定レコードは、他のトランザクションのために前記持続的ログ内に格納された他のレコードに基づく、前記第1書き込みとの読み出し書き込み競合が検出されないとの前記ログベーストランザクションマネジャーによる判定の後、前記持続的ログ内に格納されたものであり、
    第1パーティションを対象とする1つまたは複数の書き込みを含む複数パーティショントランザクションの無条件コミットレコードを格納するように指定されたコミット判定レポジトリを特定し、
    前記第1書き込みを含む第1複数パーティショントランザクションの無条件コミットレコードを前記コミット判定レポジトリが含むことの特定に応じて、前記格納グループの前記第1パーティションに対し前記第1書き込みを伝播する、
    ように構成される、コンピューティングデバイス。
  2. 前記書き込みアプライヤは、
    第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定し、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定し、
    前記タイムアウトの経過前に前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことの検出に少なくとも部分的に基づいて、前記第1パーティションに対する前記第2書き込みの伝播を破棄する、
    ように構成される、請求項1に記載のコンピューティングデバイス。
  3. 前記書き込みアプライヤは、
    前記持続的ログ内に格納された第2レコードが、前記第1パーティションを対象とする第2書き込みの無条件コミットを表すことを特定し、
    前記コミット判定レポジトリを調べることなく、前記第1パーティションに対し前記第2書き込みを伝播する、
    ように構成される、請求項1に記載のコンピューティングデバイス。
  4. 前記書き込みアプライヤは、
    第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定し、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定し、
    前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことと、前記タイムアウトが経過しないことの特定に応じて、時間間隔を待ち、
    前記時間間隔後、前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていことを特定し、
    前記格納グループの前記第1パーティションに対し前記第書き込みを伝播する、
    ように構成される、請求項1に記載のコンピューティングデバイス。
  5. 前記書き込みアプライヤは、
    第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定し、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定し、
    前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことと、前記タイムアウトが経過しないことの特定に応じて、時間間隔を待ち、
    前記時間間隔後、前記タイムアウトが経過したことを特定し又は前記第2複数パーティショントランザクションに対応するアボートレコードを特定し、
    前記第1パーティションに対する前記第2書き込みの伝播を破棄する、
    ように構成される、請求項1に記載のコンピューティングデバイス。
  6. 1つまたは複数のプロセッサにより、
    納グループのログベーストランザクションマネジャーにより持続的ログ内に格納された特定レコードが、前記格納グループの第1パーティションを対象とする第1書き込みの条件付きコミットを表すことを特定することであって、前記特定レコードは、他のトランザクションのために前記持続的ログ内に格納された他のレコードに基づく、前記第1書き込みとの読み出し書き込み競合が検出されないとの前記ログベーストランザクションマネジャーによる判定の後、前記持続的ログ内に格納されたものである、前記特定することと、
    第1パーティションを対象とする1つまたは複数の書き込みを含む複数パーティショントランザクションの無条件コミットレコードを格納するように指定されたコミット判定レポジトリを特定することと、
    前記第1書き込みを含む第1複数パーティショントランザクションの無条件コミットレコードを前記コミット判定レポジトリが含むことの特定に応じて、前記格納グループの前記第1パーティションに対し前記第1書き込みを伝播すること、
    を実行することを含む方法。
  7. 第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定することと、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定することと、
    前記タイムアウトの経過前に前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことの検出に少なくとも部分的に基づいて、前記第1パーティションに対する前記第2書き込みの伝播を破棄すること、
    を更に含む、請求項6に記載の方法。
  8. 前記持続的ログ内に格納された第2レコードが、前記第1パーティションを対象とする第2書き込みの無条件コミットを表すことを特定することと、
    前記コミット判定レポジトリを調べることなく、前記第1パーティションに対し前記第2書き込みを伝播すること、
    を更に含む、請求項6に記載の方法。
  9. 第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定することと、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定することと、
    前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことと、前記タイムアウトが経過しないことの特定に応じて、時間間隔を待つことと、
    前記時間間隔後、前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていことを特定ることと、
    前記格納グループの前記第1パーティションに対し前記第書き込みを伝播すること、
    を更に含む、請求項6に記載の方法。
  10. 第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定することと、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定することと、
    前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことと、前記タイムアウトが経過しないことの特定に応じて、時間間隔を待つことと、
    前記時間間隔後、前記タイムアウトが経過したことを特定し又は前記第2複数パーティショントランザクションに対応するアボートレコードを特定することと、
    前記第1パーティションに対する前記第2書き込みの伝播を破棄すること、
    を更に含む、請求項6に記載の方法。
  11. 第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定することと、
    前記第2複数パーティショントランザクションに対応するアボートレコードを特定することと、
    前記第1パーティションに対する前記第2書き込みの伝播を破棄すること、
    を更に含む、請求項6に記載の方法。
  12. プログラム命令を記憶するンピュータアクセス可能記憶媒体であって、前記プログラム命令は1つまたは複数のプロセッサ上で実行されると、格納グループの書き込みアプライヤを実行し、前記書き込みアプライヤは、
    前記格納グループのログベーストランザクションマネジャーにより持続的ログ内に格納された特定レコードが、前記格納グループの第1パーティションを対象とする第1書き込みの条件付きコミットを表すことを特定し、前記特定レコードは、他のトランザクションのために前記持続的ログ内に格納された他のレコードに基づく、前記第1書き込みとの読み出し書き込み競合が検出されないとの前記ログベーストランザクションマネジャーによる判定の後、前記持続的ログ内に格納されたものであり、
    第1パーティションを対象とする1つまたは複数の書き込みを含む複数パーティショントランザクションの無条件コミットレコードを格納するように指定されたコミット判定レポジトリを特定し、
    前記第1書き込みを含む第1複数パーティショントランザクションの無条件コミットレコードを前記コミット判定レポジトリが含むことの特定に応じて、前記格納グループの前記第1パーティションに対し前記第1書き込みを伝播する、
    ように構成される、ンピュータアクセス可能記憶媒体。
  13. 前記書き込みアプライヤは、
    第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定し、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定し、
    前記タイムアウトの経過前に前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことの検出に少なくとも部分的に基づいて、前記第1パーティションに対する前記第2書き込みの伝播を破棄する、
    ように構成される、請求項12に記載のンピュータアクセス可能記憶媒体。
  14. 前記書き込みアプライヤは、
    前記持続的ログ内に格納された第2レコードが、前記第1パーティションを対象とする第2書き込みの無条件コミットを表すことを特定し、
    前記コミット判定レポジトリを調べることなく、前記第1パーティションに対し前記第2書き込みを伝播する、
    ように構成される、請求項12に記載のンピュータアクセス可能記憶媒体。
  15. 前記書き込みアプライヤは、
    第2複数パーティショントランザクションの一部であり、前記第1パーティションを対象とする第2書き込みの条件付きコミットを、前記持続的ログ内に格納された第2レコードが表すことを特定し、
    前記第2複数パーティショントランザクションに対応付けられたコミットタイムアウトを特定し、
    前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていないことと、前記タイムアウトが経過しないことの特定に応じて、時間間隔を待ち、
    前記時間間隔後、前記コミット判定レポジトリに前記第2複数パーティショントランザクションに対応する無条件コミットレコードが書き込まれていことを特定し、
    前記格納グループの前記第1パーティションに対し前記第書き込みを伝播する、
    ように構成される、請求項12に記載のンピュータアクセス可能記憶媒体。
JP2018099381A 2014-09-10 2018-05-24 拡張縮小可能なログベーストランザクション管理 Active JP6677759B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US14/482,668 2014-09-10
US14/482,661 US9519674B2 (en) 2014-09-10 2014-09-10 Stateless datastore-independent transactions
US14/482,661 2014-09-10
US14/482,677 US9323569B2 (en) 2014-09-10 2014-09-10 Scalable log-based transaction management
US14/482,677 2014-09-10
US14/482,668 US10303795B2 (en) 2014-09-10 2014-09-10 Read descriptors at heterogeneous storage systems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017513779A Division JP6346376B2 (ja) 2014-09-10 2015-09-10 拡張縮小可能なログベーストランザクション管理

Publications (2)

Publication Number Publication Date
JP2018163671A JP2018163671A (ja) 2018-10-18
JP6677759B2 true JP6677759B2 (ja) 2020-04-08

Family

ID=54207747

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017513779A Active JP6346376B2 (ja) 2014-09-10 2015-09-10 拡張縮小可能なログベーストランザクション管理
JP2018099381A Active JP6677759B2 (ja) 2014-09-10 2018-05-24 拡張縮小可能なログベーストランザクション管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017513779A Active JP6346376B2 (ja) 2014-09-10 2015-09-10 拡張縮小可能なログベーストランザクション管理

Country Status (5)

Country Link
EP (1) EP3191984B1 (ja)
JP (2) JP6346376B2 (ja)
CN (1) CN107077492B (ja)
CA (2) CA2960988C (ja)
WO (1) WO2016040666A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3438847A4 (en) 2016-04-22 2019-05-01 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR DUPLICATING A DATABASE IN A DISTRIBUTED SYSTEM
CN107544758B (zh) * 2017-08-29 2020-07-10 新华三云计算技术有限公司 集群的磁盘心跳检测方法和装置
US10621167B2 (en) * 2017-10-26 2020-04-14 Sap Se Data separation and write redirection in multi-tenancy database systems
CN109725989B (zh) * 2017-10-31 2020-07-31 阿里巴巴集团控股有限公司 一种任务执行的方法及装置
US11823178B2 (en) * 2017-11-17 2023-11-21 International Business Machines Corporation Optimization of high volume transaction performance on a blockchain
WO2019109257A1 (zh) * 2017-12-05 2019-06-13 华为技术有限公司 一种日志管理方法、服务器和数据库系统
CN110058958B (zh) * 2018-01-18 2023-07-25 伊姆西Ip控股有限责任公司 用于管理数据备份的方法、设备和计算机程序产品
CN108932286B (zh) * 2018-05-23 2022-04-22 北京奥星贝斯科技有限公司 一种数据查询方法及装置
CN109450670B (zh) * 2018-10-19 2022-04-01 杭州东方通信软件技术有限公司 一种人工智能模式下的指令冲突判断方法及其系统
CN109656700A (zh) * 2018-12-17 2019-04-19 广州市玄武无线科技股份有限公司 多租户下分布式链路跟踪方法、系统、设备以及存储介质
CN111489490B (zh) * 2019-01-28 2022-05-06 菜鸟智能物流控股有限公司 物流对象容器发生异常事件的处理方法、装置及对象容器
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN111857828B (zh) * 2019-04-25 2023-03-14 安徽寒武纪信息科技有限公司 处理器操作方法及装置以及相关产品
CN111782577B (zh) 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN111857829A (zh) * 2019-04-25 2020-10-30 安徽寒武纪信息科技有限公司 处理器操作方法及装置以及相关产品
EP3828698B1 (en) * 2019-04-04 2022-07-20 Cambricon Technologies Corporation Limited Data processing method and apparatus, and related product
CN111782267B (zh) * 2019-04-04 2022-12-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
CN112068986B (zh) * 2019-06-10 2024-04-12 伊姆西Ip控股有限责任公司 用于管理备份任务的方法、设备和计算机程序产品
WO2021014631A1 (ja) * 2019-07-25 2021-01-28 日本電信電話株式会社 選定装置、選定方法、およびプログラム
CN110457305B (zh) * 2019-08-13 2021-11-26 腾讯科技(深圳)有限公司 数据去重方法、装置、设备及介质
CN111930693B (zh) * 2020-05-28 2024-02-06 武汉达梦数据库股份有限公司 一种基于日志解析同步的事务合并执行方法及装置
CN111930692B (zh) * 2020-05-28 2022-05-13 武汉达梦数据库股份有限公司 一种基于日志解析同步的事务合并执行方法及装置
CN113807507A (zh) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
CN112948206A (zh) * 2021-02-22 2021-06-11 上海宽带技术及应用工程研究中心 基于云计算的时序日志管理系统及包含该系统的电子设备
US20240062203A1 (en) * 2022-08-18 2024-02-22 DefiQ, Inc. Reducing gas fees for smart contracts and other blockchain transactions
US20240103981A1 (en) * 2022-09-28 2024-03-28 Hitachi, Ltd. Automatic copy configuration

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04199339A (ja) * 1990-11-29 1992-07-20 Hitachi Ltd 分散処理システムの分散トランザクションファイル制御方法
JPH06243072A (ja) * 1993-02-17 1994-09-02 Hitachi Ltd 分散処理システムの分散トランザクションコミット制御方式
JPH08235043A (ja) * 1995-02-28 1996-09-13 N T T Data Tsushin Kk 協調型分散システム
JP3094888B2 (ja) * 1996-01-26 2000-10-03 三菱電機株式会社 採番機構、データ整合性確認機構、トランザクション再実行機構及び分散トランザクション処理システム
US20110314148A1 (en) * 2005-11-12 2011-12-22 LogRhythm Inc. Log collection, structuring and processing
JP5088734B2 (ja) * 2007-11-22 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 耐障害性トランザクション処理システム及び処理方法
JP2011076487A (ja) * 2009-09-30 2011-04-14 Oki Networks Co Ltd 計算機、及びデータベース管理プログラム
US8356007B2 (en) * 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning
US8442962B2 (en) * 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization

Also Published As

Publication number Publication date
CA2960988C (en) 2019-06-04
JP2017531256A (ja) 2017-10-19
JP2018163671A (ja) 2018-10-18
CA3040213C (en) 2020-09-08
CN107077492A (zh) 2017-08-18
CA3040213A1 (en) 2016-03-17
EP3191984A1 (en) 2017-07-19
JP6346376B2 (ja) 2018-06-20
WO2016040666A1 (en) 2016-03-17
CN107077492B (zh) 2020-09-08
CA2960988A1 (en) 2016-03-17
EP3191984B1 (en) 2021-03-10

Similar Documents

Publication Publication Date Title
JP6677759B2 (ja) 拡張縮小可能なログベーストランザクション管理
US11625700B2 (en) Cross-data-store operations in log-coordinated storage systems
US11397709B2 (en) Automated configuration of log-coordinated storage groups
US10296606B2 (en) Stateless datastore—independent transactions
US9323569B2 (en) Scalable log-based transaction management
US10373247B2 (en) Lifecycle transitions in log-coordinated data stores
US10303795B2 (en) Read descriptors at heterogeneous storage systems
US11341115B2 (en) Multi-database log with multi-item transaction support
JP6688835B2 (ja) マルチアイテムトランザクションサポートを有するマルチデータベースログ
EP3195117B1 (en) Automated configuration of log-coordinated storage groups
US9619544B2 (en) Distributed state management using dynamic replication graphs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190409

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190904

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200313

R150 Certificate of patent or registration of utility model

Ref document number: 6677759

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