Por que eu devo ler este artigo:Este artigo é útil para arquitetos e programadores que projetam/implementam sistemas que manipulam grandes volumes de dados e necessitam de escalabilidade e performance mantendo a qualidade do código.

Levando em consideração esse cenário, primeiramente o artigo irá apresentar as principais características dos Bancos de Dados NoSQL, em especial o MongoDB, e suas vantagens em comparação com os bancos de dados relacionais para alguns problemas específicos.

Como principal objetivo do artigo, será ensinado como implementar aplicações Java com MongoDB utilizando o framework ODM (Object Document Mapping) Morphia, que se propõe a facilitar as operações de inserção, atualização, remoção e consulta de documentos em coleções de bases de dados MongoDB.

O Modelo de Dados Relacional é uma ferramenta de modelagem de dados que desde a década de 70 vem sendo adotado pelas empresas para resolver todo tipo de problema de armazenamento e manipulação de dados.

A principal característica desse modelo está na responsabilidade de manter a integridade dos dados através da utilização de chaves primárias (primary keys), chaves estrangeiras (foreign keys), tipos de dados (varchar, char, number, blob, etc.) e, principalmente, a necessidade de garantir as propriedades ACID, acrônimo de Atomicidade, Consistência, Isolamento e Durabilidade.

A implementação de modelos relacionais é feita através dos SGBDRs (Sistemas Gerenciadores de Bancos de Dados Relacionais), que passaram a ser utilizados em grande escala pelas empresas por oferecerem como principais recursos o controle de transações, a integridade dos dados, otimização de consultas e utilização da linguagem SQL como padrão para consulta e manipulação de dados.

No entanto, levando em consideração o cenário apresentado de aumento no volume de dados gerados e no número de usuários por aplicação, os SGBDRs têm se mostrado ineficientes quanto à necessidade de uma melhor performance e extremamente complexos no que se refere à configuração de escalabilidade em aplicações em ambientes clusterizados, sem citar os custos cobrados por parte dos fornecedores, que aumentam significativamente.

Outro problema presente em aplicações que fazem uso de bancos de dados tradicionais é a incompatibilidade entre o paradigma relacional e o orientado a objetos.

Nestes bancos os dados são organizados em uma estrutura de tabelas, enquanto a aplicação normalmente adota o paradigma orientado a objetos. Com isso, torna-se necessário realizar uma conversão para representar e mapear as informações do banco de dados na aplicação, e para tal tarefa, utilizamos frameworks ORM (Object Relational Mapping), dentre os quais destacamos JPA e Hibernate.

Como solução para os problemas citados, este artigo apresenta, primeiramente, os bancos de dados NoSQL. Em seguida, daremos mais espaço ao MongoDB, uma solução NoSQL indicada principalmente para aplicações que necessitam de alta performance e manipulam grandes volumes de dados. Relacionado ao MongoDB, apresentaremos também o Morphia, um framework ODM (Object Document Mapping) que é utilizado para facilitar a implementação de funcionalidades em aplicações Java como inserção, atualização, remoção e consulta a documentos no MongoDB

Na prática, iremos abordar a implementação de um sistema exemplo, onde serão demonstrados os recursos do framework Morphia. Para isso, dado um modelo de domínio, inicialmente faremos o mapeamento das suas entidades para documentos do MongoDB utilizando as anotações da API do framework.

Na sequência, serão implementadas as funcionalidades de conexão, inserção, atualização, remoção e buscas no banco de dados, e, por fim, as testaremos e validaremos através de testes de integração.

Bancos de dados NoSQL

Por conta das limitações apresentadas pelos bancos de dados tradicionais, projetistas e arquitetos iniciaram estudos para a criação de um tipo de banco de dados que fornecesse uma alternativa às soluções relacionais e apresentasse como principais características:

· Alta performance;

· Escalabilidade;

· Facilidade em manipular grandes volumes de dados;

· Simplicidade na criação de clusters.

O resultado desses estudos foi a criação dos bancos de dados denominados de NoSQL, ou Not Only SQL. Esse termo começou a ser utilizado a partir de uma reunião realizada no dia 11 de junho de 2009, em São Francisco, Estados Unidos, organizada pelo desenvolvedor Johan Oskarson, tendo como foco bancos de dados não relacionais, distribuídos e open source.

Johan queria um nome para a reunião que fosse curto, fácil de lembrar e que se tornasse uma boa hashtag para o Twitter. Foi indicado então, através do canal #cassandra do IRC, que a reunião se chamasse “NoSQL”, sugestão feita por Eric Evans, desenvolvedor da Rack Space – sem ligação com Eric Evans criador do DDD.

Os Bancos de Dados NoSQL trazem como principais características a não utilização do modelo de dados relacional, facilidade na escalabilidade horizontal, código fonte aberto, fácil configuração em ambientes clusterizados, não possuem esquema (o que possibilita a adição de novos campos aos registros sem ter que fazer qualquer mudança na estrutura) e a não utilização da linguagem SQL para consultas e manipulação de dados, apesar de algumas opções possuírem uma linguagem de consulta bem parecida, com o objetivo de facilitar ...

Quer ler esse conteúdo completo? Tenha acesso completo