Diferença entre CouchDB e Couchbase


270

Existem diferenças essenciais entre o CouchDB e o Couchbase .


45
Confuso sobre os nomes? Assim como eu, comecei remixando as informações de nomenclatura desta resposta superior em uma visualização do histórico de nomenclatura , o que deve ajudar a entender qualquer uma dessas respostas.
Jeroen

@Jeroen Essa é uma visualização incrível. Ele deve ser editado para a resposta principal?
shoover 8/08/16

Se você está procurando por uma solução para o seu problema, entre em contato conosco através do formulário abaixo, que responderemos o mais breve possível.
Jeroen

Respostas:


555

Eu acho que existem algumas diferenças essenciais entre o CouchDB e o Couchbase Server que precisam ser destacadas.

Não vou escrever sobre as vantagens de alternar do CouchDB para o Couchbase Server porque elas são descritas em praticamente todos os lugares (consulte O futuro do CouchDB de Damien Katz ou Couchbase vs. Apache CouchDB do Couchbase). Em vez disso, tentarei enumerar os recursos do CouchDB que você não encontrará no servidor do Couchbase .

Todos os nomes relacionados ao CouchDB e ao Couchbase podem ser realmente confusos, por isso atualizei esta resposta para começar com uma breve explicação dos mais importantes.

Nomes e confusão

Existem CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... todos diferentes e ainda relacionados de uma maneira que não é óbvia apenas pelos nomes.

Primeiro, havia o CouchDB, um banco de dados criado por Damien Katz, um ex-desenvolvedor da IBM. Seu nome oficial foi alterado para Apache CouchDB depois que se tornou um projeto Apache.

Uma empresa chamada CouchIO foi fundada para trabalhar no Apache CouchDB e posteriormente mudou seu nome para CouchOne (por "seu nome" quero dizer o nome da empresa - não o nome do banco de dados).

O CouchOne (anteriormente CouchIO) se fundiu com a Membase (anteriormente NorthScale) para formar uma nova empresa chamada Couchbase. Membase (a empresa) desenvolveu o Membase (um produto com o mesmo nome). O Membase foi criado por vários líderes do projeto Memcached e usou o protocolo Memcached. Após a fusão da CouchOne e da Membase, a Couchbase continuou o desenvolvimento do software Membase e posteriormente mudou seu nome para Couchbase Server.

Hoje, acho que a maioria das pessoas acredita que o Couchbase Server é uma nova versão do CouchDB, mas na verdade é uma nova versão do Membase. Ele ainda usa o protocolo Memcached e não a API RESTful do CouchDB. Enquanto isso, o CouchDB ainda é o CouchDB, mantido e aprimorado ativamente como um projeto Apache.

Agora, as diferenças relevantes:

Licenciamento

O Couchbase Server não é um software totalmente de código aberto / gratuito . Existem duas versões: Community Edition (gratuita, mas sem correções de bugs mais recentes) e Enterprise Edition (existem restrições de uso, provisões de confidencialidade, auditorias da Couchbase Inc. que "serão realizadas durante o horário comercial nas instalações do Licenciado" e outros termos típicos software proprietário que muitas pessoas consideram inaceitável).

O CouchDB é um projeto de software livre / de código aberto (sem amarras) da Apache Software Foundation e é lançado sob a Licença Apache, versão 2.0 (compatível com DFSG, aprovada pela FSF, aprovada pela OSI, compatível com GPL, não copyleft , comercial-amigável).

Filosofia

Eu nunca vi isso apontado diretamente, mas essa pode ser realmente a diferença mais importante entre esses dois bancos de dados, porque é profundamente sobre a filosofia subjacente dos modelos de computação distribuída e não apenas sobre determinados recursos, APIs ou licenciamento. O CouchDB e o Couchbase Server diferem completamente em sua filosofia de criar sistemas e bancos de dados distribuídos.

De acordo com o teorema da PAC , é impossível que um banco de dados distribuído forneça simultaneamente consistência, disponibilidade e tolerância à partição.

O CouchDB é um sistema do tipo AP (fornece tolerância de disponibilidade e partição ).

O Couchbase Server é um sistema do tipo CP (de acordo com a Wikipedia ) OU um sistema do tipo CA (de acordo com a atualização técnica do Couchbase ) - QUE DESTES ESTÁ CORRETO? POR FAVOR COMENTE.

