Różnica między CouchDB i Couchbase

270

Czy są jakieś istotne różnice między CouchDB i Couchbase .

yojimbo87
źródło
45
Mylisz się co do nazw? Ja też, więc zacząłem od remiksowania informacji o nazewnictwie z tej górnej odpowiedzi do wizualizacji historii nazewnictwa , co powinno pomóc w zrozumieniu każdej z tych odpowiedzi.
Jeroen,
@Jeroen To niesamowita wizualizacja. Czy należy go edytować w tej najważniejszej odpowiedzi?
shoover
@shoover Thx, cieszę się, że pomogło. Nie jestem w stanie ocenić, czy jest wystarczająco dokładny, ale jeśli rsp (główny autor tej odpowiedzi) / społeczność uzna to za warte, możesz to uwzględnić na licencji SO.
Jeroen,

Odpowiedzi:

555

Myślę, że istnieją pewne istotne różnice między CouchDB i Couchbase Server, na które należy zwrócić uwagę.

Nie będę pisać o zaletach przejścia z CouchDB na serwer Couchbase, ponieważ są one opisane prawie wszędzie (patrz Przyszłość CouchDB Damiena Katza lub Couchbase vs. Apache CouchDB przez Couchbase). Zamiast tego spróbuję wyliczyć funkcje CouchDB, których nie znajdziesz na serwerze Couchbase .

Wszystkie nazwy związane z CouchDB i Couchbase mogą być bardzo mylące, więc zaktualizowałem tę odpowiedź, aby zacząć od krótkiego wyjaśnienia najważniejszych.

Nazwy i zamieszanie

Istnieje CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... wszystkie różne, a jednak powiązane w sposób wcale nie oczywisty z samych nazw.

Najpierw była CouchDB, baza danych stworzona przez Damiena Katza, byłego programistę IBM. Jego oficjalna nazwa została zmieniona na Apache CouchDB po tym, jak stał się projektem Apache.

Firma o nazwie CouchIO została założona do pracy na Apache CouchDB, a później zmieniła nazwę na CouchOne (przez „swoją nazwę” mam na myśli nazwę firmy - nie nazwę bazy danych).

CouchOne (wcześniej CouchIO) połączył się z Membase (wcześniej NorthScale), tworząc nową spółkę o nazwie Couchbase. Membase (firma) opracował Membase (produkt o tej samej nazwie). Membase został stworzony przez kilku liderów projektu Memcached i wykorzystał protokół Memcached. Po połączeniu CouchOne i Membase, Couchbase kontynuował rozwój oprogramowania Membase, a później zmienił nazwę na Couchbase Server.

Dzisiaj myślę, że większość ludzi wierzy, że Couchbase Server to nowa wersja CouchDB, ale w rzeczywistości jest to nowa wersja Membase. Nadal używa protokołu Memcached, a nie RESTful API CouchDB. Tymczasem CouchDB jest nadal CouchDB, aktywnie utrzymywany i rozwijany jako projekt Apache.

Teraz istotne różnice:

Koncesjonowanie

Serwer Couchbase nie jest oprogramowaniem typu open source / wolnym . Istnieją dwie wersje: Community Edition (darmowa, ale bez najnowszych poprawek błędów) i Enterprise Edition (istnieją ograniczenia dotyczące użytkowania, zasady poufności, audyty Couchbase Inc., które „będą przeprowadzane w regularnych godzinach pracy w obiektach Licencjobiorcy” i inne typowe warunki do zastrzeżonego oprogramowania, które wiele osób może uznać za niedopuszczalne).

CouchDB to projekt typu open source / wolne oprogramowanie (bez żadnych zobowiązań) Fundacji Apache Software Foundation, wydany na licencji Apache License, wersja 2.0 (zgodny z DFSG, zatwierdzony przez FSF, zatwierdzony przez OSI, zgodny z GPL, nie podlegający copyleft , przyjazny komercyjnie).

Filozofia

Nigdy nie widziałem tego bezpośrednio wskazanego, ale może to być rzeczywiście najważniejsza różnica między tymi dwiema bazami danych, ponieważ dotyczy ona głęboko filozofii modeli przetwarzania rozproszonego, a nie tylko niektórych funkcji, interfejsów API lub licencji. CouchDB i Couchbase Server całkowicie różnią się filozofią budowania systemów rozproszonych i baz danych.

Zgodnie z twierdzeniem CAP rozproszona baza danych nie może jednocześnie zapewniać spójności, dostępności i tolerancji partycji.

CouchDB jest systemem typu AP (zapewnia dostępność i tolerancję podziału ).

Serwer Couchbase to JEDEN system typu CP (według Wikipedii ) LUB system typu CA (zgodnie z aktualizacją techniczną Couchbase ) - KTÓRE Z NICH SĄ PRAWIDŁOWE? PROSZĘ SKOMENTUJ.

