Deste modo, ele é útil para desenvolvedores que desejam conhecer uma opção NoSQL e adotá-la em soluções web. Além disso, abordaremos como integrar o MongoDB ao iReport para a construção e apresentação de relatórios nestas soluções.
A quantidade de informações a armazenar cresce de forma exponencial a cada dia. Neste cenário, para que seja possível viabilizar a persistência de tanto conteúdo, é necessário que existam soluções capazes de lidar com esses grandes volumes de dados, atualmente gerados por milhões de usuários.
Para tanto, devido às grandes limitações encontradas em bancos de dados relacionais para lidar com quantidades massivas de dados, corporações como o Google, Amazon, Facebook, entre outras, lideram pesquisas para o desenvolvimento de soluções não relacionais, mais popularmente conhecidas como NoSQL, com o intuito de construir opções que não possuam tais restrições.
A estrutura flexível proporcionada pelo modelo não relacional possibilita aos administradores de bancos de dados maior praticidade com a escalabilidade, o que, dentre outros fatores, tem sido um dos que mais atraem as empresas a aderirem a este modelo.
Como um exemplo, a Globo.com, responsável pelo fantasy game CartolaFC, que já possui mais de dois milhões de usuários, optou pela adoção do banco de dados MongoDB com o intuito de obter alta performance e disponibilidade.
Dentre algumas das vantagens de se utilizar o NoSQL, podemos destacar:
· A capacidade de armazenar e processar grandes quantidades de dados;
· Maior praticidade com a escalabilidade;
· Possui diversos bancos de dados gratuitos, sendo os mais populares o MongoDB, HBase e Apache Cassandra.
Como desvantagem, vale ressaltar a enorme dificuldade em encontrar profissionais que estejam aptos a trabalhar com NoSQL. Por ser uma tecnologia nova, grande parte dos especialistas com experiência em bancos relacionais possui conhecimento limitado a respeito das soluções NoSQL.
Dito isso, aprenderemos neste artigo que não há nenhuma grande complicação ao utilizar um banco não relacional.
Para tanto, vamos implementar uma aplicação JSF que possui um formulário de cadastro e utilizar o MongoDB como ferramenta para viabilizar a persistência dos dados. Em seguida, pensando em enriquecer ainda mais o exemplo, para exibir os dados armazenados vamos construir um relatório com a ferramenta iReport.
Ressaltamos que a intenção do artigo não é comparar o modelo não relacional com o modelo relacional, que por mais de quarenta anos tem sido a principal opção para o armazenamento de dados, mas sim demonstrar algumas características do banco de dados não relacional MongoDB e seu uso em uma aplicação JSF com relatórios JasperReports.
Sobre o MongoDB
O MongoDB é um dos vários bancos de dados criados nos últimos anos sob o conceito de bancos orientados a documentos. Este conceito tem como principal característica utilizar uma estrutura baseada em coleções e documentos para armazenar os dados.
Assim, ao contrário dos bancos de dados relacionais, onde trabalhamos com tabelas, neste modelo lidamos com coleções. A Tabela 1 traz uma comparação dos termos utilizados no modelo relacional e no MongoDB.
Como um dos grandes diferenciais, destaca-se que no modelo relacional é sugerido que a redundância de dados seja evitada, pois os relacionamentos entre entidades são uteis justamente para evitar a redundância de informações.
Já no MongoDB ocorre exatamente o contrário: não existem relacionamentos e com isso a redundância de informações é incentivada.
Deste modo, em um documento devem estar todas as informações do elemento persistido, mesmo que elas sejam redundantes. Isto evita a necessidade de realizar joins para obter as informações em uma coleção, o que resulta em ganho de performance.
SQL - Termos e Conceitos |
MongoDB - Termos e Conceitos |
DATABASE |
DATABASE |
TABLE |
COLLECTION |
ROW |
DOCUMENT |
COLUMN |
FIELD |
INDEX |
INDEX |
Tabela 1. Comparação dos conceitos SQL e MongoDB.
Sobre o JasperReports e iReport
O JasperReports é uma biblioteca open source utilizada para a geração de relatórios na plataforma Java. Como grande vantagem, fornece o recurso de exportar os relatórios em diversos tipos de arquivos, como PDF, XML e XLS.
Além disso, é possível agrupar outros relatórios em um único com a opção de criação de sub-relatórios para melhor organizar as informações.
Outra característica interessante é a possibilidade de trabalhar com diversos bancos de dados que permitem efetuar conexões via JDBC, incluindo bancos não relacionais, como MongoDB e HBase.
Com a utilização do JasperReports, toda a estrutura de um relatório é definida em um arquivo XML, geralmente com a extensão .jrxml. Desta forma, permite ao desenvolvedor realizar modificações diretamente no código fonte do relatório, caso seja de sua preferência.
Já o iReport é uma ferramenta gráfica utilizada para a elaboração de relatórios que utilizam a biblioteca JasperReports. Esta ferramenta fornece diversos componentes que possibilitam a redução do tempo para desenhar os relatórios como, por exemplo, subreports, charts, barcodes, etc. Ademais, o iReport também disponibiliza diversos templates, que podem ajudar e poupar o tempo do desenvolvedor.
A aplicação exemplo
No decorrer do artigo, como já mencionado, apresentaremos o desenvolvimento de uma aplicação MVC com JavaServer Faces e MongoDB. Para isso, construiremos um formulário simples com o intuito de cadastrar informações de venda de produtos.
Pensando na exibição de tais informações, será demonstrado como recuperar dados do MongoDB e criar um relatório com iReport, quando abordaremos também o uso de alguns dos seus vários componentes, como o subreport.
Criando a aplicação
Para iniciar a implementação d ...