Unterschied zwischen CouchDB und Couchbase

269

Gibt es wesentliche Unterschiede zwischen CouchDB und Couchbase .

yojimbo87
quelle
45
Verwirrt über die Namen? Ich auch, also begann ich damit, die Namensinformationen aus dieser Top-Antwort in eine Visualisierung des Namensverlaufs zu mischen , die helfen sollte, jede dieser Antworten zu verstehen.
Jeroen
@Jeroen Das ist eine großartige Visualisierung. Sollte es in diese Top-Antwort bearbeitet werden?
Shoover
@shoover Thx, ich bin froh, dass es geholfen hat. Ich kann nicht genau beurteilen, ob es genau genug ist, aber wenn rsp (der Hauptautor dieser Antwort) / die Community es für würdig hält, können Sie es gerne in die SO-Lizenz aufnehmen.
Jeroen

Antworten:

555

Ich denke, es gibt einige wesentliche Unterschiede zwischen CouchDB und Couchbase Server, auf die hingewiesen werden muss.

Ich werde nicht über die Vorteile des Wechsels von CouchDB zum Couchbase-Server schreiben, da diese fast überall beschrieben werden (siehe Die Zukunft von CouchDB von Damien Katz oder Couchbase vs. Apache CouchDB von Couchbase). Stattdessen werde ich versuchen, Funktionen von CouchDB aufzulisten, die Sie auf dem Couchbase-Server nicht finden .

Alle Namen in Bezug auf CouchDB und Couchbase können sehr verwirrend sein. Daher habe ich diese Antwort aktualisiert, um mit einer kurzen Erläuterung der wichtigsten zu beginnen.

Namen und Verwirrung

Es gibt CouchDB, CouchIO, CouchOne, Couchbase, Couchbase-Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... alle unterschiedlich und doch auf eine Weise verwandt, die aus den Namen allein überhaupt nicht ersichtlich ist.

Zuerst gab es CouchDB, eine Datenbank, die von Damien Katz, einem ehemaligen IBM-Entwickler, erstellt wurde. Sein offizieller Name wurde in Apache CouchDB geändert, nachdem es ein Apache-Projekt wurde.

Eine Firma namens CouchIO wurde gegründet, um an Apache CouchDB zu arbeiten, und später ihren Namen in CouchOne geändert (mit "Name" meine ich den Firmennamen - nicht den Datenbanknamen).

CouchOne (ehemals CouchIO) fusionierte mit Membase (ehemals NorthScale) zu einer neuen Firma namens Couchbase. Membase (das Unternehmen) entwickelte Membase (ein gleichnamiges Produkt). Membase wurde von mehreren Leitern des Memcached-Projekts erstellt und verwendete das Memcached-Protokoll. Nach der Fusion von CouchOne und Membase setzte Couchbase die Entwicklung der Membase-Software fort und änderte später ihren Namen in Couchbase Server.

Heute denke ich, dass die meisten Leute glauben, dass Couchbase Server eine neue Version von CouchDB ist, aber es ist tatsächlich eine neue Version von Membase. Es wird weiterhin das Memcached-Protokoll und nicht die RESTful-API von CouchDB verwendet. In der Zwischenzeit ist CouchDB immer noch CouchDB, das als Apache-Projekt aktiv gepflegt und erweitert wird.

Nun zu den relevanten Unterschieden:

Lizenzierung

Der Couchbase Server ist keine vollständig Open Source / freie Software . Es gibt zwei Versionen: Community Edition (kostenlos, aber keine neuesten Fehlerkorrekturen) und Enterprise Edition (es gibt Nutzungsbeschränkungen, Vertraulichkeitsbestimmungen, Audits von Couchbase Inc., die "während der regulären Geschäftszeiten in den Einrichtungen des Lizenznehmers durchgeführt werden" und andere typische Bedingungen auf proprietäre Software, die viele Menschen möglicherweise für inakzeptabel halten).

