Os banco de Dados NOSQL foram criados, principalmente, para resolver problemas com aplicações web que precisam operar com gigantescas cargas de dados além de poder escalar com grande facilidade. Esses tipos de banco de dados vem sendo usados com muita frequência em redes sociais como Twiter, Facebook, além de persistência em aplicações nas nuvens. O Cassandra é um tipo de banco nosql que originalmente foi criado pelo Facebook e que atualmente é mantido pela Apache e outras empresas. Ele é um sistema de banco de dados distribuído baseado no modelo BigTable do Google e no sistema de armazenamento Dynamo da Amazon.com.
Antes de falar sobre Cassandra é necessário falar sobre o tecnologia que o circula o NOSQL, ele significa Not only SQL (não somente sql) e não NO SQL (não ao sql), o principal objetivo do mesmo é promover um novo conceito de banco de dados e sem destruir ou inviabilizar o já existente (SQL). Apesar do grande número de aplicações e da diversidade de seus objetivos, todas essas em sua grande maioria acaba realizando o CRUD ou seja cria, recupera, atualiza e deleta informações, essas informações tem características diferentes além de tamanho diferentes, necessidades de poder computacional diferentes. Essa base ou banco de informações fica abstraída da aplicação cliente e é gerenciado por um Sistema de Gerenciamento de Banco de Dados (SGBD). Os mais populares SGBDs são os tipos relacionais que é uma maneira de estruturar as informações de modo único a partir de tabelas e na relação de umas com as outras.
ARQUITETURA DOS BANCOS DE DADOS
Para explicar melhor a arquitetura dos bancos nosql será comparado com os bancos relacionais, é importante salientar a diferença entre os bancos e o seu uso, uma má escolha no padrão de persistência pode acarretar em mais horas do que a planejada, além no não atendimento do seu requisito. As aplicações em quase sua maioria é atendida pelo banco relacional seria semelhante a um carro utilitário, que serve para várias pistas, quando se tem a necessidade de uma maior velocidade e desempenho uma boa opção seria os bancos nosql que seria comparado a um carro de corrida, no entanto eles atendem a casos específicos será improdutivo colocar um carro de formula 1 em uma pista de rally.
SQL
Modelo de persistência: Os atuais bancos de dados tentam explorar ao máximo o modelo A.C.I.D.
cujos os princípios são:
Atomicidade: Trata o trabalho como parte indivisível, ou seja ou tudo feito ou nada feito
Consistência: o processo deve deixar o banco integro ou não será executado
Isolamento: tratar cada operação como individual
Durabilidade: os processos em caso de sucesso serão permanente
Armazenamento: Em
função disso ganham certa limitação nas
transações com gigantescos volumes de dados, cargas de trabalhos normais de
operações modernas. Essas informações em sua grande maioria se concentram no disco rígido, gastando alto
poder computacional de I/O.
Acesso da informação: Os bancos relacionais possuem estruturas bem
semelhantes e possuem alguns comandos em comuns que é o SQL ANSI, para se
conectar e acessar as informações do banco de dados usa-se um driver, Em java,
por exemplo, trocar de banco de dados na maioria dos casos resultam em impactos
zero para a aplicação, já que basta apenas modificar o driver de conexão de um
banco de dados para outro. Nesse tipo de bancos as informações podem ser
recuperada de N maneiras a mineração de dados com esses tipos de bancos é bastante
fácil.
Escalabilidade: Esse
modelo trabalha melhor com a escalabilidade vertical que consiste em adicionar
mais poder de processamento, memória ou disco em uma máquina,
NOSQL
Modelo de persistência: Com a
necessidade de se ganhar mais performance principalmente no trabalho com
grandes blocos de dados foi criado os bancos que usam o princípio do BASE.
Basicamente Avaliado (disponível)
Soft-state
Eventualmente persistente (em um momento será persistido)
A ideia desse modelo é estar dando prioridade há uma alta disponibilidade e escalabilidade além de um alto grau de performance.
Armazenamento: com o objetivo da disponibilidade boa parte
desse modelo usam memória principal e durante um período de tempo são jogados
no disco rígido, alguns modelos trabalham 100% com memória principal.
Acesso da informação: No nosql, não existe semelhança nenhum entre os
bancos de dados, atualmente pode-se dividir os grupos de bancos de dados em
quatro que são: grande tabela, chave-valor, grafos, documentos ( serão
explicados melhor no decorrer do artigo) cada um com características
específicas e objetivos específicos. Para se conectar ou acessar um desses
bancos de dados é usado uma API, então mudanças de bancos de dados causará
bastante impacto para a aplicação, mesmo que os bancos de dados sejam do mesmo
tipo, por exemplo,de Big Table da Google para cassandra apesar de
ambos possuírem o mesmo modelo de banco de dados que é o de grande
tabela a mudança de código mesmo que apenas em uma camada (DAO) será
relativamente alta, mas a tendência é que daqui a alguns anos cada um dos tipos
de banco de dados existem uma implementação de referência semelhante ao JPA.
Outra informação importante é que você boa parte dos bancos você recupera a
informação apenas a partir de uma chave.
Escalabilidade: Existem modelos que trabalham tanto na forma
vertical tanto na forma horizontal que é a
capacidade de adicionar novas máquinas para, de forma distribuída, aumentar os
recursos de processamento, memória e disco.
Conclusão
Neste artigo foi abordado o conceito de nosql
além de suas semelhanças e diferenças entre os bancos relacionais que estão a
bastante tempo no mercado, na segunda parte será tratada de uma forma melhor o
funcionamento do banco de dados nosql seus aspectos e diferenças, visto que
existem alguns tipos de banco de dados.
Referências:
Porcelli, Alexandre. Java
Magazine nº 86 Introdução ao nosql
http://escalabilidade.com/2010/03/08/introducao-ao-nosql-parte-i/
Cassandra: http://cassandra.apache.org/
Valéria Quadros dos Reis http://horasdeocionerd.blogspot.com/2011/02/consistencia-dos-dados-no-cassandra.html