もし存在しない場合、同じパーティションの複数の行をバッチ挿入しています。私のテストでは、行のいずれかが重複していると、すべての挿入が失敗し、行が挿入されていないように見えます。私は存在しない場合の動作を維持したいが、重複があっても重複しない行を挿入するとバッチを失敗しないようにしたい。重複がある場合、バッチに失敗しないようにカッサンドラに伝える方法はありますか?Cassandraバッチが存在しない場合は重複動作
1
A
答えて
2
ご使用のバージョンのCassandraに適用される可能性が高い次の文書に注意してください。
Cassandra 2.0.6以降では、Cassandra 2.0で軽量トランザクションとして導入されたバッチ条件付きの更新が可能です。基本的なPaxosの実装は、パーティションの粒度で動作するため、同じパーティションに対して行われた更新のみをバッチに含めることができます。条件を持つ更新をグループ化することはできませんが、バッチ内の単一のステートメントが条件を使用する場合、バッチ全体がバッチ内のすべての条件が適用されるかのように、単一のPaxosプロポーザルを使用してコミットされます。
これは、意図した動作であることを確認します。基礎となるバッチの仕組みを考えると、CQLを使用して欲しいことを行うことは容易ではありません。
あなたのユースケースの詳細を知らなくても、私の最初の考えは、あなたが本当にこのようなBATCHステートメントを使用する必要がある場合は質問することです。アプリケーションの1つのイベントに基づいて複数のテーブルを更新する必要がある場合でも、同じIF NOT EXISTS条件に基づいてステートメントをまとめてバッチ処理できます。
関連する問題
- 1. 重複が存在しない場合、MySQL重複エントリエラーが発生する
- 2. Laravel更新が存在しない場合(重複チェック)
- 3. cassandra CREATE KEYSPACE存在しない場合は
- 4. ファイルが存在しない場合は、存在しない場合
- 5. 存在しない場合 - CMDコマンド - 動作しない
- 6. バッチファイル - 存在しない場合は動作しません。
- 7. Silverlightが存在しない場合のカスタム動作
- 8. レコードが存在しない場合は、
- 9. Postgresデータベースが存在しない場合は作成
- 10. SQLストアドプロシージャがSQLサーバーに存在しない場合は作成
- 11. データベースが存在しない場合は作成
- 12. PHP mysqlデータベースが存在しない場合は作成する
- 13. フォルダが存在しない場合は作成する
- 14. GNUスクリーン接続が存在する場合、作成しない場合は
- 15. DynamoDB createTableが存在しない場合
- 16. result.responseText.matchが存在しない場合
- 17. sqlPreparedStatement:INSERT INTOが存在しない場合
- 18. 存在しない場合はJPAは
- 19. 存在しない場合はINSERT、存在する場合は削除
- 20. LEFT JOINのデータセットが存在する場合と存在しない場合
- 21. CloudFormation:リソースが存在しない場合は作成しますが、削除しない場合は
- 22. 存在する場合はファイルに追加し、存在しない場合は作成する
- 23. 存在する場合は、重複を削除してください
- 24. PHP MYSQL UPDATE(存在する場合)またはINSERT(存在しない場合)?
- 25. ヒストリテーブルが存在しない場合の自動マイグレーション
- 26. SQL更新が存在する場合は、存在しない場合は挿入してください。
- 27. 配列の重複値を確認し、jqueryを使用してifが存在しない場合は
- 28. mysqldump - 存在しない場合はテーブルを作成します。
- 29. 存在しない場合はエントリを作成します
- 30. LFTP - 存在しない場合はディレクトリを作成します。
私の使用例は簡単です。私は同じテーブルにデータを挿入する2つの別々のプロセスがあります。最初のプロセスAのデータは、他のプロセスBのデータよりも優先されます。プロセスBはまずテーブルから読み取り、挿入しようとしているデータが存在していないことを確認します。問題は、読み込みと書き込みの間のデータがプロセスAによって挿入された可能性があることです。これは、プロセスBがプロセスBのデータをプロセスAのデータを上書きするのを避けるために、存在しない場合に挿入を行います。 –
意味があります軽量なトランザクション(存在しない場合)を使用するが、バッチステートメントを使用する必要があるのはなぜですか。 –
私は実際には、既定のグループですべての同じパーティションキーの挿入を単一のバッチステートメントで行うSpark Cassandraコネクタを通じてこれを行っています。 –