MongoDB

No post que eu falo que conheci o conceito de NoSQL e fiz uma pequena tradução sobre o CouchDB eu disse que em breve falaria sobre o MongoDb.

Assim como o Couch o Mongo é um banco de dados orientado a documentos, é open source, também tem como propósito a escalabilidade e é desenvolvido em C++.
Os documentos são armazenados com a simplicidade de esquemas de dados JSON-like, mais precisamente BSON (Binary JSON). Assim como o JSON, suporta a incorporação de objetos e arrays dentro de outros objetos e arrays.
As consultas também são bem simples:

db.clientes.find()

em SQL seria

SELECT * FROM clientes

Suporta Map/Reduce, provê algumas funcionalidades para buscas full text e tem muitas outras vantagens.

Com certeza os bancos orientados a documentos mais falados no momento são o MongoDB e o CouchDB. Não arrisco um papilte em dizer qual é melhor, particularmente eu gosto bastante do CouchDB. Notei que o MongoDB está em uma fase de desenvolvimento mais evoluída que o CouchDB, porém acho o Couch um pouco mais simples, até mesmo de instalar.
Como referência aqui no Brasil, temos o pessoal da Improve It utilizando o Couch e o pessoal do time de Cloud Computing da Locaweb utilizando o Mongo.
E você prefere qual? Por que?

CouchDB

Um conceito interessante que conheci recentemente é o do NoSQL. Existem alguns bancos de dados orientados a documentos que estão sendo comentados com certa frequência pela comunidade. Fiz uma tradução sobre o CouchDB, em breve vou escrever sobre ele e também sobre o MongoDB.

O Apache CouchDB é um banco de dados orientado a documentos que pode ser consultado e indexado com MapReduce utilizando Javascript. O CouchDB também oferece replicação incremental com detecção de conflitos bi-direcionais e resolução.

O CouchDb provê uma API JSON RESTful que pode ser acessada por qualquer ambiente que permita requisições HTTP. Existem inúmeras bibliotecas de terceiros que fazem seu uso mais fácil da linguagem de programação de sua escolha. CouchDB tem um console de administração web que fala diretamente com o banco de dados usando requisições HTTP enviadas do seu navegador.

É escrito em Erlang, uma linguagem de programação robusta, funcional ideal para construir sistemas distribuídos concorrentes. Erlang permite design flexível que é facilmente escalável e facilmente extensível.