Cargas no Data Warehouse - Total ou Incremental?

Por Diego Elias | 24 de Julho de 2014 às 06h00

Muitas são as decisões que permitem o sucesso e a qualidade de um projeto de Data Warehouse (DW). Uma dessas decisões, que veremos agora, se trata de como devemos carregar os dados nas tabelas desse grande repositório. É muito importante determinar de qual forma será a carga efetuada nas tabelas para se garantir a consistência das informações no DW. Um má decisão nessa etapa, poderá comprometer a veracidade dos dados, tornando-os com pouca ou até mesmo sem validade.

Geralmente, a carga das tabelas de Dimensões e Fatos possuem dois tipos: total ou incremental. A total, como o próprio nome diz, se trata da carga completa dos dados toda vez que há a execução de um novo processo de ETL, do inglês Extract, Transform and Load (Extração, Transformação e Carga). Nesse tipo de carga todos os dados da origem são extraídos e transformados, recarregando os dados antigos e incrementando com os novos. Já a incremental considera apenas os novos registros dos sistemas operacionais no ETL, inserindo-os ao repositório do DW.

Normalmente as tabelas de Dimensões possuem carga total. Só que, diferentemente do que ocorre nas tabelas Fatos, geralmente os dados das tabelas de Dimensões não são excluídas antes do processo de carga, pois além de serem referenciadas pelas tabelas Fatos, esses dados são “versionados” para refletir o histórico das informações (fenômeno conhecido como Slowly Changing Dimension). Por isso, geralmente, a decisão de total ou incremental tem mais pertinência quando falamos de tabelas Fatos.

Devemos entender que a carga total é mais custosa que a incremental, tanto em tempo de carga, quanto em processamento (CPU). Imagine a carga total de uma Fato que atualmente possui 500 milhões de registros? A depender dos recursos envolvidos pode durar horas ou até dias a carga dessa Fato. Porém na carga incremental é desconsiderados toda a montanha de dados retroativos da origem e é inserido apenas os novos registros na Fato, reduzindo assim o tempo de carga. Por isso só devemos utilizar carga total quando não for viável a carga incremental.

Para uma Fato ser candidata a carga total, devemos verificar a frequência de alteração nos dados do sistema transacional, já que as mudanças nos dados da fonte podem deixar inconsistentes os dados do DW. Confirmando a necessidade de carga total (não incremental), significa que sempre que for necessário acrescentar um novo conjunto de dados, deve-se, normalmente, apagar toda a estrutura da tabela Fato e carregar os dados antigos junto com os novos.

Não é uma regra geral como deverá ser o carregamento das tabelas do DW e sim um decisão específica de cada projeto. Devemos analisar cada um e avaliar qual a melhor alternativa, ponderando o melhor custo/benefício para a solução. Questões como tempo de carga, custo de processamento e frequência de atualização do transacional, como falamos anteriormente, devem ser levados em consideração. Só não podemos negligenciar esses fatores e arriscar a consistência das informações que serão utilizadas para a tomada de decisão.

Fique por dentro do mundo da tecnologia!

Inscreva-se em nossa newsletter e receba diariamente as notícias por e-mail.