Слово с предупреждением о HBase и других подобных проектах (ничего не знаю о CouchDB - я думаю это вообще не БД, просто хранилище значений ключей):
- Hbase не настроен на скорость; он настроен на масштабируемость. Если скорость ответа вообще является проблемой, запустите несколько проверок концепции, прежде чем идти по этому пути.
- Hbase не поддерживает объединения. Если вы используете ActiveRecord и имеете более одного отношения ... хорошо, вы можете видеть, куда это идет.
Проект Hive, также построенный на основе Hadoop, поддерживает объединения; так же, как и Свинья (но это не совсем sql). Пункт 1 относится к обоим. Они предназначены для сложных задач обработки данных, а не для того типа обработки, который вы, вероятно, будете выполнять с Rails.
Если вам нужна масштабируемость для веб-приложения, в основном единственная стратегия, которая работает, - это разделение ваших данных и максимально возможное обеспечение изоляции разделов (не нужно общаться друг с другом). С Rails это немного сложно, так как по умолчанию предполагается, что существует одна центральная база данных. Возможно, в этом направлении произошли улучшения, поскольку я рассматривал эту проблему полтора года назад. Если вы можете разделить ваши данные, вы можете масштабировать по горизонтали довольно широко. Одна машина MySQL может обрабатывать несколько миллионов строк (PostgreSQL, вероятно, может масштабироваться до большего числа строк, но может работать немного медленнее).
Другая стратегия, которая работает, заключается в настройке «ведущий-ведомый», когда все записи выполняются ведущим, а чтения распределяются между ведомыми (и, возможно, ведущим). Очевидно, что это должно быть сделано довольно осторожно! При условии высокого отношения чтения / записи, это может очень хорошо масштабироваться.
Если ваша организация имеет большие карманы, посмотрите, что могут предложить Vertica, AsterData и Greenplum.