HBase およびその性質の他のプロジェクトに関する警告の言葉 (CouchDB については何も知りません。実際には db ではなく、単なるキー値ストアであると思います):
- Hbase は速度に合わせて調整されていません。スケーラビリティに合わせて調整されています。応答速度がまったく問題になる場合は、このパスにコミットする前に、いくつかの概念実証を実行してください。
- Hbase は結合をサポートしていません。ActiveRecord を使用していて、複数のリレーションがある場合は、これがどこに向かっているのかがわかります。
同じく Hadoop の上に構築された Hive プロジェクトは、結合をサポートしています。Pigもそうです(しかし、実際にはSQLではありません)。ポイント1は両方に当てはまります。これらは重いデータ処理タスク用であり、Rails で実行する可能性のあるタイプの処理用ではありません。
Web アプリのスケーラビリティが必要な場合、基本的に機能する唯一の戦略は、データをパーティション分割し、パーティションが分離されるようにできる限りのことを行うことです (相互に通信する必要はありません)。Rails では、デフォルトで中央データベースが 1 つあると想定されているため、これは少し注意が必要です。約1年半前にこの問題を見て以来、その面で改善があったかもしれません. データを分割できる場合は、水平方向にかなり広くスケーリングできます。1 台の MySQL マシンで数百万行を処理できます (PostgreSQL はおそらくより多くの行にスケーリングできますが、動作が少し遅くなる可能性があります)。
機能するもう 1 つの戦略は、すべての書き込みがマスターによって行われ、読み取りがスレーブ (および場合によってはマスター) 間で共有される、マスター/スレーブをセットアップすることです。明らかに、これはかなり慎重に行う必要があります。読み取り/書き込み比率が高いと仮定すると、これはかなりうまくスケーリングできます。
組織に潤沢な資金がある場合は、Vertica、AsterData、および Greenplum が提供するものを確認してください。