Os
banco de Dados NOSQL (not only SQL) 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.. Esse
artigo tem como objetivo de realizar um passo a passo de um pequeno
exemplo para persistir informações no Cassandra.
Para
demonstrar um pouco do Cassandra será utilizado o Easy-Cassandra que
é um framework open souce que visa está facilitando o uso desse
banco nosql.
@ColumnFamilyValue(nome = "person")//
public class Person implements Serializable {
private static final long serialVersionUID
= 3L;
@KeyValue(auto=false)
private Long id;
@IndexValue//indica que esse campo eh um
indece
@ColumnValue(nome = "name")//indica
que serah uma coluna e o seu nome
private String name;
@ColumnValue(nome = "year")
private Integer year;
@EnumeratedValue(nome="sex")//indica
que esse campo serah um enum alem do nome do campo
private Sex sex;
@EmbeddedValue//indica que a classe Address
estah embutida na classe Person
private Address address;
//getter and setter
}
|
listagem 1: Classe modelada com anotação para persistir a informação no Cassandra
public class PersonDAO {
private Persistence persistence;
public PersonDAO() {
persistence =
EasyCassandraManager.getPersistence("javabahia",
"localhost", 9160);
}
public void create(Person bean) {
persistence.insert(bean);
}
public void remove(Person bean) {
persistence.delete(bean);
}
public void remove(Long id){
persistence.deleteByKeyValue(id,
Person.class);
}
public void update(Person bean) {
persistence.update(bean);
}
public Person retrieve(Object id) {
return (Person)
persistence.findByKey(id, Person.class);
}
@SuppressWarnings("unchecked")
public List
return
persistence.findAll(Person.class);
}
@SuppressWarnings("unchecked")
public List
return
persistence.findByIndex(index, Person.class);
}
}
|
listagem 2: Classe que realiza a chamada para o banco de Dados
O
código do pode ser baixado no link no final do artigo ao se observar
a modelagem será visto as anotações a seguir:
- ColumnValue indica os campos dentro da Família de Coluna,os formatos de campos disponíveis nessa versão são:
- java.lang.Boolean
- java.util.Date
- java.lang.Double
- java.lang.Float
- java.lang.Integer
- java.lang.Long
- java.lang.String
KeyValue:
Indica que esse campo será a chave da família de consulta, existe a
opção de auto_increment que vem desabilitada por padrão.
- IndexValue: indica que esse campo é um índice, assim como a chave com ele você pode buscar informações a partir desse campo o máximo de indice criado é um, mas mesmo criando apenas um índice existe um perda de performance considerável ou seja faça o máximo possível para não se ter índice.
- EmbeddedValue: essa anotação indica que existe mais campos dentro dele, a persistência continuará na forma de uma grande tabela, mas esse campo é util para modelar a informação em mais objetos.
As
anotações ColumnFamilyValue, ColumnValue e EnumeratedValue caso o
campo “name” não seja preenchido o padrão é o nome da classe
ou nome da variável.
Tão
logo o código tenha sido observado vamos colocar o código para
rodar. Os requisitos para o código funcione são os seguintes:
- JDK 7 ou acima
- O cassandra esteja rodando
- Criar o Keyspace e Family column
- Realizar a anotação na classe
- Realizar a chamada para salvar objeto
- Adicionar a Lib do Cassandra
- Adicionar as dependências do Thrift
Para
rodar o pequeno exemplo siga os seguintes passos:
- Baixe o apache cassandra aqui
- Descompacte o arquivo e entre no arquivo descompactado
- Ao entrar na pasta inicie o Cassandra com o seguinte comando:
./bin/cassandra
-f
|
- Em seguida use no modo cliente para isso com outro terminal entre na pasta recém descompactada e execute o seguinte comando:
./bin/cassandra-cli
-host localhost
|
- No modo cliente para criar um keyspace e família de coluna execute:
|
- Realize o download do projeto
- Realize o download das libs e adicione elas no classpath no projeto
- Pronto agora seu primeiro exemplo com o Cassandra funciona.
Esse
artigo teve como objetivo a mostrar um pequeno exemplo persistindo
informações no Cassandra para isso foi utilizado o Easy-Cassanda. O
exemplo está disponíveis tanto para o netbeans tanto para o
Eclipse.
Download
do código e das Libs:
Wiki
Easy-Cassandra:
home
Easy-Cassandra:
Mais
sobre nosql e Cassandra:

Olá, como vai?
ResponderExcluirGostei muito deste post, tem me esclarecido como fazer uma conexão Java + Cassandra, usando um framework de persistência. Gostaria de apenas saber se preciso de um servidor Web para efetuar corretamente a conexão e assim trabalhar com alguns CRUD's.
Vlw
Não.
ResponderExcluirNesse caso como usa o java EE é necessário, mas nada impede que você, por exemplo, use Cassandra com uma interface swing.
Veja um exemplo nesse post:
http://www.devmedia.com.br/persistindo-arquivos-no-cassandra/23570
Sendo normalmente o trabalho com o nosql é feito em projeto web, digo normalmente isso não é uma regra.