Cassandra x MongoDB

Pessoal, gostaria de saber a opinião de vocês sobre Cassandra e MongoDB, quais as principais vantagens e desvantagens de cada um.
O meu cenário atual é o levantamento de um banco de dados para uma rede social, este é um projeto consideravelmente robusto que desenvolveremos na faculdade, utilizando linguagem Java.

Precisamos de um banco altamente escalável, dinâmico, facilmente replicável, fácil de trabalhar, Free e etc…
Agradeço a opinião de todos.

O MongoDB é milhões de vezes mais fácil de utilizar que o Cassandra. Já possui várias API’s de comunicação (entre elas, o Spring Data), não tem grandes frescuras pra rodar (mesmo que o ambiente seja Windows), e é escalável.

Em contrapartida, ele não alcança os mesmos níveis de escalabilidade que o Cassandra, que promove replicação de dados em esquema anel (nó A replica para nó B, nó B replica para nó C e nó C replica em nó A), multi-datacenter (os nós A e C podem ficar em um datacenter enquanto os nós B e D podem ficar em outro).

Então, sumarizando:

Vantagem Cassandra:

  • Altamente escalável, lida com volumes de dados massivos;

Desvantagens:

  • Difícil de operar (Thrift ainda é meio … ahmn… estranho. Tem o Hector e o EasyCassandra, do otaviojava, que é daqui do fórum).
  • Difícil de gerenciar

Vantagens MongoDB:

  • Altamente escalável;
  • Fácil de operar;
  • Fácil de gerenciar

Desvantagem MongoDB:

  • Pode não apresentar a mesma facilidade de distribuição de dados entre data centers como o Cassandra.

Ah, além disso, tem uma diferença óbvia: o MongoDB é orientado a documentos e o Cassandra é column-based. Eu diria que, se você está começando a sua aplicação, é bom você ir de MongoDB. Se ela crescer demais, aí sim você parte pro Cassandra.

[]'s

Saudate, agradeço muito a resposta, foi extremamente esclarecedor.

A questão da dificuldade de utilização do Cassandra, hum … bem, foi o primeiro NoSql que ‘brinquei’ um pouco, e utilizei coincidentemente o Easy-Cassandra do Otavio. Consegui instalar com extrema facilidade, entendi bem apesar de que por alto, o seu funcionamento. Porém sei que ele vai beemm mais que isso e provavelmente encontrarei dificuldades.

Não estou defendendo o Cassandra, muito pelo contrario, quero chegar a um concesso de qual NoSQL usar. O Mongo não conheço ainda e não testei, mas de fato em todo lugar que procurei, ele foi muito bem recomendade. E sua resposta é até agora a que esta mais me influenciando :idea: .

Só para jogar mais confusão na sua escolha, dê uma olhada no Neo4J também.

Ele parece ser bem indicado para redes sociais por ser orientado a grafos.

Não tenho qualquer experiência com ele, só vi uma apresentação.
Mas pela apresentação que vi parece ser bem interessante.

[quote=AbelBueno]Só para jogar mais confusão na sua escolha, dê uma olhada no Neo4J também.

Ele parece ser bem indicado para redes sociais por ser orientado a grafos.

Não tenho qualquer experiência com ele, só vi uma apresentação.
Mas pela apresentação que vi parece ser bem interessante.[/quote]

Muitíssimo bem lembrado.

[]'s

Cara, muitíssimo interessante. Certamente entrará em nossas discussões.