|49Revista Espírito Livre | Março 2012 | http://revista.espiritolivre.org
DESENVOLVIMENTO ∙ DESENVOLVENDO COM NOSQL CASSANDRA EM JAVA
Por Otávio Gonçalves de Santana
O Banco de Dados NOSQL foi criado, principalmente, para resolver problemas com aplicações web que precisam operar com gigantescascargas de dados além de poder escalar comgrande facilidade. Esses tipos de banco de dados vem sendo usados com muita frequênciaem redes sociais como Twiter, Facebook, alémde persistência em aplicações nas nuvens. OCassandra é um tipo de banco NOSQL que originalmente foi criado pelo Facebook e que atualmente é mantido pela Apache e outrasempresas. Ele é um sistema de banco de dadosdistribuído baseado no modelo BigTable doGoogle e no sistema de armazenamentoDynamo da Amazon.com.
DDeesseennvvoollvveennddoo ccoommNNOOSSQQLL CCaassssaannddrraa eemm JJaavvaa::PPaarrttee 11 CCoonncceeiittoo NNOOSSQQLL
|50Revista Espírito Livre | Março 2012 | http://revista.espiritolivre.org
Antes de falar sobre Cassandra é necessário falar sobre a tecnologia que o circula: oNOSQL. Ele significa Not only SQL (não somente sql) e não NO SQL (não ao sql). O principalobjetivo do mesmo é promover um novo conceitode banco de dados e sem destruir ou inviabilizaro já existente (SQL). Apesar do grande númerode aplicações e da diversidade de seus objetivos, todas essas, em sua grande maioria, acabam realizando o CRUD, ou seja, cria, recupera,atualiza e deleta informações. Essas informações tem características e tamanhos diferentes enecessidades de poder computacional diferentes. Essa base ou banco de informações fica abstraída da aplicação cliente e é gerenciado porum Sistema de Gerenciamento de Banco de Dados (SGBD). Os mais populares SGBDs são ostipos relacionais – que são 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 dadosPara explicar melhor a arquitetura dos ban
cos NOSQL será comparado com os bancos relacionais. É importante salientar a diferença entreos bancos e o seu uso, pois uma má escolha nopadrão de persistência pode acarretar mais horas do que a planejada, além no não atendimento do seu requisito. As aplicações em suamaioria são atendidas pelo banco relacional. Seria semelhante a um carro utilitário, que serve para várias pistas e quando se tem a necessidadede uma maior velocidade e desempenho umaboa opção seria os bancos NOSQL que seriacomparado a um carro de corrida. No entantoeles atendem a casos específicos. Será improdutivo colocar um carro de Formula 1 em uma pistade rally.
SQLModelo de persistência: Os atuais bancos
de dados tentam explorar ao máximo o modeloA.C.I.D. cujos os princípios são:
Atomicidade: Trata o trabalho como parteindivisível, ou seja ou tudo feito ou nada feito
Consistência: o processo deve deixar obanco integro ou não será executado
Isolamento: tratar cada operação como individual
Durabilidade: os processos em caso desucesso serão permanente
Armazenamento: Em função disso ganham certa limitação nas transações com gigantescos volumes de dados, cargas de trabalhosnormais de operações modernas. Essas informações em sua grande maioria concentramseno disco rígido, gastando alto poder computacional de I/O.
Acesso da informação: Os bancos relacionais possuem estruturas bem semelhantes epossuem alguns comandos em comuns que é oSQL ANSI, para se conectar e acessar as informações do banco de dados usase um driver.Em Java, por exemplo, trocar de banco de dados na maioria dos casos resultam em impactoszero para a aplicação, já que basta apenas modificar o driver de conexão de um banco de dados para outro. Nesse tipo de banco, asinformações podem ser recuperadas de N maneiras e a mineração de dados com esses tiposde bancos é bastante fácil.
Escalabilidade: Esse modelo trabalhamelhor com a escalabilidade vertical que consiste em adicionar mais poder de processamento,memória ou disco em uma máquina.
NOSQLModelo de persistência: Com a neces
sidade de se ganhar mais performance principalmente no trabalho com grandes blocos de dadosfoi criado os bancos que usam o princípio doBASE.
DESENVOLVIMENTO ∙ DESENVOLVENDO COM NOSQL CASSANDRA EM JAVA
Basicamente Avaliado (disponível)
Softstate
Eventualmente persistente (em um momento será persistido)
A ideia desse modelo é dar prioridade háuma alta disponibilidade e escalabilidade alémde 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ãojogados no disco rígido, alguns modelos trabalham 100% com memória principal.
Acesso da informação: No NOSQL, nãoexiste semelhança alguma entre os bancos dedados. Atualmente podese dividir os grupos debancos de dados em quatro: grande tabela, chavevalor, grafos, documentos ( serão explicadosmelhor no decorrer do artigo) cada um com características específicas e objetivos específicos.Para se conectar ou acessar um desses bancosde dados é usado uma API. Mudanças debancos de dados causarão bastante impactopara a aplicação, mesmo que os bancos dedados sejam do mesmo tipo por exemplo deBig Table da Google para Cassandra. Apesar deambos possuírem o mesmo modelo de banco dedados, que é o de grande tabela, a mudança decódigo mesmo que apenas em uma camada(DAO) será relativamente alta. Mas a tendênciaé que daqui a alguns anos cada um dos tipos debanco de dados terão uma implementação dereferência semelhante ao JPA. Outra informaçãoimportante é que, em boa parte dos banco, vocêrecupera a informação apenas a partir de umachave.
Escalabilidade: Existem modelos que trabalham tanto na forma vertical quanto nahorizontal que é a capacidade de adicionar novas máquinas para, de forma distribuída, aumentar os recursos de processamento, memória edisco.
ConclusãoNeste artigo foi abordado o conceito de
NOSQL além de suas semelhanças e diferençasentre os bancos relacionais que estão a bastantetempo no mercado, na segunda parte será tratada de uma forma melhor o funcionamento dobanco de dados NOSQL seus aspectos e diferenças, visto que existem alguns tipos de bancode dados.
Referências:
__ Porcelli, Alexandre. Java Magazine nº 86 Introdução aoNOSQL
__ Ferreira, Edmar: http://va.mu/TfSR
__ Cassandra: http://cassandra.apache.org/
__ Valéria Quadros dos Reis: http://va.mu/TfST
|51Revista Espírito Livre | Março 2012 | http://revista.espiritolivre.org
DESENVOLVIMENTO ∙ DESENVOLVENDO COM NOSQL CASSANDRA EM JAVA
OTÁVIO GONÇALVES SANTANA égraduando em Engenharia deComputação. Desenvolvedor em soluçõesOpen Sources. Líder da célula deDesenvolvimento da Faculdade AREA1,membro ativo da comunidade JavaBahia edo grupo Linguágil. twiter otaviojava. Bloghttp://otaviosantana.blogspot.com/