Разница между CouchDB и Couchbase

270

Есть ли существенные различия между CouchDB и Couchbase .

yojimbo87
источник
45
Запутались в именах? Я тоже, поэтому я начал с того, что сделал ремикс информации об именах из этого верхнего ответа в визуализацию истории имен , которая должна помочь понять любой из этих ответов.
Йерун
@Jeroen Это потрясающая визуализация. Должен ли он быть отредактирован в этом топ ответе?
Shoover
@shoover Thx, рад, что это помогло. Я не могу судить, достаточно ли он точен, но если rsp (основной автор этого ответа) / сообщество посчитает это достойным, тогда смело включайте его в лицензию SO.
Йерун

Ответы:

555

Я думаю, что есть некоторые существенные различия между CouchDB и Couchbase Server, на которые необходимо указать.

Я не буду писать о преимуществах перехода с CouchDB на сервер Couchbase, потому что они описаны почти везде (см. «Будущее CouchDB » Дэмиена Каца или « Couchbase против Apache CouchDB» от Couchbase). Вместо этого я попытаюсь перечислить функции CouchDB, которые вы не найдете на сервере Couchbase .

Все названия, относящиеся к CouchDB и Couchbase, могут сбивать с толку, поэтому я обновил этот ответ, чтобы начать с краткого объяснения наиболее важных.

Имена и путаница

Существуют CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... все разные и вместе с тем связанные не совсем очевидные из названий.

Сначала была CouchDB, база данных, созданная Дэмиеном Кацем, бывшим разработчиком IBM. Его официальное название было изменено на Apache CouchDB после того, как он стал проектом Apache.

Компания под названием CouchIO была основана для работы над Apache CouchDB, а затем сменила название на CouchOne (под «своим именем» я подразумеваю название компании, а не имя базы данных).

CouchOne (ранее CouchIO) объединился с Membase (ранее NorthScale), создав новую компанию под названием Couchbase. Membase (компания) разработала Membase (продукт с таким же названием). Membase была создана несколькими лидерами проекта Memcached и использовала протокол Memcached. После слияния CouchOne и Membase Couchbase продолжила разработку программного обеспечения Membase, а затем сменила название на Couchbase Server.

Сегодня я думаю, что большинство людей считают, что Couchbase Server - это новая версия CouchDB, но на самом деле это новая версия Membase. Он по-прежнему использует протокол Memcached, а не RESTful API CouchDB. Между тем, CouchDB по-прежнему является CouchDB, активно поддерживается и совершенствуется как проект Apache.

Теперь о соответствующих различиях:

Лицензирование

Couchbase Server не является полностью открытым / свободным программным обеспечением . Существует две версии: Community Edition (бесплатная, но без последних исправлений ошибок) и Enterprise Edition (существуют ограничения на использование, положения о конфиденциальности, аудиты Couchbase Inc., которые «будут проводиться в обычные рабочие часы на объектах Лицензиата» и другие типичные условия к проприетарному программному обеспечению, которое многие могут счесть неприемлемым).

CouchDB является проектом с открытым исходным кодом / свободным программным обеспечением (без каких-либо условий) проекта Apache Software Foundation и выпущен по лицензии Apache версии 2.0 (DFSG-совместимая, FSF-одобренная, OSI-совместимая, GPL-совместимая, без авторского лева). , коммерчески дружественный).

философия

Я никогда не видел, чтобы на это прямо указывали, но на самом деле это может быть самым важным различием между этими двумя базами данных, потому что оно глубоко связано с философией распределенных вычислений, а не только с определенными функциями, API или лицензированием. CouchDB и Couchbase Server полностью отличаются своей философией построения распределенных систем и баз данных.

Согласно теореме CAP для распределенной базы данных невозможно обеспечить согласованность, доступность и допуск раздела.

CouchDB - это система типа AP (обеспечивает доступность и допуск раздела ).

Couchbase Server - это ЛИБО система типа CP (согласно Википедии ) ИЛИ система типа CA (согласно техническому обновлению Couchbase ) - ЧТО ИЗ ЭТОГО ПРАВИЛЬНО? ПОЖАЛУЙСТА, ПРОКОММЕНТИРУЙТЕ.

