2

Cassandra および他の多くの同様のシステムは、トランザクションをサポートしていません。代わりに、最終的な一貫性を提供します。つまり、システムへのライターは最終的に一貫した状態になります。トランザクションがエミュレートできるものをエミュレートするために使用する方法の例はありますか?

結果整合性が必要な場合があることは理解しています。たとえば、ソーシャル ネットワークの友人のリストが常に最新であるとは限らないことなどは簡単に許容できます。しかし、ホテルの予約や送金などのシステムの場合はどうすればよいでしょうか。Google アプリ エンジンにはエンティティ グループがありますが、結果整合性を提供するシステムで何らかの方法でエミュレートできますか?

同様のアーキテクチャの例を見つけることができる記事はありますか?

4

1 に答える 1

4

トランザクションなしで(単一の操作に対して)一貫性を分散させることはできますが、 (操作のグループに対して)アトミック性を持たせることはできません。Cassandraの「一貫性」は、一般的なACIDデータベースよりも少し具体的な意味で使用されます。

Cassandraは、調整可能な整合性レベル(CL)をサポートしています。読み取りと書き込みごとに整合性レベルを指定できます。http://wiki.apache.org/cassandra/APIを参照してください。

これらのレベルの範囲は、CL.ANY(最初​​は単一ノードとの間で読み取りまたは書き込みを行う)からCL.ALL(可用性を犠牲にして完全な整合性を提供する)までです。

ただし、操作をアトミックトランザクションにグループ化する方法はないため、すべてが成功またはすべて失敗します(ただし、同じ行の複数の操作はアトミックですが、独立しているわけではないと思います)。

参照:

于 2012-02-17T23:36:03.343 に答える