Automatizar Carregamento de Dados em um Data Warehouse Usando um Aplicativo sem Servidor

O Oracle Functions é uma plataforma do Functions-as-a-Service sem servidor, altamente escalável e totalmente gerenciada, criada no Oracle Cloud Infrastructure e com o mecanismo Fn Project de código aberto. Os desenvolvedores podem usar o Oracle Functions para criar e implantar código que gere valor comercial sem se preocupar com provisionamento ou gerenciamento da infraestrutura subjacente. O Oracle Functions é nativo do contêiner com funções empacotadas como imagens de contêiner do Docker.

Arquitetura

Esta arquitetura de referência mostra como usar uma função sem servidor para automatizar o processo de extração de dados de arquivos gerados por vários bancos de dados ou aplicativos e carregar os dados em um data warehouse para análise.

O diagrama da arquitetura mostra o fluxo de dados. Quando os arquivos CSV compactados são submetidos a upload para um bucket específico no Oracle Cloud Infrastructure Object Storage, o serviço Eventos é acionado. O evento emitido chama uma função, que extrai os dados dos arquivos submetidos a upload e carrega os dados em uma instância do Oracle Autonomous Data Warehouse. Após o carregamento dos dados no data warehouse, os arquivos CSV processados são movidos para outro bucket no Oracle Cloud Infrastructure Object Storage.

Veja a seguir a descrição da ilustração autoload-adw.png
Descrição da ilustração autoload-adw.png

carregamento automático-adw-oracle.zip

A arquitetura tem os seguintes componentes:

  • Região

    Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominados domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou mesmo continentes).

  • Domínios de disponibilidade

    Os domínios de disponibilidade são data centers independentes e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, o que fornece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou resfriamento ou a rede interna de domínios de disponibilidade. Portanto, uma falha em um domínio de disponibilidade provavelmente não afetará os outros domínios de disponibilidade na região.

  • Rede virtual na nuvem (VCN) e sub-redes

    Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes de data center tradicionais, as VCNs permitem controle total sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você poderá alterar após criar a VCN. Você pode segmentar uma VCN em sub-redes, que podem ter como escopo uma região ou um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não são sobrepostos com as outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.

    Nesta arquitetura de referência, a função é implantada em uma sub-rede regional privada.

  • Eventos e Funções

    Os serviços do Oracle Cloud Infrastructure emitem eventos, que são mensagens estruturadas que descrevem as alterações em recursos. Os eventos são emitidos para operações CRUD (Create, read, update ou delete), alterações no estado do ciclo de vida de recursos e eventos do sistema que afetam os recursos da nuvem.

    O Oracle Functions permite que você implante seu código, chame-o diretamente ou acione-o em resposta a eventos. O Oracle Functions usa contêineres Docker hospedados no Oracle Cloud Infrastructure Registry.

    Nesta arquitetura, quando é feito upload de um arquivo para um bucket no Oracle Cloud Infrastructure Object Storage, um evento é emitido. O evento chama uma função baseada em Python, que extrai dados do arquivo e os carrega para o Oracle Autonomous Data Warehouse. O arquivo processado é movido para outro bucket.

  • Armazenamento de objetos

    O armazenamento de objetos fornece acesso rápido a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados analíticos e conteúdo avançado, como imagens e vídeos. Você pode armazenar com segurança e recuperar dados diretamente da internet ou de dentro da plataforma de nuvem. Você pode dimensionar o armazenamento sem afetar qualquer degradação no desempenho ou na confiabilidade do serviço. Use o armazenamento padrão para armazenamento "dinâmico" necessário para acessar rapidamente, imediatamente e com frequência. Use o armazenamento de arquivos compactados para o armazenamento "frio" que você mantém por longos períodos de tempo e raramente ou raramente acessa.

  • Autonomous Data Warehouse

    O Oracle Autonomous Data Warehouse é um serviço de banco de dados independente, com autoproteção e autorreparo otimizado para cargas de trabalho de data warehousing. Não é necessário configurar ou gerenciar nenhum hardware ou instalar qualquer software. O Oracle Cloud Infrastructure controla a criação do banco de dados, bem como o backup, a aplicação de patches, a atualização e o ajuste do banco de dados.

