0

私はカサンドラが初めてです。私はオンラインで多くの例を見ています。以下は、GitHub の JHipster Cassandra の例の 1 つです。

https://gist.github.com/jdubois/c3d3bedb869466731316

ここに画像の説明を入力

リポジトリの save(user) メソッドは、ユーザー データが変更されるたびに、(存在を探すために) 読み取りを行い、非正規化されたすべてのテーブルで既存のユーザーの削除と再挿入を行います。

これはベストプラクティスですか?これは、このサンプルのデータ モデルがどのように設計されているかだけによるものですか? このサンプルの設計は、POJO フレームワークを NoSQL データベース設計にねじ曲げた結果ですか?

Cassandra で更新を行いたいのはいつですか? フィールドレベルでの更新をサポートしているので、それが好まれるようです。

4

2 に答える 2

0

新しい行を挿入する前に行を削除する必要はありません。ただし、行を置き換え、新しい列が既存の列と異なる場合は、既存の列をすべて削除して新しい列を挿入する必要があります。新しく挿入して古いものを削除するか、バッチで発生しても問題ありません。

于 2015-09-10T12:30:01.460 に答える
0

まず第一に、より堅牢なエラー処理のために、削除操作をバッチの一部にする必要があります。しかし、コードには並行性の問題もいくつかあるようです。以前に読み取った現在のユーザー値に基づいてユーザーを更新します。save() が実際に実行されている間、これが最新の値であると想定するのは保存ではありません。また、その時点で別のユーザーが使用している可能性のあるルックアップ テーブル内のキーを上書きするだけです。たとえば、insertByLoginStmt の実行中に別のユーザーのログインがすでに存在している可能性があります。

于 2015-05-22T15:10:07.990 に答える