e コマース アプリケーションを想像してみてください。
Node cluster
N1, N2, N3.
3 つ持っていて、一貫性レベル (CL) が弱いとしましょう。
Read CL = N/2+1 = 2 (in this case), Write CL = Any (alteast 1)
次のような製品テーブルがあります
これは、3 つのノード間で同期されている初期データです。
product_info : { 'computer': 1}
クライアント A は N1 から情報を読み取り、クライアント B は N2 から情報を読み取ります。
クライアント 1 は、1 台のコンピューターが使用可能であることを確認します
クライアント 2 は、1 台のコンピューターが使用可能であることを確認します
クライアント A が最初に注文します。したがって、N1 の場合、テーブルは次のようになります。
product_info : {'computer':0}
クライアント 2 が注文を行うため、N2 ではテーブルは次のようになります。
product_info : {'computer':0}
しかし実際には、クライアント 2 の注文は処理されていないはずです。
クライアント C は N3 経由でアクセスします。ここで、N1 で読み取りが行われ、0 が返されます。(クォーラムは少なくとも 2 つのノードが応答する必要があるため) N3 の値は 1 ですが、そのタイムスタンプは古くなっています。その値を更新し、利用可能なコンピューターがないことをクライアントに示します。これはいい
この例では、最初の product_info がクライアント A と B によってロードされた時点でデータが同期されているため、弱い一貫性レベルと強い一貫性レベルの両方が間違った結果につながります。これを Cassandra でどのように処理できますか?