3
|49 Revista Espírito Livre | Março 2012 | http://revista.espiritolivre.org DESENVOLVIMENTO ∙ DESENVOLVENDO COM NOSQL CASSANDRAEM JAVA Por Otávio Gonçalves de Santana O Banco de Dados NOSQL foi criado, prin cipalmente, 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 da dos 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 ori ginalmente foi criado pelo Facebook e que atual mente é 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. D D e e s s e e n n v v o o l l v v e e n n d d o o c c o o m m N N O O S S Q Q L L C C a a s s s s a a n n d d r r a a e e m m J J a a v v a a : : P P a a r r t t e e 1 1 C C o o n n c c e e i i t t o o N N O O S S Q Q L L

Desenvolvendo com NOSQL Cassandra em Java: Parte 1 Conceito NOSQL

Embed Size (px)

DESCRIPTION

Matéria falando sobre o desenvolvimento do cassandra no java, dividivo em partes. Nessa primeira parte foi explicado um pouco sobre o movimento NOSQL.

Citation preview

Page 1: Desenvolvendo com NOSQL  Cassandra em Java: Parte 1  Conceito NOSQL

|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, prin­cipalmente, 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 da­dos 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 ori­ginalmente foi criado pelo Facebook e que atual­mente é 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

Page 2: Desenvolvendo com NOSQL  Cassandra em Java: Parte 1  Conceito NOSQL

|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 somen­te 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 objeti­vos, todas essas, em sua grande maioria, aca­bam 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 diferen­tes. Essa base ou banco de informações fica abs­traída da aplicação cliente e é gerenciado porum Sistema de Gerenciamento de Banco de Da­dos (SGBD). Os mais populares SGBDs são ostipos relacionais – que são uma maneira de estru­turar as informações de modo único a partir de ta­belas 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 rela­cionais. É importante salientar a diferença entreos bancos e o seu uso, pois uma má escolha nopadrão de persistência pode acarretar mais ho­ras do que a planejada, além no não atendimen­to do seu requisito. As aplicações em suamaioria são atendidas pelo banco relacional. Se­ria semelhante a um carro utilitário, que serve pa­ra 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á improdu­tivo 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 in­dividual

Durabilidade: os processos em caso desucesso serão permanente

Armazenamento: Em função disso ga­nham certa limitação nas transações com gigan­tescos volumes de dados, cargas de trabalhosnormais de operações modernas. Essas infor­mações em sua grande maioria concentram­seno disco rígido, gastando alto poder computacio­nal de I/O.

Acesso da informação: Os bancos relaci­onais possuem estruturas bem semelhantes epossuem alguns comandos em comuns que é oSQL ANSI, para se conectar e acessar as infor­mações do banco de dados usa­se um driver.Em Java, por exemplo, trocar de banco de da­dos na maioria dos casos resultam em impactoszero para a aplicação, já que basta apenas mo­dificar o driver de conexão de um banco de da­dos para outro. Nesse tipo de banco, asinformações podem ser recuperadas de N ma­neiras e a mineração de dados com esses tiposde bancos é bastante fácil.

Escalabilidade: Esse modelo trabalhamelhor com a escalabilidade vertical que consis­te 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 principal­mente no trabalho com grandes blocos de dadosfoi criado os bancos que usam o princípio doBASE.

DESENVOLVIMENTO ∙ DESENVOLVENDO COM NOSQL ­ CASSANDRA EM JAVA

Page 3: Desenvolvendo com NOSQL  Cassandra em Java: Parte 1  Conceito NOSQL

Basicamente Avaliado (disponível)

Soft­state

Eventualmente persistente (em um momen­to 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 dispo­nibilidade boa parte desse modelo usam memó­ria principal e durante um período de tempo sãojogados no disco rígido, alguns modelos traba­lham 100% com memória principal.

Acesso da informação: No NOSQL, nãoexiste semelhança alguma entre os bancos dedados. Atualmente pode­se dividir os grupos debancos de dados em quatro: grande tabela, cha­ve­valor, grafos, documentos ( serão explicadosmelhor no decorrer do artigo) cada um com ca­racterí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 tra­balham tanto na forma vertical quanto nahorizontal ­ que é a capacidade de adicionar no­vas máquinas para, de forma distribuída, aumen­tar 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á trata­da de uma forma melhor o funcionamento dobanco de dados NOSQL seus aspectos e dife­renç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/