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?

2 thoughts on “MongoDB

  1. Comecei a estudar o MongoDB hoje, depois venho aqui e posto mais algumas opiniões.

    Bem… Achei algumas diferenças…

    No mongoDB eles disponibilizam um shell para que possamos manipular o banco de dados utilizando a linguagem javascript. Isso torna as coisas muito mais faceis para teste. No CouchDB eu precisava acessa-lo atraves do Futon ou a partir de alguma linguagem de programação(no caso estava usando o windows, pelo linux usava o console + curl).

    Como vc mesmo disse, ele me pareceu um pouco mais maduro que o couchDB.

    Outra diferenca que achei e que ainda nao teste se eh assim, mas deu a entender:

    No mongoDB ele tem as collections o que faz com que tenhamos vários tipos de documentos e várias collections. No couchDB precisamos criar uma nova base para todo tipo diferente de dados?
    por exemplo:

    no couchDB
    -> Banco Pessoa -> vários documentos relacionados a pessoa
    -> Banco Pagamentos -> vários documentos relacionados aos pagamentos

    no mongoDB
    -> Banco Inteq01 -> collection Pessoa -> vários documentos relacionados a pessoa
    -> Banco Inteq01 -> collection Pagamentos -> vários documentos relacionados aos pagamentos

    Continuarei com os estudos com relação aos dois Bancos. Tenho tido um trabalho bastante exaustivo para estudar o couchDB e sua administracão via API RESTful, pois ele nao possui uma documentacao adequeda. Já o MongoDB tem uma documentacao bem acessivel e bem legal de se entender.
    Com relacao ao CouchDB estou fazendo uma documentacao em portugues bem legal de se entender usando javascript, mais precisamente, o objeto XMLHttpRequest(). Tal documentacao tbm podera ser usada para outras linguagens, pois o que irá mudar é o objeto, mas a requisição será a mesma.

    Enfim, a minha primeira impressão sobre ele foi tão boa quanto a do couchDB.

  2. Rhuan,

    se vc utilizar a ruby gem Couch Rest (criada pelo próprio j chris) você pode acessar o couchdb via console.
    Com relação a criação dos bancos, tanto no couch quanto no mongo a criação do banco é similar aos bancos relacionais, não é criado um banco para cada tabela, então não vejo motivos para criar um banco para cada tipo de documento.
    Eu perguntei para o Chris e para o Jan Lehnardt sobre como eu poderia fazer para contribuir na wiki do couch, porem escrevendo em portugues, eles responderam, mas confesso que não descobri como, não sei se eles não entenderam minha pergunta ou eu que fui burro mesmo hehehe.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>