Servidor Couchbase

Comparação entre o Couchbase e o Apache CouchDB

Apesar dos nomes semelhantes, o Couchbase Server e o Apache CouchDB são sistemas bastante diferentes.

 

         

Aqui está uma visão geral rápida de como eles se diferenciam e o que têm em comum. Estamos comparando o Couchbase 4.1 e o Apache CouchDB 1.6 e publicaremos novamente quando o CouchDB 2.0 for lançado.

Visão geral rápida

 

Servidor Couchbase

Apache CouchDB

Modelos de dados

Documento, chave-valor

Documento

Armazenamento

Árvore B somente com anexo

Árvore B somente com anexo

Consistência

Forte

Eventual

Topologia

Distribuído

Replicado

Replicação

Mestre-Mestre

Mestre-Mestre

Failover automático

Sim

Não

Cache integrado

Sim

Não

Compatível com o Memcached

Sim

Não

Travamento

Otimista e pessimista

Otimista com a MVCC

MapReduce (visualizações)

Sim

Sim

Linguagem de consulta

Sim, N1QL (SQL para JSON)

Não

Índices secundários

Sim

Sim

Notificações

Sim,

Protocolo de alteração de banco de dados

Sim,

Alterações Feeds

Modelo de dados

Servidor Couchbase

O Couchbase Server é um armazenamento de valor-chave e um armazenamento de documentos, o que significa que você pode armazenar dados binários ou qualquer outro tipo de dados usando o Couchbase Server, bem como documentos JSON.

O Couchbase Server usa o protocolo binário do memcached para operações de valor-chave e APIs REST para N1QL e consultas de visualização.

Apache CouchDB

O Apache CouchDB armazena JSON como documentos, com a opção de anexar arquivos não JSON a esses documentos.

O CouchDB usa uma API REST para gravar e consultar dados.

Consulta

Servidor Couchbase

O Couchbase Server oferece três maneiras de consultar os dados que armazena:

 

  • N1QL: uma linguagem de consulta semelhante a SQL para JSON.
  • Visualizações, inclusive multidimensionais: muito parecidas com as visualizações do CouchDB.
  • Pesquisas de valores-chave.

Se você souber a chave do documento de que precisa, poderá fazer uma solicitação GET simples usando essa chave. Não há necessidade de criar nenhum índice adicional.

N1QL in a terminal

Para consultas mais complexas, você pode usar o N1QL. O N1QL fornece uma maneira familiar semelhante ao SQL para consultar dados JSON. Por exemplo, para encontrar um perfil de usuário com base no endereço de e-mail do usuário, usamos a seguinte consulta N1QL:

O N1QL permite que você consulte o JSON com a mesma flexibilidade que esperaria de um banco de dados relacional, incluindo JOINs entre documentos.

Você também pode criar exibições que funcionam de forma semelhante às encontradas no CouchDB. Elas são especialmente úteis para consultas multidimensionais, como o trabalho com dados geoespaciais.

Apache CouchDB

Como um armazenamento de documentos puro, o Apache CouchDB permite que você recupere dados com base no conteúdo dos documentos. Ele faz isso por meio de um sistema de exibições. Você também pode extrair um documento completo usando sua chave.

Você pode pensar nas exibições do CouchDB como índices que você gera ao escrever consultas Map/Reduce em JavaScript. Por exemplo, se você quiser recuperar um perfil de usuário com base no endereço de e-mail desse usuário, poderá:

  1. Crie uma exibição que forneça todos os documentos que contenham um endereço de e-mail e tenham um tipo de "userProfie".
  2. Consulte essa visualização para obter o endereço de e-mail do usuário cujo perfil você deseja recuperar.

Arquitetura

Servidor Couchbase

O Couchbase Server foi desenvolvido desde o início para operar como um cluster de nós.

Cada servidor no cluster assume a responsabilidade por uma parte desse espaço de hash. No servidor de aplicativos, a biblioteca do cliente Couchbase mantém um mapa que mostra quais endereços IP são responsáveis por quais partes do espaço de hash. O local de cada documento é decidido executando-se um hash no nome do bucket e da chave do documento e, em seguida, colocando-o de acordo com o servidor que detém a parte relevante do espaço de hash.

Há uma cópia ativa de cada documento. Todas as gravações são feitas nessa cópia ativa e, em operação normal, todas as leituras são feitas a partir dela também. Isso significa que não há necessidade de se preocupar com a consistência eventual dentro de um cluster, pois não há gravações a serem replicadas de outro lugar.

