Persistência poliglota: Introdução básica e exemplo de utilização
- #NoSQL
- #MongoDB
- #Banco de dados relacional
O que me motivou a escrever esse artigo, foi alguns temas do tipo: Banco relacional x NoSQL. E neste artigo, quero abordar um tema onde não existe um "x" entre os dois modelos e sim um "+" e que é conhecido como ambiente híbrido ou persistência poliglota.
Na persistência poliglota é utilizado um comportamento híbrido para persistir os dados. A principal ideia é utilizar bancos de dados especializados, tanto modelo relacional quanto NoSQL, para diferentes propósitos dentro de uma mesma aplicação web. A escolha dessa abordagem visa selecionar o melhor armazenamento de dados para um determinado propósito e/ou tipo de dados.
Nesse ambiente híbrido, pode-se combinar um ou mais banco de dados relacionais ou uma combinação de armazenamento de dados relacionais e NoSQL.
Para exemplificar, podemos pensar em um aplicativo para e-commerce, o qual, utilizando-se da persistência poliglota pode utilizar:
- Um banco de dados para vitrine ou catalogo de produtos, orientado a Documentos, MongoDB por exemplo, aplicando o Embedded Pattern*, e assim armazenar todos os dados que a aplicação utiliza para apresentar um produto, dentro de um único documento;
- E para diminuir as consultas no local de armazenamento primário de dados, que é o disco, adicionar uma camada de cache com Redis, por exemplo. Desta forma, o Redis será responsável por fazer o armazenamento de dados na memória com durabilidade opcional;
- Ainda, é possível dentro desse modelo, utilizar um banco de dados relacional para as transações de Pedidos, Pagamentos etc. Ou seja, uma armazenamento tradicional em conformidade com ACID(Atomicidade, Consistência, Isolamento e Durabilidade).
Esse é um exemplo de um ambiente de banco de dados híbrido. Claro que, existem vários pontos a serem observados nesse modelo e assim como vantagens, também existem desvantagens. O importante é obter o conhecimento e analisado os riscos e benefícios, escolher o melhor modelo.
A seguir é apresentado a modelagem de dados que foi abordada no artigo referente ao Embedded Pattern, somente para exemplificar como ficaria essa estrutura. Esse é um tema que irei abordar futuramente também.
*Embedded Pattern
Modelo de dados Catalogo Produtos de um e-commerce utilizando cache:
Relacional
Não relacional (Embedded Pattern)
Espero que tenha contribuído e ajudado no entendimento desse modelo de ambiente.
Até mais!
Alexandre Ladeira Silva
Fontes:
https://www.infoq.com/articles/data-model-mongodb/
https://blog.eisele.net/2012/11/polyglot-persistence-eclipselink-with.html
https://www.techtarget.com/searchapparchitecture/tip/The-basics-of-polyglot-persistence-for-microservices-data?