Recomendações

Os requisitos podem diferir da arquitetura descrita aqui. Use as recomendações a seguir como ponto de partida.

  • VCN

    Quando você cria uma VCN, determine o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que você planeja anexar a sub-redes na VCN. Use blocos CIDR que estejam dentro do espaço de endereço IP privado padrão.

    Selecione blocos CIDR que não se sobreponham a nenhuma outra rede (no Oracle Cloud Infrastructure, seu data center local ou outro provedor de nuvem) para a qual você pretende configurar conexões privadas.

  • Funções

    A função usada nesta arquitetura de referência é codificada usando Python. O Oracle Functions suporta Java, Node, Go e Ruby também. Use uma linguagem de programação da sua escolha.

  • Oracle Autonomous Data Warehouse

    Na arquitetura de referência, a função acessa o data warehouse usando o Simple Oracle Document Access (SODA). Você pode implementar outros métodos de acesso, como SQL com cx_oracle e bibliotecas do Oracle Client, modificando a função.

    Na arquitetura de referência, a função e o data warehouse estão na mesma sub-rede. Você pode implantá-los em sub-redes separadas, se necessário.

Considerações

  • Escalabilidade
    • Banco de Dados

      Você pode dimensionar manualmente o número de núcleos de CPU do banco de dados para cima ou para baixo a qualquer momento. O recurso de dimensionamento automático de bancos de dados autônomos permite que o seu banco de dados use até três vezes o número base atual de núcleos de CPU a qualquer momento. À medida que a demanda aumenta, o dimensionamento automaticamente o número de núcleos em uso. Os bancos de dados autônomos permitem que você dimensione a capacidade de armazenamento a qualquer momento sem afetar a disponibilidade ou o desempenho.

    • Funções

      O Oracle Functions cria e remove contêineres de funções automaticamente com base no carregamento da solicitação. Você paga somente quando as funções forem chamadas e durante a execução.

  • Segurança
    • Use as políticas do Oracle Cloud Infrastructure Identity and Access Management (IAM) para controlar quem pode acessar seus recursos na nuvem e quais operações podem ser executadas.

      Você pode atribuir somente permissões de invocação de função ou ambas permissões de gerenciamento de função e de invocação de função a grupos específicos.

      Você pode usar políticas do IAM para também controlar o acesso do Oracle Functions ao Oracle Cloud Infrastructure Object Storage.

    • No Oracle Cloud Infrastructure Object Storage, a criptografia é ativada por padrão e não pode ser desativada.
    • Esta arquitetura de referência mostra o data warehouse e a função na mesma sub-rede. Para isolamento aprimorado, você pode usar uma sub-rede separada para o data warehouse.
    • Para proteger as senhas do banco de dados ou quaisquer outros segredos, considere o uso do serviço Oracle Cloud Infrastructure Vault.

Implantar

O código do Terraform para esta arquitetura de referência está disponível no GitHub. Você pode colocar o código no Oracle Cloud Infrastructure Resource Manager com um único clique, criar a pilha e implantá-la. Como alternativa, faça download do código do GitHub para o seu computador, personalize o código e implante a arquitetura usando a interface de linha de comando (CLI) do Terraform.

  • Implante usando o Oracle Cloud Infrastructure Resource Manager:
    1. Clique em Implantar no Oracle Cloud

      Se você ainda não estiver conectado, informe a tenancy e as credenciais do usuário.

    2. Examinar e aceitar os termos e condições.
    3. Selecione a região na qual você deseja implantar a pilha.
    4. Siga os prompts na tela e as instruções para criar a pilha.
    5. Após criar a pilha, clique em Ações do Terraform e selecione Planejar.
    6. Aguarde a conclusão do job e revise o plano.

      Para fazer alterações, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute a ação Plano novamente.

    7. Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.
  • Implante usando a CLI do Terraform:
    1. Vá para GitHub.
    2. Faça download do código ou clone-o no computador local.
    3. Siga as instruções no arquivo README.

Alterar Log

Este log lista apenas as alterações significativas: