Differenza tra CouchDB e Couchbase


270

Ci sono differenze sostanziali tra CouchDB e Couchbase .


45
Confuso sui nomi? Anch'io, così ho iniziato remixando le informazioni di denominazione da questa risposta principale in una visualizzazione della cronologia dei nomi , che dovrebbe aiutare a comprendere una di queste risposte.
Jeroen,

@Jeroen È una visualizzazione fantastica. Dovrebbe essere modificato in quella risposta principale?
passaggio

@shoover Thx, sono contento che abbia aiutato.Non posso giudicare se è abbastanza accurato, ma se rsp (l'autore principale di quella risposta) / la community lo ritiene degno, sentiti libero di includerlo sotto la licenza SO.
Jeroen,

Risposte:


555

Penso che ci siano alcune differenze essenziali tra CouchDB e Couchbase Server che devono essere evidenziate.

Non scriverò sui vantaggi del passaggio da CouchDB a Couchbase Server perché sono descritti praticamente ovunque (vedi The Future of CouchDB di Damien Katz o Couchbase vs. Apache CouchDB di Couchbase). Cercherò invece di enumerare le funzionalità di CouchDB che non troverai nel server Couchbase .

Tutti i nomi relativi a CouchDB e Couchbase possono essere davvero confusi, quindi ho aggiornato questa risposta, per iniziare con una breve spiegazione di quelli più importanti.

Nomi e confusione

Esistono CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... tutti diversi e tuttavia correlati in un modo per nulla evidente dai soli nomi.

Innanzitutto, c'era CouchDB, un database creato da Damien Katz, un ex sviluppatore IBM. Il suo nome ufficiale è stato cambiato in Apache CouchDB dopo essere diventato un progetto Apache.

Una società di nome CouchIO è stata fondata per lavorare su Apache CouchDB e in seguito ha cambiato il suo nome in CouchOne (per "nome" intendo il nome della società, non il nome del database).

CouchOne (precedentemente CouchIO) si fuse con Membase (precedentemente NorthScale) per formare una nuova società chiamata Couchbase. Membase (la società) ha sviluppato Membase (un prodotto con lo stesso nome). L'appartenenza è stata creata da diversi leader del progetto Memcached e ha utilizzato il protocollo Memcached. Dopo la fusione di CouchOne e Membase, Couchbase ha continuato lo sviluppo del software Membase e in seguito ha cambiato il suo nome in Couchbase Server.

Oggi penso che molte persone credano che Couchbase Server sia una nuova versione di CouchDB, ma in realtà è una nuova versione di Membase. Utilizza ancora il protocollo Memcached e non l'API RESTful di CouchDB. Nel frattempo, CouchDB è ancora CouchDB, mantenuto attivamente e migliorato come progetto Apache.

Ora alle differenze rilevanti:

Licensing

Couchbase Server non è interamente software open source / gratuito . Esistono due versioni: Community Edition (gratuita ma nessuna ultima correzione di bug) ed Enterprise Edition (ci sono restrizioni sull'uso, disposizioni sulla riservatezza, audit di Couchbase Inc. che "saranno condotti durante il normale orario di lavoro presso le strutture del Licenziatario" e altri termini tipici al software proprietario che molte persone potrebbero ritenere inaccettabile).

CouchDB è un progetto software open source / gratuito (senza stringhe allegate) di The Apache Software Foundation ed è rilasciato sotto licenza Apache, versione 2.0 (compatibile DFSG, approvato FSF, approvato OSI, compatibile GPL, non copyleft , commerciale).

Filosofia

Non l'ho mai visto sottolineato direttamente, ma questa potrebbe essere in realtà la differenza più importante tra quei due database perché si basa profondamente sulla filosofia di base dei modelli di calcolo distribuito e non solo su determinate funzionalità, API o licenze. CouchDB e Couchbase Server differiscono completamente nella loro filosofia di costruzione di sistemi e database distribuiti.

Secondo il teorema CAP è impossibile per un database distribuito fornire simultaneamente coerenza, disponibilità e tolleranza della partizione.

CouchDB è un sistema di tipo AP (fornisce tolleranza di disponibilità e partizione ).

Couchbase Server È QUALSIASI un sistema di tipo CP (secondo Wikipedia ) O un sistema di tipo CA (secondo l'aggiornamento tecnico Couchbase ) - QUALE DI QUESTI È CORRETTO? PER FAVORE, COMMENTA.

Caratteristiche

Questo è quello che ho trovato essere un elenco di funzionalità di CouchDB che non sono supportate dal server Couchbase:

  • nessuna API RESTful (solo per viste, non per operazioni CRUD)
  • nessun feed _changes
  • nessuna replica peer-to-peer
  • no CouchApps
  • no Futon (è disponibile un'interfaccia di amministrazione diversa)
  • nessun ID documento
  • nessuna nozione di database (ci sono solo secchi)
  • nessuna replica tra un database CouchDB e Couchbase Server
  • nessun allegato esplicito (devi archiviare file aggiuntivi come nuove coppie chiave / valore)
  • nessuna API HTTP per tutto (è necessario utilizzare gli SDK di Couchbase Server o una delle librerie di client sperimentali di Couchbase Develop, quindi nessun esperimento con curl e wget )
  • nessuna API CouchDB (utilizza invece l'API Memcached )
  • non puoi fare tutto dal browser (devi scrivere un'applicazione sul lato server)
  • non è possibile un'architettura a due livelli per le app Web (è necessario scrivere un'applicazione sul lato server per sedersi tra il browser e il database, come con i database relazionali)
  • nessuna consistenza finale
  • software non interamente open source / gratuito
  • non una sostituzione drop-in per CouchDB (sembra invece una sostituzione drop-in per Memcached)

Queste funzionalità di CouchDB possono essere o meno importanti per te, quindi se la loro mancanza è uno svantaggio o meno è strettamente soggettiva, ma penso che la decisione di passare da CouchDB a Couchbase Server o meno debba essere basata su tali differenze e la tua dipendenza da quelle funzionalità nelle tue attuali distribuzioni CouchDB.

Ad esempio, se ti sei interessato a CouchDB dopo aver visto le modifiche di CouchDB al feed NodeCamp di Mikeal Rogers o uno dei fantastici tutorial di CouchApp di J. Chris Anderson, devi capire che se vuoi passare al Couchbase Server allora dovrà dimenticare praticamente tutto ciò di cui stavano parlando.

Per questo motivo, direi che Couchbase Server sembra un'evoluzione di Memcached e Membase (non un'evoluzione di CouchDB) e come tale sembra un ottimo prodotto se stai attualmente utilizzando Memchached o Membase. Se si utilizza CouchDB nel modo più semplice, è possibile prendere in considerazione l'utilizzo del server Couchbase per le stesse cose e potrebbe funzionare o meno (se non si considerano le restrizioni della licenza). Ma se stai effettivamente utilizzando una delle funzionalità uniche di CouchDB (come feed delle modifiche, CouchApps, architettura a due livelli, replica peer-to-peer ecc.), Puoi dimenticare quelle funzionalità o rimanere con CouchDB. In ogni caso, assicurati di leggere e comprendere l' esercitazione Migrazione a Couchbase per utenti di CouchDB prima di pensare al passaggio.

Le persone spesso hanno l'impressione sbagliata (forse dopo aver letto cose come "Qual è il futuro di CouchDB? È Couchbase" ) che CouchDB è in qualche modo obsoleto dal server Couchbase o che è una vecchia versione legacy di Couchbase. Nel frattempo CouchDB è un progetto open source attivamente gestito, il server Couchbase è un progetto completamente separato (è un progetto più recente ma non è una versione più recente di CouchDB - non sono nemmeno compatibili) e poiché anche i nuovi strumenti per la creazione di CouchApp continuano a in fase di sviluppo (es. vedere il progetto Kanso ), CouchDB non andrà presto da nessuna parte.

Spero che chiarisca la confusione. Per favore, correggimi se sbaglio su qualcosa qui.

Aggiornare:

Couchbase Server è in realtà un nuovo nome per il server di appartenenza (il server di appartenenza è stato rinominato in Couchbase Server da qualche parte intorno alla versione 1.8). Vedi Couchbase 2011 anno in rassegna :

Sfortunatamente, abbiamo confuso il controllo di molti dei nostri potenziali utenti. Oltre a Membase Server e ai nostri nuovi prodotti mobili, abbiamo anche offerto Couchbase Single Server che era una "distribuzione" in pacchetto di Apache CouchDB. Inoltre, abbiamo iniziato a pubblicare le anteprime degli sviluppatori di Couchbase Server 2.0, che incorporava la tecnologia CouchDB in Membase Server, ma questo prodotto non era compatibile con Couchbase Single Server (o CouchDB). [...] Membase Server verrà rinominato Couchbase Server 1.8 alla sua prossima versione a gennaio, un piccolo passo che allevia semplicemente la confusione del "nome". Come previsto dall'inizio, la versione 2.0 di Couchbase Server (attualmente in Developer Preview 3) aggiungerà funzionalità di indice e query. Mentre Couchbase Server 2.0 incorporerà una sostanziale tecnologia del progetto CouchDB,non sarà compatibile verso l'alto con CouchDB e non dovrebbe essere visto come una "versione di CouchDB". [enfasi aggiunta]

Guarda anche:


69
Bravo. Sono contento di vedere qualcosa che in realtà spiega questo lato delle cose (tutti i confronti esistenti, come hai elencato, hanno un evidente pregiudizio Couchbase).
Stuart P. Bentley

6
@WalterTross: in realtà non usare l'API CouchDB, non essere RESTful e non usare HTTP non sono esattamente le stesse cose. Ad esempio Riak non utilizza l'API CouchDB ma utilizza comunque un'API RESTful. Inoltre, potrebbe non utilizzare REST ma comunque utilizzare HTTP (ad es. SOAP o altri servizi Web). Qui volevo chiarire che il server Couchbase non solo non utilizza l'API CouchDB, ma la sua API non è RESTful e non usa nemmeno HTTP.
rsp

24
Ritengo che questa sia la risposta. Grazie.
skift

10
Per quanto riguarda la domanda "CP vs CA": in poche parole, è impossibile avere un sistema "CA" a meno che non si parli di una singola macchina. Ci sono sempre partizioni nella rete ( aphyr.com/posts/288-the-network-is-reliable ) e quindi un sistema distribuito, in un dato momento, renderà i compromessi disponibili o coerenti di fronte a Partizioni (ma mai entrambe). Quindi, per induzione Couchbase è CP. In effetti ciò deriva dalla loro strategia di replica dietro vBuckets che è o) 1: n master / slave (s) oppure b) 1..n basato su una catena rispetto a un sistema modellato sulla Dinamo (AP).
Greg Burd,

9
Ad oggi, c'è un'aggiunta molto importante a questo articolo: Couchbase SyncGateway. Questa è essenzialmente una parte che porta la replica di CouchDB su Couchbase a un livello compatibile con API, in modo tale che CouchDB possa essere replicato con Couchbase tramite SyncGateway. Il che è un grosso problema dal punto di vista di Couchbase Lite, che può (tranne alcuni casi angolari) passare dalla sincronizzazione con CouchDB alla sincronizzazione con SyncGateway
Leonid Usov,

39

Sono software diversi ma simili. Ho remixato il contenuto della risposta principale in un'immagine che potrebbe aiutare a chiarire la "differenza" e le cose comuni:

l'altra risposta collegata sopra è una descrizione estesa di questa immagine

Un commento di Matt Ingenthron aggiunge a questo:

Per aggiungere alcuni contesti / correzioni: i fondatori di NorthScale sono Steve Yen e Dustin Sallings. Mi sono unito a loro poco dopo la fondazione. Inoltre, Damien non è poi entrato a far parte di Couchbase, ha fatto parte di CouchIO / Couch One prima della fusione. Citando una fonte storica divertente: https://youtube.com/watch?v=aZ_JOnU8tkI


4
Questa è una info-grafica super utile!
Zach Smith,

3
Per aggiungere alcuni contesti / correzioni: i fondatori di NorthScale sono Steve Yen e Dustin Sallings. Mi sono unito a loro poco dopo la fondazione. Inoltre, Damien non è poi entrato a far parte di Couchbase, ha fatto parte di CouchIO / Couch One prima della fusione. Citando una fonte storica e divertente: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
@MattIngenthron Thx per l'aggiornamento. Ho inserito la tua osservazione nella risposta, se trovo il tempo potrei modificare il diagramma di flusso di conseguenza.
Jeroen,

1

Penso che CouchBase sembri essere percepito come l'alternativa "enterprise" di CouchDB. Che in un certo senso sembra essere vero. A parte la mancanza di capacità di allegare file a record (documenti) e endpoint REST "out-of-box" rispetto a CouchDB, CouchBase ha un linguaggio simile a sql, ovvero N1QL (a volte pronunciato Nickel). Questo è uno dei motivi per cui non mi piace / consiglio di usare il termine "NoSQL". Personalmente mi piace il termine "Non relazionale".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.