CouchDB ist ein Open-Source- / freies Softwareprojekt (ohne Bedingungen) der Apache Software Foundation und wird unter der Apache-Lizenz Version 2.0 (DFSG-kompatibel, FSF-genehmigt, OSI-genehmigt, GPL-kompatibel, nicht kopyleft) veröffentlicht , kommerziell freundlich).

Philosophie

Ich habe noch nie direkt darauf hingewiesen, aber dies kann tatsächlich der wichtigste Unterschied zwischen diesen beiden Datenbanken sein, da es tief um die zugrunde liegende Philosophie verteilter Computermodelle geht und nicht nur um bestimmte Funktionen, APIs oder Lizenzen. CouchDB und der Couchbase Server unterscheiden sich völlig in ihrer Philosophie, verteilte Systeme und Datenbanken aufzubauen.

Nach dem CAP-Theorem ist es für eine verteilte Datenbank unmöglich, gleichzeitig Konsistenz, Verfügbarkeit und Partitionstoleranz bereitzustellen.

CouchDB ist ein AP- System (bietet Verfügbarkeit und Partitionstoleranz ).

Couchbase Server ist entweder ein CP- System (laut Wikipedia ) oder ein CA- System (gemäß Couchbase Technical Update ) - WELCHES IST RICHTIG? BITTE KOMMENTIEREN.

Eigenschaften

Ich habe festgestellt, dass dies eine Liste von CouchDB-Funktionen ist, die vom Couchbase-Server nicht unterstützt werden:

  • keine RESTful- API (nur für Ansichten, nicht für CRUD-Operationen)
  • Kein Änderungsvorschub
  • Keine Peer-to-Peer-Replikation
  • keine CouchApps
  • kein Futon (es ist eine andere Administrationsoberfläche verfügbar)
  • Keine Dokument-IDs
  • Keine Vorstellung von Datenbanken (es gibt nur Eimer)
  • Keine Replikation zwischen einer CouchDB-Datenbank und Couchbase Server
  • Keine expliziten Anhänge (Sie müssen zusätzliche Dateien als neue Schlüssel / Wert-Paare speichern)
  • Keine HTTP-API für alles (Sie müssen die Couchbase Server-SDKs oder eine der experimentellen Client-Bibliotheken bei Couchbase Develop verwenden, also keine Experimente mit Curl und Wget ).
  • keine CouchDB-API (verwendet stattdessen die Memcached- API)
  • Sie können nicht alles über den Browser ausführen (Sie müssen eine serverseitige Anwendung schreiben).
  • Es ist keine zweistufige Architektur für Webanwendungen möglich (Sie müssen eine serverseitige Anwendung schreiben, um zwischen dem Browser und der Datenbank zu sitzen, wie bei relationalen Datenbanken).
  • keine eventuelle Konsistenz
  • nicht ganz Open Source / freie Software
  • kein Drop-In-Ersatz für CouchDB (scheint stattdessen ein Drop-In-Ersatz für Memcached zu sein)

Diese Funktionen von CouchDB können für Sie wichtig sein oder auch nicht. Ob das Fehlen von Funktionen ein Nachteil ist oder nicht, ist streng subjektiv. Ich denke jedoch, dass die Entscheidung, ob Sie von CouchDB zu Couchbase Server wechseln oder nicht, auf diesen Unterschieden beruhen sollte Ihre Abhängigkeit von diesen Funktionen in Ihren aktuellen CouchDB-Bereitstellungen.

Wenn Sie sich beispielsweise für CouchDB interessiert haben, nachdem Sie den NodeCamp-Vortrag von The CouchDB-Änderungen von Mikeal Rogers oder eines der großartigen CouchApp-Tutorials von J. Chris Anderson gesehen haben, müssen Sie sich darüber im Klaren sein, dass Sie zum Couchbase-Server wechseln möchten Ich werde so ziemlich alles vergessen müssen, worüber sie gesprochen haben.

