2

多くのユーザーが同じ「宇宙」にいる必要があるWebアプリケーションを開発しています。そこでは、多くの頻繁なクエリが発生します。

  • 特定のボックス領域 (X1、X2、Y1、Y2 の間) にあるクライアントの頻繁なルックアップ
  • クライアントによる頻繁なポジション更新
  • クライアントによる頻繁なチャット メッセージ
  • クライアントによる頻繁なステータス更新
  • 新しいクライアントと古いクライアントの頻繁な接続と切断

私のノードには、現在オンラインのすべてのユーザーが RAM に入れるのに十分なメモリがあると思います。これが、私が最初に Redis を検討した理由です。ただし、次の理由により、Redis はここでは適用できないと判断しました。

  • 単一障害点 (1 つのマスターサーバー) がある
  • マスターサーバーのみが書き込むことができます.1つに40個のノードがある場合、39個のスレーブが1つのマスターにすべてのエントリを書き込ませる必要があります.

Cassandra はこれらの問題を解決するようです。

しかし、Cassandra は私の頻繁なクエリにも適していますか?

4

2 に答える 2

2

Cassandra は読み取りよりも書き込みを最適化しますが (読み取りは書き込みに比べてコストがかかります)、読み取りと書き込みの高いスループットを同時に維持できます。

適切な列ファミリー構造を使用すると、クラスターの大きさに応じて、高頻度で必要なことを実行できるはずです。

個人的には、ほとんどの情報をキャッシュするために Redis を使用し、キャッシュ ミス時にのみ Cassandra から読み取ります。

于 2011-09-09T11:03:58.513 に答える
2

Cassandra は間違いなく書き込みを処理するための優れたソリューションですが、読み取り負荷がわかれば正確な回答が期待できますが、十分な RAM がある限り、一般的に読み取りも適切です。

あなたが説明したユーザーケースには、多くの結合が含まれているようです..

開発段階から NoSQL ソリューションを採用する十分な理由はありますか? 基本的に、Cassandra は高いスケーラビリティを必要とするセットアップのソリューションですが、非正規化と結合をかなり犠牲にすることを犠牲にしています。つまり、より多くのディスク容量が必要ですが、CPU は少なくて済みます。

または、すべてのクエリ、特に読み取りクエリの要件を満たすデータベース設計と明らかなスキーム (Cassandra はスキーマにバインドされていません) を完成させましたか? (その v.imp)

于 2011-09-10T19:07:15.113 に答える