Різниця між CouchDB та Couchbase


270

Чи є істотні відмінності між CouchDB та Couchbase .


45
Плутати з іменами? Так само було і я, тому я почав з перетворення інформації про іменування з цієї верхньої відповіді на візуалізацію історії імен , яка повинна допомогти зрозуміти будь-яку з цих відповідей.
Jeroen

@Jeroen Це дивовижна візуалізація. Чи слід це відредагувати у цій верхній відповіді?
шовер

@shoover Thx, радий, що це допомогло. Я не можу судити, чи достатньо точно, але якщо rsp (головний автор цієї відповіді) / спільнота вважає це гідним, тоді сміливо включайте його під ліцензію SO.
Jeroen

Відповіді:


555

Я думаю, що між CouchDB і Couchbase Server є деякі суттєві відмінності, на які потрібно звернути увагу.

Я не пишу про переваги переходу з CouchDB на Couchbase Server, тому що вони описані досить скрізь (див . Майбутнє 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 повністю відрізняються за своєю філософією побудови розподілених систем та баз даних.

Згідно теореми CAP неможливо, щоб розподілена база даних одночасно забезпечувала узгодженість, доступність та толерантність до розділів.

CouchDB є AP типу системи (забезпечує доступність і стійкість Partition ).

Couchbase Server - це система типу CP (згідно Вікіпедії ) АБО система типу CA (відповідно до технічного оновлення Couchbase ) - ЩО з них ПРАВИЛЬНО? ВИМОГАЙТЕ КОМЕНТАР.

Особливості

Це те, що я виявив список функцій CouchDB, які не підтримуються Couchbase Server:

  • немає API RESTful (лише для представлень даних, а не для операцій CRUD)
  • немає каналів змін
  • немає однорангової реплікації
  • немає CouchApps
  • немає Futon (доступний інший інтерфейс адміністрування)
  • немає ідентифікаторів документів
  • відсутність поняття баз даних (є лише відра)
  • відсутність реплікації між базою даних CouchDB і Couchbase Server
  • немає явних вкладених файлів (ви повинні зберігати додаткові файли як нові пари ключів / значень)
  • немає HTTP API для всього (вам потрібно використовувати пакети SDK Couchbase Server або одну з бібліотек експериментальних клієнтів на Couchbase Developer, щоб не було експериментів з curl і wget )
  • немає API CouchDB (він замість цього використовує API Memcached )
  • ви не можете зробити все з браузера (вам потрібно написати серверну програму)
  • неможлива дворівнева архітектура веб-додатків (вам потрібно написати серверну програму, щоб сидіти між браузером та базою даних, як, наприклад, із реляційними базами даних)
  • відсутність можливої ​​послідовності
  • не зовсім відкрите / вільне програмне забезпечення
  • не заміна заміни CouchDB (здається, замість заміни для Memcached замість)

Ці особливості CouchDB можуть чи не можуть бути для вас важливими, тому відсутність їх є недоліком чи ні, є суто суб'єктивним, але я вважаю, що рішення про перехід від CouchDB до Couchbase Server чи ні має базуватися на цих відмінностях і ваша залежність від цих особливостей у ваших поточних розгортаннях CouchDB.

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

Через це я б сказав, що Couchbase Server виглядає як еволюція Memcached і Membase (а не еволюція CouchDB), і як такий він виглядає як чудовий продукт, якщо ви зараз використовуєте Memchached або Membase. Якщо ви використовуєте CouchDB найосновнішим способом, тоді ви можете розглянути можливість використання сервера Couchbase для одних і тих же речей, і це може, або може, не працювати краще (якщо ви не заперечуєте проти ліцензійних обмежень). Але якщо ви фактично використовуєте будь-які функції, унікальні в CouchDB (наприклад, канал змін, CouchApps, дворівнева архітектура, однорангова реплікація тощо), ви можете або забути про ці можливості, або залишитися з CouchDB. У будь-якому випадку переконайтеся, що читайте та розумієте підручник з переходу на Couchbase для користувачів CouchDB, перш ніж замислюватися про перемикання.

Люди часто отримують неправильне враження (можливо, читаючи речі на кшталт "Яке майбутнє CouchDB? Це Couchbase." ), Що CouchDB якимось чином застарів на сервері Couchbase або що це стара, застаріла версія Couchbase. Тим часом CouchDB - це активно підтримуваний проект з відкритим кодом, сервер Couchbase - це абсолютно окремий проект (це більш новий проект, але це не новіша версія CouchDB - вони навіть не сумісні) і оскільки навіть нові інструменти для створення CouchApps все ще зберігають розробляється (наприклад, див. проект Kanso ), тоді CouchDB не збирається нікуди скоро.

Я сподіваюся, що це прояснить плутанину. Будь ласка, виправте мене, якщо я тут ні на чому не помиляюся.

Оновлення:

Couchbase Server - це фактично нове ім’я для сервера Membase (сервер Membase був перейменований на 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". [наголос додано]

Дивитися також:


69
Браво. Радий побачити, що насправді пояснює цю сторону речей (усі існуючі порівняння, як ви перераховували, мають помітні зміщення Couchbase).
Стюарт П. Бентлі

6
@WalterTross: Насправді не використовувати CouchDB API, не бути RESTful і не використовувати HTTP - це не те саме. Наприклад, Riak не використовує API CouchDB, але він все ще використовує API RESTful. Крім того, він може не використовувати REST, але все ще використовувати HTTP (наприклад, SOAP або інший веб-сервіс). Тут я хотів уточнити, що сервер Couchbase не тільки не використовує API CouchDB, але його API не є RESTful і навіть не використовує HTTP взагалі.
rsp

24
Я вважаю це відповіддю. Дякую.
лижі

10
Щодо питання "CP vs CA": у двох словах, система "CA" неможлива, якщо ви не говорите про одну машину. У мережі завжди є розділи ( aphyr.com/posts/288-the-network-is-reliable ), і тому розподілена система в будь-який момент часу може робити компроміси як доступними, так і послідовними на тлі Перегородки (але ніколи обидва). Отже, за допомогою індукції Couchbase є CP. Насправді це випливає з їх стратегії реплікації позаду vBuckets, яка є або a) 1: n головним / рабом (ами), або b) 1..n ланцюгом на основі, скажімо, системи, змодельованої після "Динамо" (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". Мені особисто подобається термін "Нереляційний".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.