2017-08-16 8 views
0

"一貫性"という用語で混乱します。これは、分散システム、メモリモデル、データベースなどのさまざまな状況で使用されています。 People/Wikipediaはすべての異なるConsistency Modelを同じページにまとめる。しかし、私は彼らが同じ問題を記述するために使われているとは本当に思いません。異なるコンテキストでの一貫性(分散システムとメモリモデルとデータベース)

たとえば、Sequential/Relax/Weak/Strict/Processorの整合性などは、メモリモデル(近代的なアーキテクチャ&近代言語コンパイラによって提供されます)で意味を成します。一方、Sequential/Eventually ConsistencyはDistributed System(レプリケート・ステート・マシンを構築しようとすると)に意味があります。パクソス/ラフトのコンセンサスアルゴリズムはSCモデルを構築するのに役立ち、DynamoDBはECモデルの一例です。

しかし、レプリケートされたログを作成し、メモリモデルの最終的な一貫性について話すときに、リリース/弱い一貫性について話すのは実際には意味がありません。

伝統的な関係データベースと同じくらい、それは私をさらに混乱させます。 ACIDモデルでは、一貫性は異なる概念を意味すると思われます。トランザクションの後に必要なのは、データベースが有効/一貫性のある状態であることです。しかし、ACIDの分離部分は、一貫性モデル、特にSequential整合性モデルのように聞こえます。

私はここで何かを誤解していますか?またはコンピュータの人々はちょうど悪用用語と混乱の人々を楽しんでいる...

私は間違っている場合私はそれがちょっとした詳細ですが私を修正してください。私は本当にコンセプトを正しく理解したい。ありがとう:)

+0

前者はECモデルの例です(「Dynamo:Amazonの高可用キー・バリューストア」を参照)。後者は、同様の名前を使用するSCソリューションです。 – rystsov

+0

@rystsovそれを指摘してくれてありがとう –

答えて

0

3つの状況すべてにおいて、一貫性は実際にはメモリの可視性に沸きます。

プロセッサとコンパイラは、プログラム内の定義されたポイントでメモリが世界中に見えることをメモリモデルが保証しなければならないというだけで、メモリの順序を変更することができます。

分散システムでは、すべての読み取りは一貫性があるとみなされる最新の書き込みを受け取る必要があります。私。書き込みは、後で読み取るときに表示する必要があります。

データベースは、有効な状態遷移を行うために実行されるアクションの前に、すべてのメモリエフェクトを表示できる必要があります。

関連する問題