Deploy de Data Warehouses on premise e na cloud

Oracle DB e Amazon Redshift

Bruno Katekawa
6 min readDec 9, 2020

Introdução

Neste post vou contar de forma resumida e passando pela etapas de um projeto de implementação de data warehouse on premise — com o Oracle DB 19c e depois passarei pelas etapas da implementação em cloud — com o Amazon Redshift.

O conteúdo que vou expor é o que aprendi no curso de Design e Implementação de Data Warehouses da Data Science Academy da Formação Engenheiro de Dados.

Ferramentas e Ambiente

On Premise

Nessa implementação, construímos uma máquina virtual para servir de guest em uma máquina host.

  • Host: MacBook Pro, 2.8GHz Quad-core Intel Core i7, 16 GB RAM, 250 GB SSD.
  • Guest: VM com RedHat Enterprise Linux 8 (64-bit), 4 processadores, 8 GB RAM, alocação de espaço em disco dinâmica. Virtualizado pelo Oracle VirtualBox 6.1.16.
  • Banco de dados: Oracle 19c
  • IDE de banco de dados: Oracle SQL Developer 20.2.0
  • IDE de integração de dados: Pentaho 9.1
  • Ferramenta de Self Service BI: Tableau Desktop

Cloud

  • Amazon Redshift
  • Amazon S3
  • Ferramenta de banco de dados: SQL Workbench/J

Workflow de projeto

Apresento abaixo o workflow de projeto que seguimos em ambas implementações.

Entendimento do problema de negócios

Esse é a etapa inicial de todo projeto, não só de implementações de DWs como também de outros projetos, seja ele de UX, Data Science, Marketing, Web Development, etc. Estamos resolvendo um problema de negócio que tem como fim trazer valor, tornando-o mais eficiente e ser capaz de fornecer melhores produtos e serviços aos seus cliente e, consequentemente, aumentar os lucros da empresa.

Modelagem de Negócios

Ao entendermos os aspectos de negócios, podemos mapear seus processos, suas regras, criticidade, recursos e, assim, priorizar o que vamos fazer primeiro no projeto.

Modelagem Lógica

Fazemos os diagramas de entidades e relacionamentos entre elas — o Modelo Entidade Relacionamento (MER).

Diagrama feito na ferramenta StarUML. Créditos: DSA.

Modelagem Dimensional

Fazemos os diagramas que podem representar um Star Schema ou um Snowflake Schema.

Diagrama feito na ferramenta StarUML. Créditos: DSA.

Modelagem Física

Criamos, de fato, as tabelas e seus relacionamentos no banco de dados.

Extração, Transformação e Carga de Dados (ETL)

Extraímos os dados das fontes e os transformamos, ou seja, fazemos a limpeza e eliminamos inconsistências para garantirmos a qualidade dos dados que serão carregados no DW.

Deploy do DW e Conexão com Ferramentas de BI

Entregamos o DW em produção para que possa ser utilizado pelo time de negócios e também podemos conectar ferramentas de BI como o Tableau ou o Microsoft Power BI.

Rollout

Podemos fazer a passagem de bastão para quem vai manter o DW, orientar sobre possíveis erros que podem ocorrer e como podem ser resolvidos e finalizamos o projeto.

Premissas

Nos projetos, assumimos que as fontes de dados (schema: SOURCE) é um banco de dados no qual nós mesmos criamos as tabelas e preenchemos com dados fictícios.

No projeto da cloud, já assumimos que a limpeza dos dados foi feita e agora queremos apenas carregar os dados no data warehouse — Amazon Redshift.

Implementação On Premise

Entendimento de negócio e modelagem

Para o projeto desenhamos um cenário onde uma loja de produtos eletrônicos focado em varejo precisa ter uma visão de suas vendas, seus produtos mais vendidos e retorno de cada venda para que consigam tomar uma decisão estratégica para o próximo trimestre. Dessa forma, ao implementarmos um data warehouse e conectarmos ferramentas de BI a ele pode ajudar a empresa nesse desafio.

Fizemos as quatro modelagens: negócios, lógica, dimensional e física.

Preparação do ambiente