As réplicas de cada documento são feitas automaticamente e armazenadas em um servidor separado da cópia ativa. Com o Couchbase Server, a replicação ocorre no nível do documento e não no nível do servidor completo. Isso significa que cada nó tem um conjunto diferente de dados e as réplicas são distribuídas por todo o cluster.

Não há pontos únicos de falha e é fácil escalar para conjuntos de dados enormes adicionando mais servidores ao cluster: o conjunto de dados inteiro não precisa caber em cada servidor.

Armazenamento em cache

O Couchbase Server tem um cache gerenciado integrado. Para cada solicitação que você fizer, o Couchbase Server verificará o cache de forma transparente em busca do documento de que você precisa. Se o documento não estiver no cache, ele o carregará do disco e o servirá para você.

Todas as gravações vão para o cache e você pode ajustar em que ponto da solicitação elas são gravadas no disco ou replicadas para outros servidores.

Para seu conjunto de trabalho, a maioria das solicitações de valor-chave é inferior a um milissegundo.

Replicação entre datacenters

O Couchbase Server pode operar em zonas de disponibilidade e data centers. Cada cluster opera de forma independente, com alterações replicadas diretamente de servidor para servidor entre os clusters.

Isso é ideal para recuperação de desastres e balanceamento de carga geográfica.

Apache CouchDB

Os servidores CouchDB operam como nós individuais, cada um contendo uma cópia completa dos dados a serem armazenados. Os servidores de aplicativos podem então ler e gravar em qualquer um dos servidores CouchDB. As alterações são replicadas de forma assíncrona entre cada servidor, em uma base de servidor para servidor.

Uma maneira de executar um cluster do CouchDB é ter um único mestre que aceite gravações. As atualizações são então replicadas para os escravos e para um balanceador de carga HTTP, como o nginx, para distribuir as leituras uniformemente entre esses escravos.

Isso tem duas consequências principais:

  • o mestre é um ponto único de falha para aceitar leituras
  • os dados lidos dos escravos são eventualmente consistentes: há um atraso entre uma gravação que ocorre no mestre e a replicação para todos os escravos.

Como alternativa, um cluster do CouchDB poderia aceitar gravações em qualquer nó e, em seguida, replicar entre cada um deles. Isso melhoraria a disponibilidade de gravação, mas aumentaria o escopo dos conflitos de gravação, que o CouchDB ajuda a detectar, e o tempo necessário para que todas as cópias dos dados estejam sincronizadas.

Desenvolvimento

Servidor Couchbase

O Couchbase Server é desenvolvido ativamente pela Couchbase Inc., como um projeto de código aberto. As partes de clustering e distribuição do Couchbase Server são escritas em Erlang, enquanto o manuseio de dados é escrito em C e C++. Algumas partes do Couchbase Server, como o N1QL, são escritas em Go.

O Couchbase Server tem vários SDKs que são desenvolvidos e suportados pela Couchbase Inc. Eles fornecem acesso idiomático a toda a gama de recursos do Couchbase Server, incluindo N1QL, visualizações e acesso a valores-chave. Os SDKs oficiais estão disponíveis para:

  • Java (com suporte adicional para o Spring)
  • .NET
  • Node JS
  • Ir
  • C/C++
  • Python
  • Rubi
  • PHP.

SDKs com suporte da comunidade estão disponíveis para outros idiomas.

O Couchbase Server funciona bem com outros sistemas, graças aos conectores desenvolvidos e suportados pela Couchbase Inc. Os conectores estão disponíveis para:

  • Faísca
  • Kafka
  • Hadoop
  • Elasticsearch
  • Solr
  • JDBC e ODBC, para N1QL.

O feed de alterações internas do Couchbase Server oferece a você a oportunidade de implementar seus próprios conectores.

Apache CouchDB

O CouchDB foi escrito em Erlang, com base na estrutura OTP, por uma comunidade de desenvolvedores. O Erlang é adequado para a criação de sistemas tolerantes a falhas.

O feed de alterações do CouchDB ajuda a integrá-lo a outros sistemas.

As bibliotecas que envolvem a API REST do CouchDB estão disponíveis na comunidade do CouchDB.

Licença

Tanto o Couchbase Server quanto o Apache CouchDB são projetos de código aberto totalmente liberados sob a licença Apache 2.0.

 

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Revell

Matthew Revell é um dos principais defensores do desenvolvimento do Couchbase na região EMEA. Ele desenvolveu uma estratégia global para colocar o Couchbase na mente dos desenvolvedores do produto.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.