Ответ 1
На поверхности они имеют много общего:
- Безмодельная модель данных
- Распределенный дизайн
- Map-Reduce как модель обработки (в отличие от SQL)
Однако детали того, как реализована каждая из этих точек, совершенно различны и имеют очень мало сходства. Я легко перейду через точки.
Безмодельная модель данных:
- CouchDB - это хранилище документов, позволяющее хранить любой документ в формате JSON.
- HBase - это хранилище, ориентированное на столбцы, где вы храните значения столбца и можете группировать эти значения в строку (очень упрощенное объяснение).
Распределенный дизайн:
- CouchDB использует одноранговую структуру для распространения данных.
- HBase использует мастер-узлы, которые определяют, где записываются столбцы и строки. (опять упрощенное объяснение).
Map-Reduce:
- CouchDB имеет встроенный механизм, называемый "представлениями", который позволяет вам определять встроенные задания сокращения карты. Эти "представления" генерируют "таблицу", содержащую вывод задания сокращения карты, который затем можно использовать так же, как и обычную таблицу. Подобно материализованным представлениям в реляционных базах данных.
- HBase не имеет встроенного механизма уменьшения карты. Скорее всего, вы можете подключить HBase с помощью Hadoop для выполнения задач Map-Reduce. То, что вы делаете с результатом, не зависит от HBase, вы можете импортировать данные или переместиться в другую базу данных.
Я попытался не вдаваться в подробности, и надеюсь, что я объясню, чтобы дать вам понимание.
Kristóf Kovács создал достойный обзор функций этих баз данных и других в поле NoSQL.