Como mencionado anteriormente sobre as ferramentas e ambiente, construímos uma máquina virtual usando o Oracle VirtualBox e nela instalamos o SO RedHat Enterprise Linux 8.

Oracle VirtualBox

Depois instalamos o nosso servidor de banco de dados Oracle 19c e o Oracle SQL Developer.

Oracle SQL Developer

Criação dos usuários e permissões

O mais recomendado é que tivéssemos três servidores cada um com seu respectivo banco de dados — fonte dos dados, staging e DW e usuários, mas devido a limitações de hardware do nosso contexto, seguimos criando três schemas diferentes cada um com seu respectivo usuário.

ETL

Criamos as tabelas no STAGE (staging area) e fizemos a extração dos dados do SOURCE (fonte de dados). É nesse momento que fizemos de duas formas: uma foi usando script SQL e rodando ele no SQL Developer e a outra foi usando o Pentaho para fazer essa integração.

Pentaho com o fluxo de extração de dados.

Com os dados na área de staging, podemos fazer a parte de transformação. Olhando a tabela de cadastro de clientes, verificamos que há uma inconsistência na coluna EMAIL_CLIENTE.

Créditos dos dados: DSA.

Executamos as devidas correções, fazendo a limpeza dos dados em SQL.

Para a carga, passamos o modelo dimensional (FATO-DIMENSÃO) para o modelo físico no banco de dados do data warehouse e transportamos os dados do STAGE para DW.

Conectando ferramentas ao DW

Nesse projeto, conectamos o Tableau Desktop ao nosso DW.

Conectando Tableau Desktop ao DW.

Implementação na cloud

Como já passamos por todas as etapas de entendimento do problema de negócios e modelagens no projeto anterior, a implementação no Amazon Redshift foi mais focada na ferramenta e seus recursos.

Arquitetura

Nessa implementação, como queríamos explorar mais a ferramenta, montamos uma arquitetura bem simples.

Criando o cluster

Criamos um cluster (dc2.large) no free-tier de 2 meses da Amazon Redshift e uma IAM Role que poderá acessá-lo para fazermos as operações. Além disso, configuramos a VPC para receber conexões inbound a partir da nossa máquina local.

Cluster no Amazon Redshift.

Depois, no SQL Workbench/J, conectamos ao nosso cluster e executamos nossos scripts SQL para criar as tabelas no DW.

SQL Workbench/J para criação das tabelas no DW.

Carregando os dados

Criamos um bucket no Amazon S3 (arquivos csv, gz e json) e carregamos os dados nele. Depois, no SQL Workbench/J, executamos os comandos de carga para popular as nossas tabelas no DW a partir dos dados que estavam no S3.

Arquivos no Amazon S3.

Conectando ferramentas ao DW

Nesse projeto, conforme arquitetura, conectamos o Power BI ao nosso DW no Amazon Redshift.

Conectando o Power BI ao DW e exibindo os dados.

Considerações finais

Quando finalizamos as duas implementações, conseguimos comparar o esforço de cada uma. Na on premise, tivemos bastante trabalho (dias) de montar o servidor, instalar as ferramentas, configurá-las, criar os usuários e conceder as permissões. Já na cloud, o trabalho foi menos intenso (horas) para criar o cluster no Redshift, dar permissões, subir os arquivos no S3 e fazer as cargas. Claro, não houve a fase de transformação, mas acredito que só do fato de não ter tido o trabalho de montar o servidor e instalar as ferramentas e configurá-las, poupou bastante tempo de trabalho.

Além disso, o Amazon Redshift e Amazon S3 possuem paineis nos quais você consegue facilmente monitorar a saúde tanto do cluster quanto dos buckets, o que facilita muito a nossa vida.

E é isso! Espero que tenha curtido e que esse artigo tenha te dado uma luz sobre as duas formas de implementação de data warehouses!

Fique à vontade para me encontrar no LinkedIn para batermos um papo!

Muito obrigado!

--

--

Bruno Katekawa
Bruno Katekawa

Written by Bruno Katekawa

Specialist in designing delightful and memorable experiences. I talk about Design, Business and Entrepreneurship.

No responses yet