Aus diesem Grund würde ich sagen, dass Couchbase Server wie eine Weiterentwicklung von Memcached und Membase (keine Weiterentwicklung von CouchDB) aussieht und als solches wie ein großartiges Produkt aussieht, wenn Sie derzeit Memchached oder Membase verwenden. Wenn Sie CouchDB auf die grundlegendste Weise verwenden, können Sie in Betracht ziehen, den Couchbase-Server für die gleichen Zwecke zu verwenden, und er kann eine bessere Leistung erzielen oder auch nicht (wenn Sie die Lizenzbeschränkungen nicht beachten). Wenn Sie jedoch tatsächlich eine der in CouchDB einzigartigen Funktionen verwenden (z. B. den Änderungsfeed, CouchApps, zweistufige Architektur, Peer-to-Peer-Replikation usw.), können Sie diese Funktionen entweder vergessen oder bei CouchDB bleiben. Lesen und verstehen Sie in jedem Fall das Lernprogramm zur Migration zu Couchbase für CouchDB-Benutzer, bevor Sie über einen Wechsel nachdenken.

Menschen haben oft den falschen Eindruck (vielleicht nachdem sie Dinge wie "Was ist die Zukunft von CouchDB? Es ist Couchbase." Gelesen ), dass CouchDB vom Couchbase-Server irgendwie veraltet ist oder dass es sich um eine alte, ältere Version von Couchbase handelt. Während CouchDB ein aktiv gepflegtes Open-Source-Projekt ist, ist Couchbase Server ein völlig separates Projekt (es ist ein neueres Projekt, aber es ist keine neuere Version von CouchDB - sie sind nicht einmal kompatibel) und da auch neue Tools zum Erstellen von CouchApps noch erhalten sind Wenn CouchDB entwickelt wird (siehe z. B. das Kanso- Projekt), wird es nicht bald irgendwohin gehen.

Ich hoffe, es klärt die Verwirrung. Bitte korrigieren Sie mich, wenn ich hier etwas falsch mache.

Aktualisieren:

Couchbase Server ist eigentlich ein neuer Name für den Membase Server (der Membase Server wurde irgendwo in Version 1.8 in Couchbase Server umbenannt). Siehe Couchbase 2011 Jahresrückblick :

Leider haben wir viele unserer potenziellen Benutzer verwirrt. Neben Membase Server und unseren neuen mobilen Produkten haben wir auch Couchbase Single Server angeboten, eine verpackte „Distribution“ von Apache CouchDB. Darüber hinaus haben wir begonnen, Entwicklervorschauen von Couchbase Server 2.0 zu veröffentlichen, in denen die CouchDB-Technologie in Membase Server integriert war. Dieses Produkt war jedoch nicht mit Couchbase Single Server (oder CouchDB) kompatibel. [...] Membase Server wird bei seiner nächsten Veröffentlichung im Januar in Couchbase Server 1.8 umbenannt - ein winziger Schritt, der die Verwirrung um den Namen einfach lindert. Wie von Anfang an geplant, wird die Version Couchbase Server 2.0 (derzeit in Developer Preview 3) Index- und Abfragefunktionen hinzufügen. Während Couchbase Server 2.0 wesentliche Technologien aus dem CouchDB-Projekt enthalten wird,Es ist nicht aufwärtskompatibel mit CouchDB und sollte nicht als "Version von CouchDB" angesehen werden. [Betonung hinzugefügt]

Siehe auch:

