Persistindo com o Cassandra em java: exemplo simples

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 listAll() {

  return persistence.findAll(Person.class);
}
@SuppressWarnings(“unchecked”)
public List listByIndex(Object index) {
   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:
  • 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:
  • 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.
  • 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 é 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:
create keyspace javabahia;
use javabahia;
create column family person with
comparator = UTF8Type and
column_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 netbeans tanto para o Eclipse.
Download do código e das Libs:
Wiki Easy-Cassandra:
home Easy-Cassandra:
Mais sobre nosql e Cassandra:
Anúncios

2 comentários sobre “Persistindo com o Cassandra em java: exemplo simples

  1. bruno disse:

    Olá, como vai?
    Gostei 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

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s