MongoDB Pipeline de Agregação
Um exemplo prático de uso do Aggregation Pipeline
Performance, buscas complexas, unir documentos, agrupar dados, essas são só as principais vantagens de se utilizar o Aggregation Framework do MongoDB.
O Aggregation Framework é um grupo de ferramentas analíticas do MongoDB, que executa operações de análises, relatórios/consultas em documentos de ao menos uma collection. Essencialmente, as operações processam os registros dos dados e retornam os resultados computados. O MongoDB conta com três maneiras de implementar agregação: Métodos de Agregação de Propósito Único; Map-Reduce e Pipeline de Agregação.
Neste artigo será apresentado um caso de uso real onde implementamos na prática a forma Pipeline de Agregação.
Para mais informações sobre o MongoDB Aggregation Framework acesse a documentação.
Pipeline de Agregação
Como o próprio nome já diz, esta forma de implementar agregação baseia-se no conceito de pipeline. Significa que o processo de execução passa por estágios pré-definidos antes de retornar o resultado final. É importante ressaltar que a ordem desses estágios é relevante, pois o documento de saída de cada estágio se torna o documento de entrada do estágio consecutivo.
Exemplo prático
O exemplo a seguir é uma task backend implementada para um aplicativo. Apresentarei uma breve descrição de uma das regras de negócios implementadas, assim como o modelo da estrutura de dados no MongoDB. Em seguida, trechos dos códigos da solução.
Regra de negócio: buscar ofertas por proximidade
Considerar apenas ofertas de estabelecimentos em um raio de 10km. Filtrá-las de acordo com as seguintes condições: flag ativo ‘true’, com status ‘ativada’ e dentro do prazo de vigência. Agrupá-las por estabelecimento. Ordená-las por distância do usuário. Paginar usando valor parametrizado. Por fim, retornar os grupos de ofertas.
Modelo de dados
Query Aggregate
Inicialmente criei uma query com todos os estágios descritos na regra de negócio com finalidade de testar a possível solução.
Execução do teste da pipeline de agregação citado
Implementação da solução
A implementação foi feita usando Java, pois já era a linguagem usada no backend do aplicativo. Utilizamos mongo-java-driver para abstrair conexões e recursos do MongoDB.
Conclusão
Este artigo é um caso de uso prático que resolve um problema específico, mas vale lembrar que a ferramenta (Aggregation Framework/AF) com suas formas de implementação servem para resolver diversos tipos de problemas, dos mais simples aos complexos.
É importante frisar que o sistema de queries tradicional do MongoDB não atenderia a tarefa exemplificada no artigo, pela complexidade descrita nas regras.
Com base no que foi apresentado constatamos que o uso da Pipeline de Agregação nos mostrou ser muito útil, atendendo as expectativas esperadas ao resolver um problema real. A grande vantagem no uso da ferramenta foi a performance.
Como mostrado, o Aggregation Framework nos permitiu implementar de forma rápida uma busca complexa, ordenando e agrupando dados e tendo resultados performáticos.
Dúvidas, críticas, sugestões… deixe um comentário :)