Recursos

Isso é o que eu achei ser uma lista de recursos do CouchDB que não são suportados pelo servidor do Couchbase:

  • não RESTful API (apenas para pontos de vista, não para operações CRUD)
  • não feed de alterações
  • sem replicação ponto a ponto
  • no CouchApps
  • não bicama (há uma interface de administração diferente disponível)
  • nenhum ID de documento
  • nenhuma noção de bancos de dados (existem apenas buckets)
  • nenhuma replicação entre um banco de dados do CouchDB e o Couchbase Server
  • sem anexos explícitos (você precisa armazenar arquivos adicionais como novos pares de chave / valor)
  • sem API HTTP para tudo (você precisa usar os SDKs do Couchbase Server ou uma das bibliotecas de clientes experimentais do Couchbase Develop, portanto, não há experimentos com curl e wget )
  • API do CouchDB (ela usa a API do Memcached )
  • você não pode fazer tudo no navegador (você precisa escrever um aplicativo no servidor)
  • nenhuma arquitetura de duas camadas para aplicativos da Web é possível (você precisa escrever um aplicativo no servidor para ficar entre o navegador e o banco de dados, como nos bancos de dados relacionais)
  • nenhuma consistência eventual
  • software não inteiramente de código aberto / livre
  • não é um substituto para o CouchDB (parece um substituto para o Memcached)

Esses recursos do CouchDB podem ou não ser importantes para você, portanto, se a falta deles é uma desvantagem ou não é estritamente subjetivo, mas acho que a decisão de mudar do CouchDB para o Couchbase Server ou não deve se basear nessas diferenças e sua dependência desses recursos em suas implantações atuais do CouchDB.

Por exemplo, se você se interessou pelo CouchDB depois de assistir ao feed de alterações do CouchDB pelo NodeCamp por Mikeal Rogers ou por um dos excelentes tutoriais do CouchApp por J. Chris Anderson, você deve perceber que, se quiser mudar para o Couchbase Server terá que esquecer praticamente tudo o que eles estavam falando.

Por isso, eu diria que o Couchbase Server parece uma evolução do Memcached e do Membase (não uma evolução do CouchDB) e, como tal, parece um ótimo produto se você estiver usando o Memchached ou o Membase. Se você estiver usando o CouchDB da maneira mais básica, considere usar o Couchbase Server para as mesmas coisas e ele pode ou não ter um desempenho melhor (se você não se importar com as restrições de licença). Mas se você estiver realmente usando algum dos recursos exclusivos do CouchDB (como o feed de alterações, CouchApps, arquitetura de duas camadas, replicação ponto a ponto etc.), poderá esquecer esses recursos ou permanecer no CouchDB. De qualquer forma, certifique-se de ler e entender o tutorial Migração para o Couchbase para usuários do CouchDB antes de pensar em mudar.

As pessoas costumam ter uma impressão errada (talvez depois de ler coisas como "Qual é o futuro do CouchDB? É o Couchbase." ) De que o CouchDB está de alguma forma obsoleto pelo Couchbase Server ou que é uma versão antiga e antiga do Couchbase. Enquanto o CouchDB é um projeto de código aberto mantido ativamente, o servidor do Couchbase é um projeto completamente separado (é um projeto mais novo, mas não é uma versão mais recente do CouchDB - eles nem são compatíveis) e uma vez que ainda são mantidas novas ferramentas para criar o CouchApps sendo desenvolvido (por exemplo, consulte o projeto Kanso ), o CouchDB não chegará a lugar algum em breve.

Espero que isso esclareça a confusão. Por favor, corrija-me se estiver errado em alguma coisa aqui.

Atualizar:

Couchbase Server é realmente um novo nome para o Membase Server (o Membase Server foi renomeado para Couchbase Server em algum lugar da versão 1.8). Veja o Couchbase 2011 Year Review :

