2012-02-17 4 views
2

Cassandraをはじめとする多くの同様のシステムでは、トランザクションはサポートされていません。代わりに、最終的な一貫性を提供します。これは、システムの作者が最終的に一貫した状態になることを意味します。トランザクションがエミュレートできるものをエミュレートするために、どのように使用すればよいのですか?最終的な一貫性のみを提供するデータベースでアプリケーションを作成する方法

最終的な一貫性が必要な場合があることを理解します。たとえば、ソーシャルネットワークの友人のリストが常に最新であるとは限りません。しかし、ホテル予約や送金などのシステムではどうすればよいですか? Google App Engineにはエンティティグループがありますが、最終的な整合性を提供するシステムで何とかそれらをエミュレートできますか?

類似のアーキテクチャの例はどこにありますか?

答えて

4

あなたは取引なし(単一の操作用)一貫を配布していることができますが、ないアトミック(オペレーションのグループの場合)。カッサンドラの「一貫性」は、一般的にACIDデータベースの場合よりも少し具体的な意味で使用されます。

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

これらのレベルの範囲は、CL.ANY(最初は単一のノードから読み書きします)からCL.ALL(可用性を犠牲にして一貫性があります)までです。

しかし、操作をアトミックなトランザクションにグループ化してすべて成功またはすべて失敗するようなことはありません(ただし、同じ行の複数の操作は独立しているとは思いますが)。

も参照してください:

関連する問題