rsp
quelle
69
Bravo. Ich bin froh zu sehen, dass etwas diese Seite der Dinge tatsächlich erklärt (alle vorhandenen Vergleiche, wie Sie aufgelistet haben, weisen eine merkliche Couchbase-Tendenz auf).
Stuart P. Bentley
6
@WalterTross: Eigentlich ist es nicht genau dasselbe, die CouchDB-API nicht zu verwenden, nicht RESTful zu sein und kein HTTP zu verwenden. Zum Beispiel verwendet Riak keine CouchDB-API, aber dennoch eine RESTful-API. Außerdem wird möglicherweise kein REST verwendet, es wird jedoch weiterhin HTTP verwendet (z. B. SOAP oder ein anderer Webdienst). Hier wollte ich klarstellen, dass der Couchbase-Server nicht nur nicht die CouchDB-API verwendet, sondern dass seine API nicht RESTful ist und überhaupt kein HTTP verwendet.
rsp
24
Ich halte dies für die Antwort. Vielen Dank.
Skift
10
In Bezug auf Ihre Frage "CP vs CA": Kurz gesagt, es ist unmöglich, ein "CA" -System zu haben, wenn Sie nicht über eine einzelne Maschine sprechen. Es gibt immer Partitionen im Netzwerk ( aphyr.com/posts/288-the-network-is-reliable ), sodass ein verteiltes System zu jedem Zeitpunkt Kompromisse eingeht , die entweder verfügbar oder konsistent sind Partitionen (aber niemals beides). Durch Induktion ist Couchbase also CP. Tatsächlich ergibt sich dies aus ihrer Replikationsstrategie hinter vBuckets, die entweder a) 1: n Master / Slave (s) oder b) 1..n kettenbasiert ist, im Vergleich zu beispielsweise einem nach Dynamo (AP) modellierten System.
Greg Burd
9
Ab heute gibt es eine sehr wichtige Ergänzung zu diesem Artikel: Couchbase SyncGateway. Dies ist im Wesentlichen ein Teil, der die CouchDB-Replikation auf einer API-kompatiblen Ebene auf die Couchbase bringt, sodass CouchDB über das SyncGateway mit Couchbase repliziert werden kann. Aus Sicht von Couchbase Lite ist dies eine große Sache, die (mit Ausnahme einiger Eckfälle) nahtlos von der Synchronisierung mit CouchDB zur Synchronisierung mit SyncGateway wechseln kann
Leonid Usov
39

Sie sind verschiedene, aber ähnliche Software. Ich habe den Inhalt aus der oberen Antwort in ein Bild umgewandelt, das helfen könnte, den "Unterschied" sowie die allgemeinen Dinge zu verdeutlichen:

Die andere Antwort, die oben verlinkt ist, ist eine erweiterte Beschreibung dieses Bildes

Ein Kommentar von Matt Ingenthron fügt hinzu:

Um einige Kontexte / Korrekturen hinzuzufügen: Die Gründer von NorthScale sind Steve Yen und Dustin Sallings. Ich bin kurz nach der Gründung zu ihnen gekommen. Außerdem trat Damien später nicht Couchbase bei, sondern war vor der Fusion Teil von CouchIO / Couch One. Unter Berufung auf eine unterhaltsame, historische Quelle: https://youtube.com/watch?v=aZ_JOnU8tkI

Jeroen
quelle
4
Das ist eine super hilfreiche Infografik!
Zach Smith
3
Um einige Kontexte / Korrekturen hinzuzufügen: Die Gründer von NorthScale sind Steve Yen und Dustin Sallings. Ich bin kurz nach der Gründung zu ihnen gekommen. Außerdem trat Damien später nicht Couchbase bei, sondern war vor der Fusion Teil von CouchIO / Couch One. Unter Berufung auf eine lustige, historische Quelle: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron
1
@ MattIngenthron Danke für das Update. Ich habe Ihre Bemerkung in der Antwort übermittelt, wenn ich die Zeit finde, könnte ich das Flussdiagramm entsprechend anpassen.
Jeroen
1

Ich denke, CouchBase scheint als "Enterprise" -Alternative von CouchDB wahrgenommen zu werden. Was in gewisser Weise wahr zu sein scheint. Abgesehen von der mangelnden Möglichkeit, Dateien an Datensätze (Dokumente) und sofort einsatzbereite REST-Endpunkte anzuhängen, verfügt CouchBase im Vergleich zu CouchDB über eine SQL-ähnliche Sprache, dh N1QL (manchmal als Nickel ausgesprochen). Dies ist einer der Gründe, warum ich den Begriff 'NoSQL' nicht wirklich mag / empfehle. Ich persönlich mag den Begriff "nicht relational".

Parik Chudasma
quelle