Implementar o Serviço OCI Functions para Atualizar uma Tabela NoSQL do Oracle no Upload para o OCI Object Storage
Arquitetura nativa da nuvem, orientada a eventos e sem servidor é uma abordagem para criar e implantar aplicativos que aproveitam recursos e serviços de computação em nuvem para maximizar a escalabilidade, a eficiência e a flexibilidade.
Essa arquitetura de referência demonstra a integração perfeita do Oracle Cloud Infrastructure Events e do OCI Functions para atualizar automaticamente as tabelas do Oracle NoSQL Database Cloud Service (Oracle NoSQL) quando os objetos são criados ou modificados nos buckets do OCI Object Storage. Ele aborda o cenário de negócios comum de análise e atualização de dados em uma tabela NoSQL da Oracle sempre que um arquivo é adicionado ou modificado em um bucket do OCI Object Storage.
A OCI Events oferece uma solução robusta para automatizar tarefas com base em alterações de estado em vários recursos da nuvem. Ele permite a criação de regras que entregam eventos a serviços específicos do OCI, como OCI Streaming, OCI Functions (que servem como uma ferramenta valiosa para processar dados de eventos e integrar com outros serviços do OCI para executar diversas ações) e OCI Notifications.
Além disso, as Funções do OCI podem incorporar código para tratar dados de payload recebidos dos Eventos do OCI e adaptar a atualização da tabela NoSQL da Oracle com base em requisitos de negócios específicos.
Essa arquitetura de referência fornece uma visão geral abrangente da utilização de Funções do OCI em conjunto com Eventos do OCI para atualizar tabelas NoSQL da Oracle quando objetos são criados ou modificados em buckets do OCI Object Storage.
Arquitetura
Essa arquitetura de referência demonstra como utilizar as Funções do OCI e os Eventos do OCI para atualizar uma tabela NoSQL da Oracle sempre que um arquivo for criado ou atualizado no OCI Object Storage.
O diagrama de arquitetura mostra um fluxo de dados começando com o upload de arquivo para um bucket do OCI Object Storage designado. Os acionadores de serviço de evento são configurados para ativação com base nas condições de regra de evento especificadas. O evento emitido, por sua vez, chama uma função capaz de extrair dados do arquivo carregado, conduzir processamento adicional de acordo com os requisitos de negócios e, por fim, atualizar a tabela NoSQL do Oracle com os dados processados. Essa abordagem oferece vantagens significativas aproveitando a arquitetura orientada a eventos e facilitando o processamento de dados em tempo real. Ele se mostra inestimável quando há necessidade de pré-processar dados antes de atualizar a tabela de destino e executar as verificações de integridade necessárias para garantir a integridade dos dados.
O caso de uso comercial, em que os dados precisam ser analisados e atualizados em uma tabela NoSQL da Oracle sempre que um arquivo é criado ou atualizado em um bucket do OCI Object Storage, pode ser obtido usando a seguinte abordagem:
- Configure uma regra de evento em Eventos do OCI para acionar Funções do OCI sempre que um objeto for criado ou atualizado no bucket do OCI Object Storage.
- Crie uma função que receba o evento acionado pela regra de evento. Esta função tratará da análise e atualização de dados na tabela NoSQL do Oracle.
- Dentro da função, implemente a lógica necessária para fazer parsing dos dados do objeto no bucket do OCI Object Storage.
- Use o OCI SDK ou a API apropriada para interagir com o serviço NoSQL da Oracle e inserir ou atualizar registros na tabela NoSQL da Oracle com base nos dados analisados.
Combinando os serviços OCI Events, OCI Functions e Oracle NoSQL, podemos automatizar o processo de análise e atualização de dados na tabela NoSQL da Oracle sempre que um arquivo é criado ou atualizado no bucket do OCI Object Storage. Essa abordagem permite o processamento e a sincronização de dados eficientes e simplificados entre o OCI Object Storage e o Oracle NoSQL.
O diagrama a seguir ilustra essa arquitetura de referência.
objeto-armazenamento-função-nosql-diagram-oracle.zip
Antes de começar
- Configure seu aplicativo de função e crie uma tabela NoSQL do Oracle usando a console do OCI.
- Reúna esses valores necessários para configurar as variáveis de ambiente para o aplicativo de função.
- ID do Usuário
O OCID do usuário com o qual fazer a autenticação.
- ID da Tenancy
OCID da Tenancy. Pode ser encontrado no perfil do usuário.
- Impressão Digital
Será usado para autenticação na API do OCI.
- Região
Identificador da região na qual as solicitações serão criadas.
- Chave privada da API
Local do arquivo de chave privada da API.
- OCID do Compartimento
OCID do compartimento no qual a tabela Oracle NoSQL é criada.
- Tabela NoSQL
Tabela de amostra de pessoa. Crie-o com os seguintes atributos.
- ID do Usuário
Chave principal | Nome da coluna | Tipo | Chave compartilhada | Não nulo |
---|---|---|---|---|
Sim | id | INTEIRO | Sim | Sim |
Não | nome | STRING | Não | Não |
Não | idade | INTEIRO | Não | Não |
Não | gênero | STRING | Não | Não |
A arquitetura tem os seguintes componentes:
- Locação
Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você acessa o Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de empresa ou organização. Geralmente, uma empresa terá uma única tenancy e refletirá sua estrutura organizacional dentro dessa tenancy. Em geral, uma única tenancy é associada a uma única assinatura e, em geral, uma única assinatura só tem uma tenancy.
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada 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 até mesmo continentes).
- Compartimento
Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.
- Domínios de disponibilidade
Domínios de disponibilidade são data centers stand-alone 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 oferece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou refrigeração ou a rede interna do domínio de disponibilidade. Portanto, provavelmente uma falha em um domínio de disponibilidade não afetará os outros domínios de disponibilidade da região.
- Domínio de falha
Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com potência e hardware independentes. Quando você distribui recursos entre diversos domínios de falha, seus aplicativos podem tolerar falhas físicas no servidor, na manutenção do sistema e na alimentação dentro de um domínio de falha.
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável e definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a 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.
- Lista de segurança
Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego que deve ser permitido dentro e fora da sub-rede.
- Gateway de serviço
O gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle passa pela malha da rede Oracle e nunca atravessa a internet.
- Object Storage
O armazenamento de objetos oferece 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 de forma segura e depois recuperar dados diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento de forma integrada sem prejudicar o desempenho ou a confiabilidade do serviço. Use o armazenamento padrão para armazenamento de acesso frequente que você precisa acessar de forma rápida, imediata e com frequência. Use o armazenamento de arquivos compactados para armazenamento "frio" que você mantém por longos períodos de tempo e raramente acessa.
- Eventos
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 de criação, leitura, atualização ou exclusão (CRUD), alterações no estado do ciclo de vida do recurso e eventos do sistema que afetam os recursos da nuvem.
- Funções
O Oracle Cloud Infrastructure Functions é uma plataforma totalmente gerenciada, multitenant, altamente escalável, sob demanda, do Functions-as-a-Service (FaaS). É alimentado pelo mecanismo de código aberto do Fn Project. As funções permitem que você implante seu código e o chame diretamente ou o acione em resposta a eventos. O Oracle Functions usa contêineres Docker hospedados no Oracle Cloud Infrastructure Registry.
- LogO registro em log é um serviço altamente escalável e totalmente gerenciado que oferece acesso aos seguintes tipos de logs de seus recursos na nuvem:
- Logs de Auditoria: Logs relacionados a eventos emitidos pelo serviço Audit.
- Logs de serviço: Logs emitidos por serviços individuais, como API Gateway, Events, Functions, Load Balancing, Object Storage e logs de fluxo da VCN.
- Logs personalizados: Logs que contêm informações de diagnóstico de aplicativos personalizados, outros provedores de nuvem ou um ambiente on-premises.
- Oracle NoSQL
O Oracle NoSQL Database Cloud Service é um serviço de banco de dados em nuvem totalmente gerenciado projetado para operações de banco de dados que requerem respostas previsíveis, com uma única latência de milissegundos para consultas simples. Depois que você for autenticado na sua conta do Oracle Cloud, poderá criar uma tabela NoSQL da Oracle e especificar requisitos de throughput e armazenamento para a tabela. O Oracle reserva e gerencia os recursos para atender aos seus requisitos e provisiona a capacidade para você. A capacidade é especificada com unidades de leitura e gravação por throughput e GB para unidades de armazenamento.
Recomendações
- VCN
Quando você cria uma VCN, determina o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que planeja anexar às sub-redes na VCN. Use blocos CIDR que estão dentro do espaço de endereço IP privado padrão.
Selecione blocos CIDR que não se sobrepõem a nenhuma outra rede (no Oracle Cloud Infrastructure, no seu data center local ou em outro provedor de nuvem) para a qual você pretende configurar conexões privadas.
Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.
Ao projetar as sub-redes, considere seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como limite de segurança.
- Cloud Guard
Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do respondedor. Essas receitas permitem especificar que tipo de violações de segurança geram uma advertência e quais ações podem ser executadas nelas. Por exemplo, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.
Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.
Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações a detectores.
- Funções
A função OCI nesta arquitetura foi desenvolvida usando Python. Observe que o serviço OCI Functions suporta várias linguagens de programação e você pode usar o idioma de sua escolha para desenvolver as funções e implantá-las.
- Oracle NoSQL
Certifique-se de criar a tabela Oracle NoSQL no compartimento apropriado e gerenciar o acesso usando políticas do OCI Identity and Access Management (IAM). É importante estimar com precisão a capacidade de leitura e gravação antes de criar a tabela. Consulte a documentação da Oracle e revise as recomendações para obter orientação detalhada.
Nesta solução, um exemplo de tabela chamada "person" é usado. Lembre-se de personalizar a função e o nome da tabela de acordo com seus requisitos específicos.
- Armazenamento de Objetos do OCI
Essa arquitetura usa o Armazenamento de Objetos Padrão para fazer upload de um arquivo. Certifique-se de ativar Emitir eventos de Objeto para que os serviços de evento possam ser acionados. Também é recomendável usar buckets privados para dados confidenciais.
- Eventos do OCI
Nesta arquitetura, o serviço OCI Events está configurado para ouvir alterações no OCI Object Storage para eventos de "Criação de Objeto" e "Atualização de Objeto". O serviço é chamado após o upload do objeto para as Funções do OCI e chama a função para processamento.
Considerações
Considere os pontos a seguir ao implantar essa arquitetura de referência.
- Desempenho
Eventos OCI, Funções OCI e Oracle NoSQL são serviços gerenciados e altamente escaláveis. O serviço Oracle NoSQL fornece rendimento sob demanda e provisionamento de armazenamento.
Certifique-se de estimar o throughput e as capacidades de armazenamento do seu Oracle NoSQL Database Cloud Service antes do provisionamento.
- Segurança
Use políticas para restringir quem pode acessar os recursos do OCI.
Para o serviço OCI Object Storage, a criptografia é ativada por padrão e não pode ser desativada.
É recomendável armazenar segredos e dados confidenciais no OCI Vault. Considere o uso de Funções do OCI para armazenar chaves de API, nomes de usuário do BD, senhas e tokens de autenticação usados para autorização com serviços do OCI.
- Disponibilidade
A Oracle garante alta disponibilidade dos Eventos OCI, Funções OCI, Oracle NoSQL e OCI Logging, que são nativos da nuvem e totalmente gerenciados.
- Custo
Você paga somente pelos recursos usados enquanto uma função está em execução.
Implantar
O repositório GitHub contém o código de Funções do OCI que implementa essa arquitetura de referência.
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- Siga as instruções no documento
README
.