5

CAP理論によると、Cassandraは結果整合性しか持てません。さらに悪いことに、適切な処理を行わずに1つの要求中に複数の読み取りと書き込みが行われると、論理的な一貫性が失われる可能性があります。言い換えれば、私たちが物事を速く行うならば、私たちはそれを間違って行うかもしれません。

一方、Cassandraのデータモデルを設計するためのベストプラクティスは、実行するクエリについて考え、それにCFを追加することです。このように、1つのエンティティを追加/更新するということは、多くの場合、多くのビュー/CFを更新することを意味します。アトミックトランザクション機能がなければ、それを正しく行うことは困難です。しかし、それで、AとPの部分が再び失われます。

これは多くの人に関係しているとは思わないので、なぜだろうと思います。

  • これは、1回のセッションで複数の読み取りと書き込みを行わないようにデータモデルを設計する方法を常に見つけることができるためですか?
  • これは、「正しい」部分を無視できるからですか?
  • 実際には、ACID機能は常に中間のどこかにありますか?アプリケーション層に実装するのか、それを処理するミドルウェアを追加するのか。
4

1 に答える 1

2

それは人々に関係しますが、おそらく、スケーリングや信頼性の懸念のために単一のデータベースサーバーがニーズを満たすことができないため、cassandraを使用しています。このため、分散システムの制限を回避する必要があります。

実際には、ACID機能は常に中間のどこかにありますか?アプリケーション層に実装するのか、それを処理するミドルウェアを追加するのか。

いいえ、通常、他の場所には酸がありません。おそらく、他の場所にも複数のマシンに分散させる必要があるためです。代わりに、分散システムの制限に基づいてアプリケーションを設計します。

クエリを満たすために複数の列を更新する場合は、このプレゼンテーションの最終的にアトミックなセクションで、その方法に関するアイデアを確認できます。基本的に、書き込みを行う前に、更新に関する十分な情報をcassandraに書き込みます。そうすれば、書き込みが失敗した場合でも、後で再試行できます。

このようにアプリケーションを構成できる場合は、Zookeeperやケージなどの調整サービスを使用すると便利な場合があります。

于 2011-09-06T06:04:17.543 に答える