web-dev-qa-db-ja.com

Redis、CouchDB、またはCassandra?

利用可能なさまざまなNoSQLデータベースの長所と短所は何ですか?

特に、書き込み負荷を複数のサーバーに分散することに関しては、Redisは弱いようです。それは事実ですか?大きな問題ですか?それが重大な問題になる前に、サービスはどれほど大きくなければなりませんか?

41
nornagon

NoSQLデータベース(およびSQLデータベース)の長所と短所はhighlyユースケースによって異なります。非常に大規模なプロジェクトでは、パフォーマンスが重要です。しかし、まったく新しいプロジェクト、または時間とお金が限られているプロジェクトの場合、シンプルさと市場投入までの時間がおそらく最も重要です。自分自身を教える(視野を広げ、より優れた、より価値のあるプログラマーになる)には、おそらく最も重要なことは、単純で強固な基本概念です。

どのようなプロジェクトを考えていますか?

私の頭の上にあるいくつかの長所と短所:

  • Redis
    • 非常に単純なKey-Value「グローバル変数サーバー」
    • 非常にシンプルな(「存在しない」と言う人もいる)クエリシステム
    • このリストで簡単に最速
    • 取引
    • データセットはメモリに収まる必要があります
    • 未成熟なクラスタリング、将来は不明確(素晴らしいものになると確信していますが、まだ決定されていません。)
  • Cassandra
    • 間違いなく、BigTableのようなデータベースの中で最もコミュニティの勢い
    • おそらく、このリストの中で最も大きく/成長しているクラスターで管理するのが最も簡単です。
    • マップ/リデュースのサポート、分析、データウェアハウジングに最適
    • MUlti-datacenterレプリケーション
    • 調整可能な一貫性/可用性
    • 単一障害点なし
    • データの形状とインデックスを準備するには、プロジェクトの初期に実行するクエリを知っている必要があります
  • CouchDB
    • 最高の同期(レプリケーション)サポートをサポートし、マスター/スレーブ、マスター/マスター、およびよりエキゾチックなアーキテクチャをサポート
    • HTTPプロトコル、ブラウザー/アプリは、DBと部分的または全体的に直接対話できます。 (同期もHTTP経由で行われます)
    • 短い学習曲線の後で、JavaScriptとmap/reduceを使用したかなり洗練されたクエリシステム
    • クラスター化された操作(SPOFなし、調整可能な整合性/可用性)は現在、重要な分岐(BigCouch)です。おそらくカウチに統合されるでしょうが、ロードマップはありません。
    • 同様に、クラスタリングとマルチデータセンターは理論的には可能ですが(私が述べた「エキゾチックな」こと)、この時点ですべてのツールを自分で作成する必要があります。
    • ファイル形式(データベースとインデックスの両方)のみを追加すると、ディスクが驚くほど速く消費され、データベース内のすべてのレコードの完全なコピーを作成する圧縮(バキューム)を手動で実行する必要があります。インデックスファイルごとに同じことが必要です。繰り返しますが、あなたはあなた自身のツールスミスでなければなりません。
80
JasonSmith

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis を見てください。彼は、なぜあなたが一方を他方よりも上で使用するのかを要約するのに優れています。

32
webXL