CouchDB vs MongoDB

13 views
Skip to first unread message

Ed Rock

unread,
Jan 31, 2010, 1:22:57 PM1/31/10
to MRNN-Brasil
Caros,

"Descobri" a lista via o post
http://techberto.wordpress.com/2010/01/31/mrnn-brasil-para-discussao-de-solucoes-mrnn-n1nf-nosql-notonlysql/
achei o post meio "albertiano" (que é sempre aquela conversa de um
matemático acadêmico com um vendedor de cachorro quente na frente do
estádio do pacaembu) e de cara fiquei interessado em entrar na lista e
de realizar a seguinte pergunta:

CouchDB ou MongoDB? Qual é a melhor opção? Parece que o CouchDB
está mais consolidado mas o MongoDB tem só problema de batismo ou ele
tem algum problema real comparado ao seu concorrente? Aliás, eles são
realmente concorrentes ou é uma impressão equivocada minha?

Estou bastante interessado neste assunto.

Aliás, esta história de MRNN-Brasil me pareceu deveras
inteiressante.

[]s

Ed Rock


Luciano Ramalho

unread,
Jan 31, 2010, 4:23:52 PM1/31/10
to eds...@gmail.com, MRNN-Brasil
2010/1/31 Ed Rock <eds...@gmail.com>:

>   "Descobri" a lista via o post
> http://techberto.wordpress.com/2010/01/31/mrnn-brasil-para-discussao-de-solucoes-mrnn-n1nf-nosql-notonlysql/
> achei o post meio "albertiano" (que é sempre aquela conversa de um
> matemático acadêmico com um vendedor de cachorro quente na frente do
> estádio do pacaembu) e de cara fiquei interessado em entrar na lista e
> de realizar a seguinte pergunta:

Seja bem vindo, Ed!

>     CouchDB ou MongoDB? Qual é a melhor opção?

Ed, eu acho que seria legal começar esta lista evitando polêmicas do
tipo "O que é melhor, A ou B?". Porque na verdade, a resposta correta
sempre é: "Depende".

Uma pergunta mais favorável para uma boa discussão teria um contexto
de utilização, restrições, características desejáveis etc.

> Parece que o CouchDB
> está mais consolidado mas o MongoDB tem só problema de batismo ou ele
> tem algum problema real comparado ao seu concorrente? Aliás, eles são
> realmente concorrentes ou é uma impressão equivocada minha?

Eu ainda não estudei em profundidade nenhum dos dois, mas com o
CouchDB pelo menos eu já brinquei e comecei a ler um livro.

Eu diria que eles são concorrentes sim. Atualmente, o CouchDB tem mais
visibilidade, e tem uma novidade muito interessante: aproveitando que
o CouchDB tem um sistema de replicação robusto, o projeto Ubuntu
adotou o CouchDB como banco de dados para sincronização de dados do
usuário entre diferentes máquinas (dados como contatos, bookmarks
etc).

Isso significa que desde a versão 9.10 (outubro de 2009) todos os
usuários do Ubuntu têm um couchdb instalado!

Eu tenho um amigo, o Osvaldo Santana, que analisou os dois e gostou
mais do MongoDB, mas não sei os detalhes técnicos da escolha (no
final, ele optou por usar o ZODB no projeto em questão).

Eu acho que o nome MongoDB é um problema do ponto de vista de
marketing. Para ser levado a sério, o MongoDB vai precisar de um
discurso muito mais forte, com cases mais impressionantes, etc.


[ ]s
Luciano


--
"""
Many were increasingly of the opinion that they'd all made a big
mistake in coming down from the trees in the first place. And some
said that even the trees had been a bad move, and that no one should
ever have left the oceans. (DA/HHGTTG)
"""

Carlos Ribeiro

unread,
Jan 31, 2010, 6:02:39 PM1/31/10
to MRNN-Brasil
Boa noite! Primeiro post, vamos lá...

On Jan 31, 7:23 pm, Luciano Ramalho <rama...@gmail.com> wrote:
> Isso significa que desde a versão 9.10 (outubro de 2009) todos os
> usuários do Ubuntu têm um couchdb instalado!

+1

> Eu tenho um amigo, o Osvaldo Santana, que analisou os dois e gostou
> mais do MongoDB, mas não sei os detalhes técnicos da escolha (no
> final, ele optou por usar o ZODB no projeto em questão).

Curiosidade: ele optou por usar o ZODB fora do ambiente Zope/Plone? Se
for o caso, é uma decisão interessante, vale a pena trazer para a
discussão.

