Arm1.ru

Отличия CouchDB от Couchbase

Перевод ответа на stackoverflow.com на вопрос об отличиях CouchDB от Couchbase.

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

Я не буду писать о преимуществах перехода с CouchDB на Couchbase Server, потому, что они хорошо описаны везде (см. The Future of CouchDB by Damien Katz или Couchbase vs. Apache CouchDB by Couchbase). Вместо этого я постараюсь перечислить фичи CouchDB, которые вы не найдёте в Couchbase Server.

Названия и путаница

Есть CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB... все разные и всё же связанные, очевидно, не только названиями.

Сначала была CouchDB, база данных, созданная Damien Katz, бывшим разработчиком 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 и не использует REST API от CouchDB. Между тем CouchDB это всё ещё CouchDB, активно поддерживаемая и развивающаяся как проект Apache.

Теперь об отличиях:

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

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

CouchDB это опенсорсное/свободное программное обеспечение (без обязательств), проект The Apache Software Foundation и распространяемое по лицензии Apache License, Version 2.0 (DFSG-compatible, FSF-approved, OSI-approved, GPL-compatible, non-copyleft, commercial-friendly).

Философия

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

Согласно теореме CAP (consistency, availability, partition tolerance) - невозможно для распределённой базы данных одновременно обеспечивать согласованность данных, доступность и устойчивость к разделению.

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

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

Особенности 

Вот, что я счёл необходимым указать из списка особенностей CouchDB, которые не поддерживаются в Couchbase Server:

  • нет REST API (только для видов, не для CRUD (create read update delete) операций);
  • нет _changes feed;
  • нет peer-to-peer репликации;
  • нет CouchApps;
  • нет Futon (доступен другой интерфейс для администрирования);
  • нет Document IDs (_design/ или _local/);
  • нет понятия база данных (только buckets);
  • нет репликации между базой данных CouchDB и Couchbase Server;
  • нет явных аттачей (вам придётся хранить прилагаемые файлы как новую пару ключ/значение);
  • нет HTTP API для всего подряд (вам нужно использовать Couchbase Server SDK или одну из экспериментальных клиентских библиотек в Couchbase Develop, так что никаких экспериментов с curl и wget);
  • нет CouchDB API (вместо него используется Memcached API);
  • вы не можете сделать всё, что хотите, из браузера (вам придётся писать серверное приложение);
  • двухуровневая архитектура для Web приложений невозможна (вам придётся писать серверное приложение, чтобы сидеть между браузером и базой данных, как с реляционными базами данных);
  • нет eventual consistency;
  • не целиком опенсорсное/свободное ПО;
  • не полноценная замена для CouchDB (похоже больше на замену для Memcached).

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

Например, если вас заинтересовала CouchDB после просмотра изменений в CouchDB на NodeCamp, о которых рассказывал Mikeal Rodgers или один из уроков CouchApp от J. Chris Anderson, то вам стоит осозновать, что если вы хотите перейти на Couchbase Server, то вам придётся забыть о довольно многом из того, о чём они рассказывали.

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

У людей часто складывается неверное впечатление (возможно после прочтения чего-то вроде "Какое будущее у CouchDB? Будущее это Couchbase"), что CouchDB как-то устарел по сравнению с Couchbase Server, или что это старая версия Couchbase. Тем временем CouchDB активно развивающийся open-source проект, Couchbase Server это совершенно отдельный проект (это более новый проект, но это не новая версия CouchDB - они даже не совместимы) и поскольку даже новые инструменты для создания CouchApps всё ещё продолжают разрабатываться (например, Kanso project), то CouchDB никуда не исчезнет в ближайшее время.

Я надеюсь, что это внесёт ясность. Пожалуйста, исправьте меня, если я где-то неправ.

Обновление:

Couchbase 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".

keyboard_return back