Todos querem Cassandra

Cassandra database

Com esse título (e com esse logo), poderiamos começar uma novela. Mas estamos falando de outra novela: a da migração de banco de dados MySQL para Cassandra. Depois do Twitter, agora é o Digg quem decidiu migrar suas bases de dados para esse banco com um nome bem interessante.

Cassandra é um banco de dados pós-relacional. Mas como esse termo não é muito conhecido, utilizaremos o termo NoSQL. Um repositório de dados leve, feito em Java, similar aos famosos CouchDB (outro projeto que, assim como o Cassandra, é incubado na Apache Incubator) e BigTable, utilizando ferramentas similares ao Hadoop (coincidência? Mais um projeto incubado na Apache) e conceitos como MapReduce (para bancos distribuídos). Agora vem o fato mais curioso: Esse projeto foi inicialmente desenvolvido pelo Facebook, e foi aberto (open source) em 2008. Mais uma rede social, crescendo e migrando para bases não-relacionais. Que ironia: justamente as redes sociais, onde as relações são muito valiosas.

Apesar do ganho no desempenho, sei que esse tipo de transição é muito “dolorosa”. Esses tipos de banco de dados não-relacionais realmente podem dar um nó no cérebro dos desenvolvedores. É muito complicado viver sem os joins depois de algum tempo trabalhando com eles.

Segundo os engenheiros do Twitter, precisavam de um banco de dados escalável que “crescesse sozinho”. Realmente, imaginar monstros como Twitter – que cresceu mais de 20 vezes em menos de um ano, alcançado a marca de 50 milhões de Tweets diários – e do Digg (onde muitos usuários compartilham notícias e comentários o tempo todo) e seus dba’s brigando todos os dias para conter a bomba do MySQL, enxertando cada vez mais hardware para que não exploda na cara dos usuários. Nessa hora, é questão de escolha: onde vamos quebrar a cabeça para resolver o problema? Os desenvolvedores decidem.