cechy

Oto lista funkcji CouchDB, które nie są obsługiwane przez serwer Couchbase:

  • brak RESTful API (tylko dla widoków, nie dla operacji CRUD)
  • brak kanału _changes
  • brak replikacji peer-to-peer
  • bez aplikacji CouchApps
  • brak Futon (dostępny jest inny interfejs administracyjny)
  • brak identyfikatorów dokumentów
  • brak pojęcia baz danych (są tylko segmenty)
  • brak replikacji między bazą danych CouchDB a serwerem Couchbase
  • bez wyraźnych załączników (musisz przechowywać dodatkowe pliki jako nowe pary klucz / wartość)
  • brak interfejsu API HTTP do wszystkiego (musisz użyć zestawów SDK serwera Couchbase lub jednej z eksperymentalnych bibliotek klienta w Couchbase Develop, więc nie eksperymentuj z curl i wget )
  • brak interfejsu API CouchDB ( zamiast tego używa interfejsu API Memcached )
  • nie możesz zrobić wszystkiego z poziomu przeglądarki (musisz napisać aplikację po stronie serwera)
  • nie jest możliwa dwupoziomowa architektura dla aplikacji internetowych (musisz napisać aplikację po stronie serwera, aby siedzieć między przeglądarką a bazą danych, tak jak w relacyjnych bazach danych)
  • brak ostatecznej spójności
  • nie do końca open-source / wolne oprogramowanie
  • nie drop-in zamiennik dla CouchDB (wydaje się zastępować drop-in zamiast Memcached)

Te cechy CouchDB mogą być dla Ciebie ważne lub nie, więc to, czy ich brak jest wadą, czy nie, jest ściśle subiektywne, ale uważam, że decyzja o przejściu z CouchDB na Couchbase Server powinna być oparta na tych różnicach i twoja zależność od tych funkcji w twoich bieżących wdrożeniach CouchDB.

Na przykład, jeśli zainteresowałeś się CouchDB po obejrzeniu kanału zmian CouchDB CouchDB, karmisz rozmowę NodeCamp Mikeala Rogersa lub jeden z doskonałych samouczków CouchApp J. Chrisa Andersona, musisz zdać sobie sprawę, że jeśli chcesz przejść na serwer Couchbase będą musieli zapomnieć o prawie wszystkim, o czym rozmawiali.

Z tego powodu powiedziałbym, że serwer Couchbase wygląda jak ewolucja Memcached i Membase (nie ewolucja CouchDB) i jako taki wygląda świetny produkt, jeśli obecnie używasz Memchached lub Membase. Jeśli używasz CouchDB w najbardziej podstawowy sposób, możesz rozważyć użycie serwera Couchbase do tych samych rzeczy i może on lub nie działać lepiej (jeśli nie przeszkadzają ci ograniczenia licencji). Ale jeśli faktycznie korzystasz z funkcji unikalnych w CouchDB (takich jak plik zmian, CouchApps, architektura dwuwarstwowa, replikacja peer-to-peer itp.), Możesz zapomnieć o tych funkcjach lub pozostać przy CouchDB. W każdym razie zapoznaj się z samouczkiem Migracja do Couchbase dla użytkowników CouchDB, zanim pomyślisz o zmianie.

Ludzie często mają złe wrażenie (być może po przeczytaniu rzeczy takich jak „Jaka przyszłość CouchDB? To Couchbase.” ), Że CouchDB jest w jakiś sposób przestarzały przez serwer Couchbase lub że jest to stara, starsza wersja Couchbase. Tymczasem CouchDB jest aktywnie utrzymywanym projektem open source, serwer Couchbase to całkowicie odrębny projekt (jest to nowszy projekt, ale nie jest to nowsza wersja CouchDB - nie są nawet kompatybilne), a ponieważ nawet nowe narzędzia do tworzenia CouchApps nadal zachowują rozwijane (np. patrz projekt Kanso ), to CouchDB nigdzie się nie wybiera.

Mam nadzieję, że to wyjaśni zamieszanie. Proszę mnie poprawić, jeśli coś jest w błędzie.

Aktualizacja:

Serwer Couchbase to w rzeczywistości nowa nazwa serwera Membase (nazwa serwera została zmieniona na serwer Couchbase gdzieś w pobliżu wersji 1.8). Zobacz przegląd Couchbase 2011 Rok :

