Ei, Pedro! Tudo bem?
Sua linha de raciocínio sobre a plicação de OLAP e OLTP em banco de dados separados está no rumo certo. Em muitos cenários de produção, realmente existe um ambiente OLTP responsável pelas operações do dia a dia e um ambiente OLAP dedicado às análises e relatórios.
Também é comum que esses ambientes utilizem tecnologias diferentes. Por exemplo, um banco NoSQL para o sistema transacional e um banco SQL ou um Data Warehouse para consultas analíticas. Eles podem estar na mesma nuvem ou em provedores diferentes, dependendo da arquitetura adotada.
E a sincronização dos dados, o objetivo é que a extração interfira o mínimo possível no ambiente OLTP. Para isso, existem algumas estratégias bastante utilizadas:
- Replica de leitura (Read Replica): as consultas para extração são feitas em uma réplica do banco, reduzindo a carga sobre a instância principal.
- CDC (Change Data Capture): captura apenas as alterações realizadas desde a última sincronização, evitando leituras completas das tabelas.
- Processamento incremental: transfere apenas os registros novos ou modificados, tornando o processo mais eficiente.
- Streaming de eventos: ferramentas como Apache Kafka permitem que os dados sejam enviados quase em tempo real para o ambiente analítico, reduzindo a necessidade de cargas periódicas.
O fluxo abaixo representa uma arquitetura bastante comum:
OLTP -> CDC -> ELT -> Data Warehouse -> OLAP
Esse fluxo representa uma arquitetura em que o OLTP continua atendendo às transações da aplicação, o CDC identifica apenas as mudanças realizadas, o processo de ELT carrega essas alterações para o Data Warehouse e o ambiente OLAP executa as consultas analíticas sem impactar o banco transacional.
Quando não há mecanismos como CDC ou streaming, muitas empresas agendam as cargas em horários de menor utilização do sistema, como durante a madrugada ou em períodos com menos acessos. Já em aplicações que exigem análises quase em tempo real, é mais comum utilizar replicação ou plataformas de mensageria para minimizar qualquer impacto no banco transacional.
Hoje, arquiteturas modernas de dados procuram evitar grandes cargas completas sempre que possível. A tendência é utilizar processos incrementais, replicação ou captura de mudanças, pois essas abordagens oferecem melhor desempenho e escalabilidade.
Conteúdos para complementar seus estudos
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!