Neste artigo conheceremos o movimento NoSQL, realizaremos uma comparação entre seu formato de armazenamento e o padrão de um banco de dados relacional, e para finalizar, apresentaremos um exemplo prático adotando a ferramenta Cassandra.
Para que serve:
Conhecer o NoSQL, novidade que vem ganhando destaque nos últimos meses e que promete alcançar, com qualidade, um alto número de aplicações, propondo soluções mais adequadas que os bancos de dados relacionais, ou até mesmo as complementando.
Em que situação o tema é útil:
O movimento NoSQL oferece opções para as diferentes necessidades de persistência de dados. Nesta matéria conheceremos o Apache Cassandra, ferramenta utilizada pelo Twitter para armazenamento de todo o sistema da rede social. Baseado neste exemplo, podemos notar que os bancos de dados relacionais não podem ser vistos como “balas de prata”, como a única solução correta ou válida.
Este artigo apresentará uma das novidades mais comentadas nos últimos meses: o NoSQL. Neste contexto, comentaremos sobre as principais diferenças na estrutura de armazenamento de dados dos Bancos de Dados relacionais e das opções que seguem este movimento. Para finalizar, veremos um pequeno exemplo prático através de uma implementação NoSQL chamada Cassandra.
O que é NoSQL?
NoSQL chamou atenção recentemente quando o Twitter, uma já conhecida rede social e servidor para microblogging, anunciou que estaria migrando do MySQL para o NoSQL Cassandra. Antes do Twitter, outros websites muito conhecidos também passaram a usar alguma implementação de NoSQL, como por exemplo o Facebook, Digg e Rackspace.
Para começar, um pouco de história: O termo NoSQL surgiu em 1998 como uma abreviação de “Not Only SQL”, ou “Não somente SQL”. Uma tradução direta para o português pode gerar um mal-entendido, pois dá a entender que o NoSQL seja de alguma forma contra a já difundida linguagem SQL. Na verdade o NoSQL veio como uma alternativa ou um complemento aos tradicionais BDs relacionais.
Como muitos podem lembrar, esta não é a primeira vez que o SQL usado em BDs tradicionais é desafiado. Nos anos 90, os Bancos de Dados Orientados a Objeto tiveram seu momento. Eles prometiam acabar com o trabalho dos desenvolvedores em converter seus objetos em linhas e colunas. Na prática o que aconteceu foi uma evolução de Gerenciadores para Mapeamento Objeto-Relacional, mantendo os bancos relacionais em funcionamento.
Hoje em dia, as opções NoSQL são aplicadas em armazenamento distribuído de dados e projetados para suportar requisitos de acesso a dados em grande escala. Tratar da escrita e da leitura de grandes quantidades de dados, como por exemplo os 7TB por dia do Twitter, pode ser um desafio para bancos de dados relacionais. Assim, a implementação em modo distribuído do NoSQL permite escalar de forma horizontal, distribuindo os dados entre múltiplos nós (servidores).
É importante lembrar que apesar de serem projetados para suportar performance e escalabilidade, os bancos de dados NoSQL não suportam as propriedades Atomicidade, Consistência, Isolamento e Durabilidade (ACID) que são um padrão nos bancos de dados relacionais. Os desenvolvedores acostumados com o padrão SQL utilizado na grande maioria dos bancos de dados relacionais (apesar de existirem pequenas diferenças entre as implementações SQL dos diferentes fornecedores, pode-se dizer que é possível migrar de um produto a outro, com pouca ou nenhuma modificação no SQL), não irão encontrar o mesmo padrão se usarem implementações NoSQL, pois cada implementação usa seu próprio mecanismo de acesso.
Entre os bancos de dados NoSQL, o mais conhecido faz parte do projeto Apache Cassandra. O Cassandra iniciou como um software de propriedade do Facebook, mas foi liberado com licença open source em 2008. Outros exemplos de implementações NoSQL incluem: Google BigTable, Apache Hadoop, Voldemort, entre outros.
O projeto Apache Cassandra
Cassandra é um sistema de armazenamento distribuído baseado em Java. É um projeto mantido pela Fundação Apache e por colaboradores, e foi projetado para tratar grandes quantidades de dados distribuídos entre vários servidores, proporcionando alta disponibilidade. O Cassandra é uma solução NoSQL que foi inicialmente desenvolvida pela equipe do Facebook para dar suporte às pesquisas executadas dentro da caixa de entrada de seus usuários.
...