1

特にRiakを使用してNoSQLに頭を悩ませようとしています。CAP定理を見ると、一貫性がどのように発生するかを理解するのが難しい. たとえば、オンラインショップを持っているとします。出品する商品は6点です。2 人がこれらの商品を購入したいと考えています。最初の人はこれらのアイテムを 2 つ購入したいと考えており、2 人目は 6 つのアイテムすべてを購入したいと考えています。2 つのトランザクションはほぼ即座に実行されます。2 番目の人が幻の商品を購入しないようにするにはどうすればよいでしょうか。

私は頭のてっぺんから、読み取り/書き込みロックを使用することを考えていました。これは、可用性の問題かもしれません。

Commutative Replicated Data Types についても見ました。それについてはまだジャーナルを読んでいますが、Riakに関して何か洞察を持っている人はいますか?

前もって感謝します。

4

1 に答える 1

4

この問題は Riak や NoSQL に固有のものではなく、一般的な分散システムにあります。在庫を追跡するために mysql のようなリレーショナル データベースを使用しており、そのデータを 2 つ以上のサーバー間で複製している場合、アプリケーションは、サーバー 2 からの在庫状況レポートに基づいて商品を転売しないように設計する必要があります。サーバー 1 は最後のトランザクションを販売するトランザクションを処理しましたが、まだ複製されていません。どちらの場合でも、出荷/生産の遅延について顧客に謝罪したくない場合は、購入リクエストのロックまたはシリアル化に対処する必要があります。

特にRiakを使用すると、読み取りおよび書き込みクォーラムを使用して可用性/一貫性をニーズに合わせて調整でき、プライマリレプリカが利用できない場合に一貫性が必要な最終購入などの操作を選択的に失敗させながら、インベントリの閲覧などの重要度の低い操作を許可できます。続ける。つまり、クエリ時に可用性よりも一貫性を選択したり、その逆を選択したりできます。

于 2014-04-04T18:09:22.910 に答える