Характеристики

Вот что я обнаружил в списке функций CouchDB, которые не поддерживаются сервером Couchbase:

  • нет RESTful API (только для представлений, а не для операций CRUD)
  • нет канала _changes
  • нет одноранговой репликации
  • нет CouchApps
  • нет Futon (доступен другой интерфейс администрирования)
  • нет идентификаторов документов
  • нет понятия баз данных (есть только корзины)
  • нет репликации между базой данных CouchDB и сервером Couchbase
  • нет явных вложений (вы должны хранить дополнительные файлы как новые пары ключ / значение)
  • нет HTTP API для всего (вам нужно использовать Couchbase Server SDK или одну из экспериментальных клиентских библиотек в Couchbase Develop, поэтому не нужно экспериментировать с curl и wget )
  • нет CouchDB API ( вместо него используется Memcached API)
  • Вы не можете делать все из браузера (вы должны написать приложение на стороне сервера)
  • двухуровневая архитектура для веб-приложений невозможна (необходимо написать серверное приложение, которое будет находиться между браузером и базой данных, как в реляционных базах данных)
  • нет возможной последовательности
  • не полностью открытое / бесплатное программное обеспечение
  • не вставная замена для CouchDB (кажется вместо этого вставная замена для Memcached)

Эти функции CouchDB могут или не могут быть важны для вас, поэтому, является ли их недостаток недостатком или нет, строго субъективно, но я думаю, что решение о том, переключаться с CouchDB на Couchbase Server или нет, должно основываться на этих различиях и ваша зависимость от этих функций в ваших текущих развертываниях CouchDB.

Например, если вы заинтересовались CouchDB после просмотра изменений в канале CouchDB NodeCamp talk от Mikeal Rogers или одного из замечательных учебных пособий CouchApp Дж. Криса Андерсона, то вам следует осознать, что если вы хотите переключиться на Couchbase Server, то вы придется забыть почти обо всем, о чем они говорили.

Поэтому я бы сказал, что Couchbase Server выглядит как эволюция Memcached и Membase (не эволюция CouchDB) и как таковой выглядит как отличный продукт, если вы в настоящее время используете Memchached или Membase. Если вы используете CouchDB самым простым способом, то вы можете рассмотреть возможность использования Couchbase Server для тех же целей, и он может работать, а может и не работать лучше (если вы не возражаете против лицензионных ограничений). Но если вы на самом деле используете какие-либо функции, которые являются уникальными в CouchDB (например, ленту изменений, CouchApps, двухуровневую архитектуру, одноранговую репликацию и т. Д.), То вы можете либо забыть об этих функциях, либо остаться с CouchDB. В любом случае, не забудьте прочитать и понять руководство по миграции на Couchbase для пользователей CouchDB, прежде чем думать о переключении.

Люди часто получают неправильное представление (возможно, прочитав такие вещи, как «Каково будущее CouchDB? Это Couchbase» ), что CouchDB каким-то образом устарел на Couchbase Server или что это старая, устаревшая версия Couchbase. Между тем CouchDB - это активно поддерживаемый проект с открытым исходным кодом, сервер Couchbase - это совершенно отдельный проект (это более новый проект, но он не является более новой версией CouchDB - они даже не совместимы), и поскольку даже новые инструменты для создания CouchApps по-прежнему сохраняются разрабатывается (например, см. проект Kanso ), то CouchDB скоро никуда не денется.

Я надеюсь, что это проясняет путаницу. Пожалуйста, поправьте меня, если я здесь ошибаюсь.

Обновить:

Couchbase Server - это фактически новое имя для Membase Server (Membase Server был переименован в Couchbase Server где-то в версии 1.8). Смотрите Couchbase 2011 год в обзоре :

