2017-05-31 18 views
0

分散フォールトトレラントシステムでは、同じ日付の複数のコピーがミラー化され、書き込み中にどのノードにもすべての要求を同時に送ることができます。documentdbの競合解決

私は前にRiakとCassandraを使用しました。 Riakはベクトル・クロックに基づいて動作し、システムが自動的にそれを行うか、ユーザがそれを処理しなければならないかの紛争解決を決定することができます。通常、機密データ・ユーザの​​場合、システムは、捨てる。同じことがカッサンドラにあり、タイムスタンプに基づいています。

したがって、cosomosdbごとに、StrongからEventualまで様々な整合性レベルがあります。一貫性の選択に基づいて、システムは兄弟を生成する可能性があります。

Q1。だから私の最初の質問は、兄弟の取り扱いと紛争の解決がどのように起こっているかです。システム側ではなく、ユーザー側から兄弟を処理する方法は、どちらを保持するか、兄弟の場合はどちらを破棄するかを決定する方法です。

Q2。もう1つの質問は、RiakとCassandraのvector clockとtime-stampのようなもので、documentdbの仕組みです。

答えて

2

コスモスDBは、パーティションキー範囲にシングルマスタ書き込みを使用します。整合性レベルにかかわらず、書き込みは競合のないことが保証されています。競合の可能性は、書き込み領域の自動フェイルオーバー中のみです。このシナリオは、https://docs.microsoft.com/en-us/azure/cosmos-db/regional-failoverにより詳細に説明されています。

ライト・リージョン・フェイルオーバーの場合、レプリケートされていない書き込みは競合として登録されます。アプリケーションはこのレコードの手動マージを実行できます。 ConflictFeedAsyncの詳細はこちらhttps://msdn.microsoft.com/en-us/library/microsoft.azure.documents.client.documentclient.readconflictfeedasync.aspx

+1

私が追加することの1つは、CosmoDBがeTagsとの楽観的同時実行性を実現することです。すべての更新には最後の読み取りからのeTagが含まれている必要があり、eTagが読み取りと更新の間で再度更新された意味と一致しない場合は失敗します。 –

+0

その点で、eTagsとの楽観的な並行性を実装したい場合は、ここでは[.net](フルフレームワークまたはコア)で作業する場合に便利な[拡張子](https://github.com/ealsur/concurrentdocdb) ) –

+0

CosmosDBのシングルマスタ書き込みとその関連トピックを記述するリンクはありますか? – Mikhail

関連する問題