sexta-feira, 2 de maio de 2014

Vamos falar um pouco sobre esse novo paradigma de bancos de dados, os bancos de dados não relacional ou NoSQL(Not Only SQL). Com a notícia que anunciada pelo Twitter da migração do MySQL para o Cassandra esse assunto entrou muito em discussão.

Banco dados de alto desempenho, ou seja, você troca a integridade de dados pelo o alto desempenho. Foi o que o Twitter fez quando seu volume de tweets cresceu monstruosamente. Aqui nós vamos falar um pouco sobre o MongoDB, que é uma base de dados open source, escalável e de alta performance todo escrito em C++.

O MongoDB possui uma boa API para Java junto com uma boa documentação, ele também tem APIs ou Drivers, como eles se referem no site deles, para C#, JavaScript, JVM Languages, Python, PHP, Ruby, C++ e Perl, nosso foco aqui será sobre a API Java.


Baixando e Instalando o MongoDB


Para fazer a instalação dele é bem simples, faça download do MongoDB em http://www.mongodb.org/display/DOCS/Downloads escolha o versão de acordo com o seu Sistema Operacional, para o nosso caso vamos utilizar em uma máquina Linux 32 bits.

Descompacte os arquivos e dentro e inicie o processo mongod:

$ bin/mongod --dbpath /minha/pasta/meu/bd


Por padrão o MongoDB armazena em /data/db por isso passamos o parametro –dbpath, onde especificamos onde ficará armazenado nosso store. Se tudo deu certo vamos abrir o console do MongoDB


$ bin/mongo
MongoDB shell version: 2.6.0
url: test
connecting to: test
type "help" for help
>


Nosso intuito é demonstrar a API Java do MongoDB, então não entrarei em muitos detalhes, do console do MongoDB.  O MongoDB utiliza um esquema de Collections, que você pode armazenar sua estrutura como a do JSON eles chamam de BSON. Podemos também utilizar da sintax do JavaScript para armazenar os dados no console do MongoDB.


> j = { name: "Mongodbwise", site : "www.mongodbwise.wordpress.com"};
{"name" : "MongoDBwise", site : "www.mongodbwise.wordpress.com"}
> db.suaColecao.save(j);
> db.suaColecao.findOne();


Armazenamos na Collection suaColecao a estrutura JSON j = { name: “Mongodbwise”, site : “www.mongodbwise.wordpress.com.br”}; nosso findOne irá retornar o primeiro resultado da nossa Collection "suaColecao"



Fazendo a integração com Java


O MongoDB disponibiliza sua API ou um Driver para Java, faça o download deste Driver em http://github.com/mongodb/mongo-java-driver/downloads e adicione esse JAR ao seu projeto.

 Criando uma cenexão com o MongoDB


Com o serviço do mongod rodando e ter importado a API de Java para o MongoDB vamos para nossos códigos Java.

Mongo m = new Mongo( "localhost" , 27017 );
DB db = m.getDB("test");
DBCollection coll = db.getCollection("suaColecao");

O que fizemos foi simples:

  1. Criamos uma nova instância de Mongo, passando o endereço e a porta do nosso serviço(neste caso como é tudo o padrão do MongoDB poderiamos ter usado o construtor sem parametros Mongo());

  2. Selecionamos nossa base de dados test;

  3. Selecionamos nossa Collection suaColecao.


Inserindo dados no MongoDB


A partir de agora podemos inserir/apagar/selecionar/atualizar registros na nossa Collection. Para representar nossos dados que queremos persistir no MongoDB vamos utilizar a classe BasicDBObject, para quem já utilizou a API do JSON para Java não irá sentir muita dificuldade, pois BasicDBObject é bem parecida com JsonObject.

BasicDBObject doc = new BasicDBObject();
doc.put("nome", "Breno Oliveira");
doc.put("site", "www.brenooliveira.com.br");

BasicDBObject info = new BasicDBObject();
info.put("xpto", "zapata");

doc.put("info", info);

Acredito que o código seja bem explicativo e simples, ele tem uma seguinte representação em Json:

{ "nome" : "MongoDBwise" , "

site" : "www.mongodbwise.worpress.com" , "

info" : { "xpto" : "zapata" } }

O que fizemos acima foi bem simples:

  1. Criamos uma instância de BasicDBObject;

  2. Adicionamos informações de nome e site através do método put(chave, valor);

  3. Criamos nova instância de BasicDBObejct e adicionamso novos atributos a ela;

  4. Adicionamos um BasicDBObject em outro BasicDBObject.


Agora vamos gravar esse nosso objeto no banco de dados:

coll.insert(doc);

O que fizemos foi o seguinte com a nosso DBCollection, que selecionamos junto com a conexão com o MongoDB, chamamos o métodos insert() passando como parâmetro nosso BasicDBObject no caso a variável chamada doc.

Buscando nossos dados


Após ter inserido nossos dados vamos realizar pesquisas em nosso MongoDB.  Nossa busca será realizada pelo elemento interno do nosso JSon, no caso o nó info. Na busca temos que passar como parâmetro { “info” : { “xpto” : “zapata”}} e como você já pode imaginar vamos utilizar o BasicDBObject para representar essa estrutura de JSon, o código é o seguinte:

BasicDBObject info = new BasicDBObject();
info.put("xpto", "zapata");
BasicDBObject search = new BasicDBObject();
search.put("info", info);

Criamos novamente 2 BasicDBObject e inserimos um dentro do outro, assim como fizemos para inserir os dados. Pois foi desta maneira que inserimos então desta maneira iremos buscar. Agora vamos criar o código Java para fazer a busca no MongoDB:

DBCursor cur = coll.find(search);
System.out.println(cur.count());
while(cur.hasNext()) {
System.out.println(cur.next());
}

Na nossa Collection, vamos fazer a busca chamamos o método find que nos retornará um DBCursor, depois através dele navegaremos dentre os resultados da nossa pesquisa. No caso chamamos o cur.count(); que nos devolve o total de resultados encontrados. Depois para o while apenas chamamos o hasNext() para vericar se tem um próximo resultado e então imprimimos o resultado na tela com next().

É provavel que você tenha como resposta em seu console o seguinte Json:

{ "_id" : "4bbf7e99e9c14911d1294f76" , "name" : "MongoDBwise" ,
"site" : "www.mongodbwise.wordpress.com",
"info" : { "xpto" : "zapata" } }

Você pode observar que o MongoDB adicionou um par chave/valor a mais, que é o _id que o primeiro elemento do nosso Json. Esse valor é um indice que o MongoDB usa, ele é unico para toda a collection.

0 comentários:

Postar um comentário

Blog Archive

SmarttNet Solution Provider. Tecnologia do Blogger.

Postagens populares

Twitter MongoDBBrazil

Total de visualizações de página