Niestety zdezorientowaliśmy wielu naszych potencjalnych użytkowników. Oprócz Membase Server i naszych nowych produktów mobilnych zaoferowaliśmy także pojedynczy serwer Couchbase, który był pakietową „dystrybucją” Apache CouchDB. Ponadto zaczęliśmy publikować wersje deweloperskie Couchbase Server 2.0, który włączył technologię CouchDB do Membase Server - ale ten produkt nie był kompatybilny z pojedynczym serwerem Couchbase (lub CouchDB). [...] Serwer Membase zostanie przemianowany na Couchbase Server 1.8 w następnej wersji w styczniu - mały krok, który po prostu łagodzi zamieszanie związane z „nazwą”. Zgodnie z planem od początku, wersja Couchbase Server 2.0 (obecnie w wersji Developer Preview 3) doda funkcjonalność indeksu i zapytań. Podczas gdy Couchbase Server 2.0 będzie zawierać istotną technologię z projektu CouchDB,nie będzie kompatybilny w górę z CouchDB i nie powinien być postrzegany jako „wersja CouchDB”. [podkreślenie dodane]

Zobacz też:

rsp
źródło
69
Brawo. Cieszę się, że coś faktycznie wyjaśnia tę stronę (wszystkie istniejące porównania, jak wymieniono, mają zauważalne odchylenie od Couchbase).
Stuart P. Bentley,
6
@WalterTross: Właściwie to nie używanie interfejsu API CouchDB, brak RESTful i nie używanie HTTP to nie to samo. Na przykład Riak nie używa interfejsu API CouchDB, ale nadal używa interfejsu API RESTful. Ponadto może nie używać usługi REST, ale nadal używać protokołu HTTP (np. SOAP lub innej usługi sieci Web). Tutaj chciałem wyjaśnić, że serwer Couchbase nie tylko nie używa interfejsu API CouchDB, ale jego interfejs API nie jest w stanie RESTful i nawet nie używa HTTP.
rsp
24
Uważam to za odpowiedź. Dzięki.
skift
10
Jeśli chodzi o twoje pytanie „CP kontra CA”: w skrócie, nie można mieć systemu „CA”, chyba że mówisz o jednej maszynie. W sieci zawsze są partycje ( aphyr.com/posts/288-the-network-is-reliable ), a zatem system rozproszony w dowolnym momencie dokona kompromisu, aby był dostępny lub spójny w obliczu Partycje (ale nigdy oba). Tak więc przez indukcję Couchbase to CP. W rzeczywistości wynika to ze strategii replikacji stojącej za vBuckets, która jest albo a) 1: n master / slave (s) lub b) 1..n oparta na łańcuchu w porównaniu, powiedzmy, systemie wzorowanym na Dynamo (AP).
Greg Burd
9
Na dzień dzisiejszy istnieje bardzo ważny dodatek do tego artykułu: Couchbase SyncGateway. Jest to zasadniczo część, która przenosi replikację CouchDB do Couchbase na poziomie kompatybilnym z API, tak że CouchDB może być replikowany z Couchbase za pośrednictwem SyncGateway. Co jest ogromną sprawą z perspektywy Couchbase Lite, która może (z wyjątkiem niektórych narożnych przypadków) płynnie przełączać się z synchronizacji z CouchDB na synchronizację z SyncGateway
Leonid Usov
39

Są to różne, ale podobne programy. Zremiksowałem treść z górnej odpowiedzi na zdjęcie, które może pomóc wyjaśnić „różnicę”, a także typowe rzeczy:

druga odpowiedź podana powyżej to rozszerzony opis tego obrazu

Komentarz Matta Ingenthrona dodaje do tego:

Aby dodać kontekst / poprawki: założycielami NorthScale są Steve Yen i Dustin Sallings. Dołączyłem do nich wkrótce po założeniu. Ponadto Damien nie dołączył później do Couchbase, był częścią CouchIO / Couch One przed fuzją. Powołując się na zabawne, historyczne źródło: https://youtube.com/watch?v=aZ_JOnU8tkI

Jeroen
źródło
4
To bardzo pomocna grafika informacyjna!
Zach Smith,
3
Aby dodać kontekst / poprawki: założycielami NorthScale są Steve Yen i Dustin Sallings. Dołączyłem do nich wkrótce po założeniu. Ponadto Damien nie dołączył później do Couchbase, był częścią CouchIO / Couch One przed fuzją. Powołując się na zabawne, historyczne źródło: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron
1
@MattIngenthron Thx dla aktualizacji. Przeanalizowałem twoją uwagę w odpowiedzi, jeśli znajdę czas, mogę odpowiednio zmodyfikować schemat blokowy.
Jeroen
1

Myślę, że CouchBase wydaje się być postrzegana jako „korporacyjna” alternatywa CouchDB. Co w pewnym sensie wydaje się prawdą. Oprócz braku możliwości dołączania plików do rekordów (dokumentów) i „gotowych” punktów końcowych REST w porównaniu do CouchDB, CouchBase ma język podobny do SQL, tj. N1QL (czasami wymawiany jako Nickel). Jest to jeden z powodów, dla których tak naprawdę nie lubię / nie polecam używania terminu „NoSQL”. Osobiście podoba mi się termin „nierelacyjny”.

Parik Chudasma
źródło