2017-01-17 11 views

答えて

1

カサンドラでは、書き込みは行レベルでアトミックであり、行の挿入または更新は1回の書き込み操作として扱われます。

カサンドラは、複数の行の更新を1つのオール・オア・ナッシング操作にバンドルする意味でのトランザクションはサポートしていません。 Cassandraでは、書き込み操作レポートをクライアントに報告することは可能ですが、実際にはレプリカへの書き込みを維持します。

挿入は、実際にはほとんどの場合メモリ操作で行われるので、単一のパーティション(行)を並べ替えて保存することは比較的簡単ですし、「redis like」の速度で行われることを考慮してください。

カサンドラは、タイムスタンプを使用して、複数のタイムスタンプが同時に存在する場合、そのタイムスタンプを使用して最新のアップデートを判断します。

メモリ内で実行される操作では、古いエントリは単純に無視されます。

タイムスタンプは、クライアントアプリケーションによって提供されるか、コーディネーターノードで設定されます。最新のタイムスタンプはデータを要求するときに常に勝ちます。したがって、複数のクライアントセッションが同じ列を同時に更新する場合、最新の更新は最終的に更新されます。

あなたが興味を持っている場合は、ボンネットの下を見てとることができます。

https://github.com/apache/cassandra/blob/b02dec3da539d181544cfb0288102d6073f36264/src/java/org/apache/cassandra/db/Memtable.java#L262

+2

その行レベルの分離を言及する価値があるが(https://issues.apache.org/カサンドラ1.1以降で使用可能ですjira/browse/CASSANDRA-2893)、詳細はこちらhttp://www.datastax.com/dev/blog/row-level-isolation – bkowalczyyk