2012-03-07 1 views
0

これは私の前の投稿に重複していません - 今は混在した行の更新に集中したいと思います。同一のタイムスタンプを持つ行の更新が混在する場合の競合解決

2人のクライアントが同じキー(RowARowB)で識別される2つの行で更新を送信します。行は同じ列ファミリに保持されます。両方の要求にはと同じタイムスタンプがあります。

  • クライアント1は、インサートを送信します:RowA:{col:"valA1"}, RowB:{col:"valB1"}
  • クライアント2は、インサートを送信します。RowA:{col:"valA2"}, RowB:{col:"valB2"}

、このような更新の結果は何ですか?

同じ列ファミリ内で更新されているため、クライアントのwinnが可能ですか?

混合結果が可能ですか?たとえばRowA:{col :"valA1"}, RowB:{col:"valB2"}

このような更新の結果を予測することは可能ですか?

+1

がhttp://stackoverflow.com/questions/9602413に似た音はありません、2回の書き込みと同じです/ cassandra-conflict-resolution-mixed-column-updates-with-same-timestam?彼らには2つの問題がありますか? – Nishant

+0

タイムスタンプは、cassandraの各列に固有です。だからこれは私がそこに答えた以前のものと同じ質問です(http://stackoverflow.com/questions/9602413/cassandra-conflict-resolution-for-mixed-column-updates-with-identical-timestam/)。 – nickmbailey

+0

は同じではない可能性があります。なぜなら、Cassandraは原子書込みで「何か」を行うことができたからです。これが2行に1つの行の変更と2つの行の2つの質問で分割したかった理由です。 –

答えて

1

同じ行/列への2つの書き込みが同じタイムスタンプを持つ場合、列のバイト値を比較することによって結合が解除されます。詳細はCASSANDRA-1039を参照してください。

上記の例では、クライアント2がクライアント1より大きいbyte []の値を書き込んでいるので、client2の書き込みが勝つでしょう。

他の人が指摘したように、この書き込み、

RowA:{col:"valA1"}, RowB:{col:"valB1"} 

RowA:{col:"valA1"} 
RowB:{col:"valB1"} 
+0

cool - thank君は –

関連する問題