> Eu acho que o nome MongoDB é um problema do ponto de vista de
> marketing. Para ser levado a sério, o MongoDB vai precisar de um
> discurso muito mais forte, com cases mais impressionantes, etc.

Não sei se isso faz tanta diferença assim. Até que ponto o nome
"MongoDB" parece estranho só para a gente aqui no Brasil? Pelo pouco
que eu li, a questão é que o CouchDB me pareceu mais bem divulgado,
com uma mensagem mais clara e simples. Vejamos:

1) É um projeto que foi "adotado" pela Apache Foundation, o que agrega
credibilidade.
2) Existe um tutorial em Javascript que ajuda bem a entender o
conceito, sem que precise instalar qualquer coisa na máquina (http://
labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html).
3) Outro ponto a favor (pelo menos em termos de levantar curiosidade)
é o fato de CouchDB usar uma linguagem eminentemente paralela (Erlang,
combinado com Javascript) enquanto o MongoDB usa C++. Pode ser bobagem
minha mas isso agrega um pouco em termos de "charme" ao projeto do
"sofazão" (brincadeira - só pra ver que "couch" tb não é lá muito
simpático quando traduzido!).

Carlos Ribeiro

Osvaldo Santana

unread,
Feb 11, 2010, 5:18:51 PM2/11/10
to MRNN-Brasil
Olá Pessoal,

(estou respondendo direto pela web, vamos ver se isso funciona)

On 31 jan, 21:02, Carlos Ribeiro <carribe...@gmail.com> wrote:
> Boa noite! Primeiro post, vamos lá...
>

> On Jan 31, 7:23 pm,LucianoRamalho <rama...@gmail.com> wrote:
>
> > Isso significa que desde a versão 9.10 (outubro de 2009) todos os
> > usuários do Ubuntu têm um couchdb instalado!
>
> +1
>
> > Eu tenho um amigo, o Osvaldo Santana, que analisou os dois e gostou
> > mais do MongoDB, mas não sei os detalhes técnicos da escolha (no
> > final, ele optou por usar o ZODB no projeto em questão).
>
> Curiosidade: ele optou por usar o ZODB fora do ambiente Zope/Plone? Se
> for o caso, é uma decisão interessante, vale a pena trazer para a
> discussão.

Sim, o ZODB pode ser usado 'standalone' sem o menor problema.

No nosso sistema estamos usando ZODB com RelStorage (via Django
http://triveos.github.com/django-zodb/).

Optamos pelo ZODB pelas seguintes razões:

- RelStorage – não usaríamos o ZODB com FileStorage. Com o RelStorage
usamos um banco de dados relacional como backend que, por sua vez,
implementa seus sistemas de replicação, backup, etc. Outra vantagem do
RelStorage é que com ele não é mais necessário usar o ZEO. Cada
instância da nossa aplicação roda o seu ZODB localmente acessando o
RDBMS através dele.
- Nosso aplicativo é Python – diferente das alternativas já discutidas
aqui o ZODB pressupõe Python.
- Maturidade – Quando estávamos avaliando as outras alternativas
(CouchDB e MongoDB) nenhuma tinha o mesmo tempo de estrada do ZODB
(apesar do RelStorage ser relativamente novo ele é pequeno e simples).
Encontrei até histórias de bases couchdb corrompidas por conta de bug
no servidor. Obviamente isso já deve ter sido resolvido.
- Não era necessário desenhar uma camada de abstração Python->****DB
(as alternativas existentes para ambos, ironicamente, usam Schema e
optei por um DB NoSQL justamente por essa razão).

Eu sou defensor de que sempre deveríamos incluir o ZODB nessas
discussões sobre bancos de dados não-relacionais. Com o RelStorage ele
pode entrar nessa 'briga' com vantagens.

A segunda alternativa (caso o RelStorage não tivesse se mostrado bom)
era usar o MongoDB.

A razão é simples: gosto de ter conhecimento sobre como as ferramentas
que uso funcionam para que seja possível corrigir problemas que
eventualmente aparecem (todo software tem bugs). Eu programo (pouco)
em C++ e *nada* em Erlang (não consegui nem aprender :D).

O fato do MongoDB ter uma empresa que, eventualmente, pode vender
consultoria e/ou melhorias para o MongoDB foi um critério com um pouco
de peso.

Tecnicamente o MongoDB oferece mais alternativas para balanceamento de
carga e replicação. O artigo em
http://blog.boxedice.com/2009/07/25/choosing-a-non-relational-database-why-we-migrated-from-mysql-to-mongodb/
é bem interessante para ilustrar isso que eu disse.

Obrigado,
Osvaldo

Reply all
Reply to author
Forward
0 new messages