3

1 秒あたり約 1000 ページ ビューをカウントするテーブルがあります。どの読み取りおよび書き込み ConsistencyLevel を使用する必要がありますか? Cassandra Thrift クライアントを使用しています。

4

3 に答える 3

3

カルロは多かれ少なかれ正しい考えを持っています。ただし、ユースケースとのバランスを取る必要があります。

私はゲーム業界で働いており、プレーヤーのデータには cassandra を使用しています。これは、cassandra の強みではない read-modify-write パターンにかなり強く拘束されています。しかし、書き込みが多い (1 日に数回の読み取りに対して数千回の書き込み) 機能もあります。

これは、整合性レベルをどのように使用すべきかについて、経験に基づいた私の意見です。

QUORUM での書き込み + 読み取りは、両方の操作に戻る前に、クラスター内のノードの大部分が操作を確認するのを待つことを意味します。これは、読み取りと書き込みがほぼ同じ頻度である場合に使用するソリューションです。(プレイヤーデータブロブ)

Write One + Read All は、非常に書き込み量の多いものに役立ちます。例としてこれをハイ スコアに使用します (ゲーム全体のハイ スコア テーブルを再生成するために 5 分ごとに書き込みが頻繁に行われます)。データをあまり気にしない場合 (重要でないログが思い浮かびます) は、Write Any を使用できます。

Write All + Read One の唯一の使用例は、更新を定期的にチェックするメッセージングまたはフィードです。Cassandra にはサブスクリプション/プッシュ機能がないため、チャットとメッセージングは​​それに適しているようです。

Write & Read ALL は不適切な実装です。上記の 3 つのセットアップのいずれかを使用している場合と同じ一貫性が得られるため、リソースの無駄です。

Write ANY と Write ONE に関する最後の注意: ANY はクラスター内の何かがミューテーションを受け取ったことを確認するだけですが、ONE はそれが少なくとも 1 つのノードによって適用されたことを確認します。ANY は安全ではありません。そのミューテーションを担当するすべてのノードがダウンしている場合や、受信後にミューテーションが失敗する可能性のあるその他の条件が発生した場合でも、エラーなしで返される可能性があるためです。また、わずかに高速です (重要ではないログの非同期ダンプとしてのみ使用します) が唯一の利点ですが、応答を 100% 信頼することはできません。

cassandra に関するこの主題を研究するための良いリファレンスは、http: //www.datastax.com/docs/1.2/dml/data_consistency です。

于 2013-04-15T08:21:38.940 に答える
2

どの読み取りでも常に一貫性を保ちたい場合、ルールは次のとおりです。

(書き込み整合性レベル + 読み取り整合性レベル) > レプリケーション係数。

だからあなたはできる

Write All + Read All (worst solution)
Write One + Read All (second-worst solution)
Write All + Read One (probably faster solution)
Write Quorum + Read Quorum (imho, best solution)

r/w 操作中に RF のノードがダウンすると操作が失敗するので、CL ALL は避けたいと思います。

よろしく、 カルロ

于 2013-04-12T22:28:39.367 に答える
0

ドキュメント ( https://docs.datastax.com/en/cql/3.0/cql/ddl/ddl_counters_c.html ) に基づくと、整合性レベル ONE が推奨されます。通常の最後の書き込み勝利ではなく、カウンター列の競合を解決するために何らかのマージが使用されていると思います。これが、値の設定が許可されていない理由である可能性があります。

于 2016-01-12T19:00:46.793 に答える