К сожалению, мы перепутали многих наших потенциальных пользователей. В дополнение к Membase Server и нашим новым мобильным продуктам мы также предложили Couchbase Single Server, который являлся «дистрибутивом» Apache CouchDB. Кроме того, мы начали выпускать предварительные версии для разработчиков Couchbase Server 2.0, который включил технологию CouchDB в Membase Server, но этот продукт не был совместим с Couchbase Single Server (или CouchDB). [...] Membase Server будет переименован в Couchbase Server 1.8 в следующем выпуске в январе - крошечный шаг, который просто устраняет путаницу «имен». Как и планировалось с самого начала, выпуск Couchbase Server 2.0 (в настоящее время в Developer Preview 3) добавит функции индексирования и запросов. Хотя Couchbase Server 2.0 будет включать в себя существенную технологию из проекта CouchDB,он не будет совместим с CouchDB и не должен рассматриваться как «версия CouchDB». [выделение добавлено]

Смотрите также:

RSP
источник
69
Браво. Рад видеть, что что-то действительно объясняет эту сторону вещей (все существующие сравнения, как вы перечислили, имеют заметный уклон Couchbase).
Стюарт П. Бентли
6
@WalterTross: На самом деле не использовать CouchDB API, не быть RESTful и не использовать HTTP - это не одно и то же. Например, Riak не использует API CouchDB, но все еще использует RESTful API. Кроме того, он может не использовать REST, но по-прежнему использовать HTTP (например, SOAP или другой веб-сервис). Здесь я хотел пояснить, что сервер Couchbase не только не использует API CouchDB, но и его API не является RESTful и даже не использует HTTP вообще.
rsp
24
Я считаю это ответом. Спасибо.
Скиф
10
Относительно вашего вопроса «CP против CA»: в двух словах, невозможно иметь систему «CA», если вы не говорите об одной машине. В сети всегда есть разделы ( aphyr.com/posts/288-the-network-is-reliable ), поэтому распределенная система в любой момент времени сделает компромиссы доступными или согласованными перед лицом Разделы (но никогда не оба). Итак, по индукции Couchbase это CP. Фактически это следует из их стратегии репликации за vBuckets, которая является либо a) 1: n master / slave (s), либо b) 1..n на основе цепей, чем, скажем, система, смоделированная после Dynamo (AP).
Грег Берд,
9
На сегодняшний день есть очень важное дополнение к этой статье: Couchbase SyncGateway. По сути, это часть, которая переносит репликацию CouchDB в Couchbase на уровне, совместимом с API, так что CouchDB можно реплицировать с Couchbase через SyncGateway. Что очень важно с точки зрения Couchbase Lite, который может (за исключением некоторых угловых случаев) плавно переключаться с синхронизации с CouchDB на синхронизацию с SyncGateway
Леонид Усов
39

Это разные, но похожие программы. Я сделал ремикс из верхнего ответа в картинку, которая может помочь прояснить «разницу», а также общие вещи:

другой ответ, связанный выше, является расширенным описанием этого изображения

Комментарий от Мэтта Ингентрона добавляет к этому:

Чтобы добавить контекст / исправления: основатели NorthScale - Стив Йен и Дастин Саллингс. Я присоединился к ним вскоре после основания. Кроме того, Дэмиен не присоединился к Couchbase, он был частью CouchIO / Couch One до слияния. Цитирую забавный исторический источник: https://youtube.com/watch?v=aZ_JOnU8tkI

Йерун
источник
4
Это супер полезная инфо-графика!
Зак Смит
3
Чтобы добавить контекст / исправления: основатели NorthScale - Стив Йен и Дастин Саллингс. Я присоединился к ним вскоре после основания. Кроме того, Дэмиен не присоединился к Couchbase, он был частью CouchIO / Couch One до слияния. Цитирую забавный исторический источник: youtube.com/watch?v=aZ_JOnU8tkI
Мэтт Ингентрон,
1
@MattIngenthron Thx для обновления. Я добавил ваше замечание в ответ, если найду время, чтобы соответствующим образом настроить блок-схему.
Йерун,
1

Я думаю, что CouchBase, кажется, воспринимается как «корпоративная» альтернатива CouchDB. Что в некотором смысле кажется правдой. Помимо отсутствия возможности прикреплять файлы к записям (документам) и «готовым» конечным точкам REST по сравнению с CouchDB, CouchBase имеет язык, похожий на sql, то есть N1QL (иногда произносится как никель). Это одна из причин, почему я не очень люблю / не рекомендую использовать термин «NoSQL». Мне лично нравится термин «нереляционный».

Парик Чудасма
источник