Infelizmente, confundimos muitos usuários em potencial. Além do Membase Server e de nossos novos produtos móveis, também oferecemos o Couchbase Single Server, que era uma "distribuição" empacotada do Apache CouchDB. Além disso, começamos a lançar as visualizações do desenvolvedor do Couchbase Server 2.0, que incorporavam a tecnologia CouchDB no Membase Server - mas este produto não era compatível com o Couchbase Single Server (ou CouchDB). O [...] Membase Server será renomeado para Couchbase Server 1.8 em seu próximo lançamento em janeiro - um pequeno passo que simplesmente alivia a confusão de "nome". Como foi planejado desde o início, a versão do Couchbase Server 2.0 (atualmente na Developer Preview 3) adicionará funcionalidade de índice e consulta. Embora o Couchbase Server 2.0 incorpore uma tecnologia substancial do projeto CouchDB,não será compatível com o CouchDB e não deve ser visto como uma "versão do CouchDB". [enfase adicionada]

Veja também:


69
Bravo. Fico feliz em ver algo realmente explicando esse lado das coisas (todas as comparações existentes, como você listou, têm um viés perceptível no Couchbase).
Stuart P. Bentley

6
@ WalterTross: Na verdade, não usar a API do CouchDB, não ser RESTful e não usar HTTP não são exatamente as mesmas coisas. Por exemplo, Riak não usa a API do CouchDB, mas ainda usa uma API RESTful. Além disso, ele pode não usar o REST, mas ainda usa o HTTP (por exemplo, SOAP ou outro serviço da Web). Aqui, eu queria deixar claro que o servidor Couchbase não apenas não usa a API do CouchDB, mas sua API não é RESTful e nem sequer usa HTTP.
Rsp

24
Considero que esta é a resposta. Obrigado.
Skift

10
Em relação à sua pergunta "CP vs CA": em poucas palavras, é impossível ter um sistema "CA" a menos que você esteja falando de uma única máquina. Sempre existem partições na rede ( aphyr.com/posts/288-the-network-is-reliable ) e, portanto, um sistema distribuído, a qualquer momento, fará com que as compensações estejam Disponíveis ou Consistentes em face de Partições (mas nunca as duas). Então, por indução, o Couchbase é CP. De fato, isso decorre de sua estratégia de replicação por trás do vBuckets, que é a) 1: n mestre / escravo ou b) 1..n baseado em cadeia versus, digamos, um sistema modelado após o Dynamo (AP).
precisa

9
Atualmente, há uma adição muito importante a este artigo: Couchbase SyncGateway. Essa é essencialmente uma parte que traz a replicação do CouchDB para o Couchbase em um nível compatível com a API, de modo que o CouchDB possa ser replicado com o Couchbase por meio do SyncGateway. Que é um grande negócio a partir de uma perspectiva de Couchbase Lite, que pode (com exceção de alguns casos de canto) alternar facilmente entre a sincronização com o CouchDB a sincronização com SyncGateway
Leonid Usov

39

Eles são diferentes, mas similares, softwares. Remixei o conteúdo da resposta superior em uma imagem que possa ajudar a esclarecer a "diferença" e as coisas comuns:

a outra resposta vinculada acima é uma descrição ampliada desta imagem

Um comentário de Matt Ingenthron acrescenta a isso:

Para adicionar alguns contextos / correções: Os fundadores da NorthScale são Steve Yen e Dustin Sallings. Eu me juntei a eles logo após a fundação. Além disso, Damien não se juntou mais tarde à Couchbase, ele fazia parte do CouchIO / Couch One antes da fusão. Citando uma fonte histórica divertida: https://youtube.com/watch?v=aZ_JOnU8tkI


4
Essa é uma informação gráfica super útil!
Zach Smith

3
Para adicionar alguns contextos / correções: Os fundadores da NorthScale são Steve Yen e Dustin Sallings. Eu me juntei a eles logo após a fundação. Além disso, Damien não se juntou mais tarde à Couchbase, ele fazia parte do CouchIO / Couch One antes da fusão. Citando uma fonte histórica divertida: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
@MattIngenthron Thx para a atualização. Adotei sua observação na resposta, se eu encontrar tempo para ajustar o fluxograma de acordo.
Jeroen

1

Eu acho que o CouchBase parece ser percebido como a alternativa 'corporativa' do CouchDB. Que de certa forma parece ser verdade. Além da falta de capacidade de anexar arquivos aos registros (documentos) e aos pontos de extremidade REST 'prontos para o uso' em comparação com o CouchDB, o CouchBase possui uma linguagem semelhante a sql, ou seja, N1QL (às vezes pronunciado como níquel). Essa é uma das razões pelas quais eu realmente não gosto / recomendo usar o termo 'NoSQL'. Pessoalmente, gosto do termo "Não relacional".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.