Persistindo informações no Cassandra com java
Veja neste artigo como persistir seus Objeto no apache Cassandra, um dos mais famosos bancos nosql do mundo.
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.
Listagem 1: Classe modelada com anotação para persistir a informação no Cassandra
@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 é um índice
@ColumnValue(nome = "name")//indica que será uma coluna e o seu nome
private String name;
@ColumnValue(nome = "year")
private Integer year;
@EnumeratedValue(nome="sex")//indica que esse campo será um enum alem do nome do campo
private Sex sex;
@EmbeddedValue//indica que a classe Address esta embutida na classe Person
private Address address;
//getter and setter
}
Listagem 2: Classe que realiza a chamada para o banco de Dados
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 listAll() {
return persistence.findAll(Person.class);
}
@SuppressWarnings("unchecked")
public List listByIndex(Object index) {
return persistence.findByIndex(index, Person.class);
}
}
O código do pode ser baixado no link no final do artigo ao se observara modelagem será visto as anotações a seguir:
• ColumnFamilyValue anotação para indicar o nome da Família de Coluna.
• ColumnValue indica os campos dentro da Família de Coluna,os formatos de campos disponíveis nessa versão são:
1) java.lang.Boolean
2) java.util.Date
3) java.lang.Double
4) java.lang.Float
5) java.lang.Integer
6) java.lang.Long
7) 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 índice 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.
• EnumeratedValue: indica que esse campo é do tipo Enum
• EmbeddedValue: essa anotação indica que existe mais campos dentro dele, a persistência continuará na forma de uma grande tabela, mas esse campo é útil 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:
create keyspace javabahia;use javabahia;create column family person withcomparator = UTF8Type andcolumn_metadata =[ {column_name: name, validation_class: UTF8Type, index_type: KEYS}];
• 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 net beans tanto para o Eclipse.
Download do código e das Libs:
https://github.com/otaviojava/Easy-Cassandra/downloads
WikiEasy-Cassandra:
https://github.com/otaviojava/Easy-Cassandra/wiki
homeEasy-Cassandra:
https://github.com/otaviojava/Easy-Cassandra
Mais sobre nosql e Cassandra:
http://otaviosantana.blogspot.com/2011/11/desenvolvendo-com-nosql-cassandra-em.html
http://otaviosantana.blogspot.com/2011/11/desenvolvendo-com-nosql-cassandra-em_20.html
http://otaviosantana.blogspot.com/2011/12/desenvolvendo-com-nosql-cassandra-em.html
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo