Eu sou um programador preguiçoso! Esse foi um detalhe importante que aprendi com o Roelant Vos em seu treinamento na semana passada. Mas havia muitos outros tópicos interessantes. Um resumo pessoal de uma aula de 3 dias sobre Data Warehouse Design Patterns.
A semana passada tive a oportunidade de participar da aula Data Warehouse Design Patterns de Roelant Vos. Eu vi Roelant em apresentações sobre conferências de modelagem de dados, e aprecio seu blog com muitas informações úteis sobre arquitetura de Data Warehouse e implementação de Data Vault. Então, quando recebi as informações dos meus colegas da Trivadis que ele dará um treinamento em Zurique, aproveitei a oportunidade para participar desta aula de 3 dias.
Não vou escrever uma revisão detalhada de todo o curso neste post do blog. Mas nas linhas seguintes você encontrará algumas notas sobre três tópicos que foram – do meu ponto de vista – importantes neste treinamento: Design Baseado em Padrões, Área de Estágio Persistente e Data Warehouse Virtual.
Uma arquitetura típica de data warehouse consiste em múltiplas camadas para carregar, integrar e apresentar informações de negócios de diferentes sistemas-fonte. O número e os nomes das camadas podem variar em cada sistema, mas na maioria dos ambientes os dados são copiados de uma camada para outra com ferramentas ETL ou instruções SQL puras. Com uma boa arquitetura, os padrões para transformar e carregar os dados em uma camada em particular são sempre semelhantes. Isso facilita (e acelera) o desenvolvimento dos processos ETL, pois os padrões repetíveis podem ser gerados com a ferramenta de automação de data warehouse (DWA). No blog do Roelant, uma visão geral do seu Data Integration Framework pode ser encontrada. Exemplo de código estão disponíveis em GitHub.
Por que sou um programador preguiçoso? Como muitos outros desenvolvedores, eu não gosto de escrever código repetitivo. Roelant é um programador preguiçoso, também. É por isso que ele gastou muito tempo para desenvolver ferramentas e métodos para acelerar as tarefas de desenvolvimento, gerando o código SQL para construir e carregar data warehouses. Durante o curso, ele explicou muitos padrões de design com o gerador SQL VDW (Virtual Data Warehouse). Ele pode ser baixado de seu site gratuitamente e é útil para protótipos rápidos e testes de regressão de mudanças de padrões.
Área de Estadiamento Persistente
Uma camada importante na arquitetura proposta é o PSA (Persistant Staging Area). Embora esta área da camada de encenação seja opcional, ela é muito prática e altamente recomendada, especialmente quando os requisitos do negócio ainda não estão claros no início do projeto. O PSA é um arquivo histórico dos dados dos sistemas de origem e substitui a clássica área de encenação volátil. O PSA é carregado ou com mecanismos CDC (Change Data Capture) ou com uma detecção delta entre o sistema fonte e a versão atual do PSA. A Área de Estadiamento Persistente é a fonte exclusiva para carregar as tabelas Data Vault (Hubs, Links e Satélites) na camada de integração.
A vantagem de uma Área de Estadiamento Persistente é que apenas as partes atualmente necessárias das informações têm que ser carregadas nas tabelas Data Vault. Não temos que nos preocupar com requisitos futuros, porque os dados originais ainda estão disponíveis no PSA e podem ser recarregados quando forem necessários. Tenho visto e utilizado esta abordagem em vários projectos de clientes, e é um bom seguro contra requisitos de negócio desconhecidos.
Virtual Data Warehouse
Quando vi Roelant Vos pela primeira vez na conferência Data Modeling Zone 2017 em Düsseldorf, fiquei muito impressionado com uma abordagem de arquitectura interessante que ele explicou: A única camada persistente de um data warehouse é o PSA, e tudo o resto é implementado em cima das tabelas do PSA com vistas. Esta é a implementação consistente de um Data Warehouse Virtual que é suportado pelo software VDW da Roelant. Tenho visto isto em teoria e em algumas apresentações, mas nunca em sua forma completa em um projeto real.
Esta abordagem “NoETL” tem várias vantagens: 1. É muito fácil mudar a lógica de transformação sem recarregar todas as camadas do seu data warehouse. 2. Assim que novos dados são carregados na camada PSA, eles são imediatamente visíveis em todas as camadas subsequentes. 3. É uma espécie de armazém de dados esquema a esquema onde se pode decidir no momento da consulta como os dados de origem devem ser interpretados. Tudo isso soa muito bem, mas eu ainda vejo o desafio de um bom desempenho da consulta. Eu acho que, na maioria das situações, pelo menos os dados comumente usados devem ser persistidos. Mas com a abordagem view, isto pode ser feito sem muito esforço, por exemplo com views materializadas.
O curso de 3 dias tem mais do que cumprido as minhas expectativas. Embora eu mesmo já tenha usado alguns dos conceitos (para ser honesto, a maior parte do que Roelant explicou já me era familiar), eu realmente gostei da construção passo a passo de uma arquitetura de data warehouse usando muitos exemplos de código e demos ao vivo. Ou, como eu disse, como feedback espontâneo no final do curso: “Foi divertido”.