Observação:

Transmita Dados para o Oracle Autonomous Transaction Processing Database usando o OCI Functions

Introdução

Neste tutorial, aprenderemos a criar e implantar um pipeline de streaming de dados em tempo real usando os serviços da Oracle Cloud Infrastructure (OCI). O pipeline transmite dados de um fluxo do OCI para um Oracle Autonomous Database aproveitando o OCI Connector Hub e o OCI Functions. A função é gravada em Java, empregando o método de Autenticação do Controlador de Recursos para acesso seguro aos serviços do OCI e uma wallet de banco de dados para estabelecer uma conexão com o Oracle Autonomous Database.

OCI Streaming: A OCI tem uma variedade de ferramentas para lidar com dados na nuvem, com o OCI Streaming sendo um desses serviços adaptado para fluxos de dados em tempo real de alto rendimento. Ao aproveitar o OCI Streaming, os desenvolvedores podem construir pipelines de dados escaláveis e confiáveis que ingerem, processam e distribuem fluxos de dados com eficiência.

OCI Functions: O OCI Functions é uma plataforma Functions-as-a-Service totalmente gerenciada, multitenant, altamente escalável, sob demanda. Ela foi criada na OCI de nível empresarial e desenvolvida pelo mecanismo de código-fonte aberto Fn Project. Use o OCI Functions quando quiser se concentrar na gravação de código para atender às necessidades do negócio.

Autenticação do Controlador de Recursos: Você pode usar um controlador de recursos para autenticar e acessar recursos do OCI. O controlador de recursos consiste em um token de sessão temporário e credenciais seguras que permitem que o OCI Functions se autentique em outros serviços do OCI, como o OCI Streaming.

OCI Connector Hub: O OCI Connector Hub é uma plataforma de barramento de mensagens na nuvem que oferece um único painel de controle para descrever, executar e monitorar interações ao mover dados entre os serviços do OCI.

Observação:

Objetivos

Pré-requisitos

Tarefa 1: Configurar Grupos Dinâmicos

Faça log-in na Console do OCI, navegue até seu domínio, clique em Grupos Dinâmicos e crie um grupo com as informações a seguir.

Tarefa 2: Criar Políticas

Vá para a Console do OCI, navegue até Políticas e crie as políticas com as informações a seguir.

Tarefa 3: Criar um Registro de Contêiner do OCI

  1. Vá para a Console do OCI, navegue até Developer Services, Containers & Artifacts, selecione Container registry e clique em Create repository para criar um repositório privado para a imagem da função.

    • Nome do repositório: Digite lab/fn-java-event-to-atp.

      T3_1

  2. Verifique os repositórios e anote o Namespace.

    T3_1

  3. Abra o OCI Cloud Shell no qual você deve ter a CLI e o Docker do OCI instalados e continue com o log-in no registro. Verifique qual é o URL correto para sua região. Neste tutorial, estamos usando Leste do Brasil (São Paulo) em que o URL do registro é gru.ocir.io.

    Observação: Você precisará do token de autenticação do usuário criado na seção Pré-requisitos.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Tarefa 4: Criar um Bucket do OCI Object Storage para Armazenar sua Wallet de Banco de Dados

Vá para a Console do OCI, navegue até Armazenamento, Armazenamento de Objetos e Armazenamento de Arquivos Compactados, Buckets e clique em Criar Bucket para criar um novo bucket chamado Wallet para armazenar o arquivo zip da wallet do banco de dados.

T4_1

Tarefa 5: Fazer Download da Wallet do Banco de Dados e Armazená-la no Bucket do OCI Object Storage

Observação: Este exemplo de código demonstra como estabelecer conexão segura com um Oracle Autonomous Database usando a wallet. Para continuar, você precisará configurar suas credenciais de wallet e estabelecer uma senha para uso em todo este tutorial.

  1. Vá para a Console do OCI, navegue até o Oracle Database, clique em Autonomous Database e selecione seu ATP.

    T4_1

  2. Clique em Conexão de Banco de Dados.

    T4_1

  3. Informe a senha da wallet e anote, você precisará dessa senha no seu aplicativo.

    T4_1

  4. Vá para o bucket do OCI Object Storage criado na Tarefa 4 e clique em Fazer Upload para fazer upload do arquivo zip da wallet baixado.

    T4_1

Tarefa 6: Armazenar com Segurança as Credenciais do Banco de Dados e a Senha da Wallet no Vault

Observação: Como pré-requisito, verifique se você já criou um vault.

  1. Vá para a Console do OCI, navegue até Identidade e Segurança, Vault e selecione seu vault.

  2. Clique em Segredos, Criar Segredo e crie segredos com as informações a seguir.

    Nome do Segredo Valor
    MYRDBMS_WALLET_PASSWORD Sua senha da wallet em texto sem formatação
    MYRDBMS_DB_PASSWORD Sua senha do banco de dados em texto sem formatação

    T5_1

    Observação Certifique-se de selecionar Texto Simples para Modelo de Tipo de Segredo.

Repita esse processo também para MYRDBMS_DB_PASSWORD e anote os dois OCIDs que serão usados para a configuração da função.

T5_1

Tarefa 7: Criar as Funções do Java OCI para Receber a Mensagem de Evento e Inserir no Banco de Dados ATP

Observação Certifique-se de selecionar sua sub-rede privada, a mesma sub-rede do pool de streams.

  1. Vá para a Console do OCI, acesse Developer Services, Functions, Applications e clique em Create application.

    T6_1

  2. Vá para o OCI Cloud Shell no qual você tem Docker, CLI do OCI e CLI do Fn Project instalados e execute o comando a seguir para inicializar a função.

    Observação: Se você seguiu as tarefas, seu comando de log-in do Docker já foi executado até agora, caso contrário, prossiga com as etapas de log do Docker na Tarefa 3.

  3. Verifique o contexto atual, já que você está usando o OCI Cloud Shell, ele já deve estar configurado no contexto atual.

    fn list context 
    

    T6_2

  4. Execute o comando a seguir para atualizar suas configurações de função para poder extrair imagens do registro de contêiner criado na Tarefa 3.

    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn list context
    

    T6_2

    Observação: Neste tutorial, estamos usando a região Leste do Brasil (São Paulo). Se você estiver usando outra região, será necessário alterar os locais URL da API e REGISTÉRIA.

  5. Execute o comando a seguir para verificar se o aplicativo criado está listado no OCI Cloud Shell.

    Observação: Certifique-se de que o OCI Cloud Shell esteja usando Rede: Pública

    fn list apps
    

    T6_2

  6. Obtenha o código de amostra da função Java aqui: fn-java-event-to-atp.zip e faça upload dele no OCI Cloud Shell e, em seguida, descompacte o arquivo.

  7. Clique no menu superior direito e selecione Fazer Upload para fazer upload do arquivo.

    T6_2

    T6_2

  8. Execute o comando a seguir para descompactar o arquivo.

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-event-to-atp.zip
    # check again
    ls -lrt
    

    T9_1

    Observação: Este projeto Java conciso recupera a entrada de dados JSON do OCI Connector Hub, analisa-a de acordo com um formato predefinido e insere perfeitamente as informações extraídas no banco de dados ATP. Para garantir a inserção de dados adequada, consulte as etapas a seguir para obter orientação sobre o formato de mensagem necessário e a tabela correspondente no banco de dados ATP.

  9. No OCI Cloud Shell, execute o comando a seguir para criar o código e implantar a função.

    fn deploy --app MyApp
    # After deploy complete, check the function is there:
    fn list functions MyApp |grep fn-java-event-to-atp
    

    T9_1

    T9_1

  10. Vá para a Console do OCI, acesse Developer Services, Functions, Applications, selecione seu aplicativo (Myapp) e clique em sua função.

    T9_1

    T9_1

    Observação O código de amostra Java deste tutorial utiliza variáveis de configuração para estabelecer uma conexão com o banco de dados. Certifique-se de fornecer os valores apropriados do seu ambiente para garantir uma execução bem-sucedida.

  11. Crie todas as configurações a seguir.

Nome/Chave do Segredo Valor
WALLET_BUCKET Wallet
WALLET_OBJECT nome do seu arquivo zip
BUCKET_NAMESPACE Seu namespace de bucket
DB_USER Seu nome de usuário do banco de dados
DB_SERVICE_NAME o nome do serviço de banco de dados que você encontra nos detalhes da sua conexão de banco de dados
DB_PASSWORD_OCID_VAULT colar seu OCID de segredo
DB_WALLET_PASSWORD_OCID_VAULT colar seu OCID de segredo

Tarefa 8: Criar uma Nova Tabela no Banco de Dados ATP

Crie uma nova tabela chamada MY_TABLE no banco de dados ATP para receber dados do streaming.

  1. Selecione o Oracle Autonomous Database no qual você fez download da wallet, clique no menu drop-down Ações do banco de dados e, em seguida, clique em SQL.

    T9_1

  2. Execute o comando DDL de criação de tabela a seguir.

    Observação Este laboratório usa o usuário ADMIN para conexões de banco de dados. Substitua seu próprio nome de usuário se ele for diferente.

    CREATE TABLE "ADMIN"."MY_TABLE" 
    ( "CODE" VARCHAR2(50 BYTE), 
    	"NAME" VARCHAR2(500 BYTE)
    ) ;
    

    T9_1

Tarefa 9: Configurar o OCI Connector Hub para Chamar a Função quando uma nova Mensagem Chegar no Stream

Agora que você criou a função e a nova tabela para armazenar os dados, é hora de conectar tudo! Faremos isso configurando um pipeline que flui do OCI Streaming, por meio do OCI Connector Hub e, finalmente, para o OCI Functions.

  1. Vá para a Console do OCI, navegue até Analytics & AI, Messaging e clique em Connector Hub.

  2. Clique em Criar conector e digite as informações a seguir.

    • Nome do conector: Digite StreamingToFN.
    • Origem: Selecione Streaming.
    • Destino: Selecione Funções.

    Observação Como pré-requisito, certifique-se de que você já tenha criado seu pool de streams e o stream chamado myfirststream.

    T9_1

  3. Em Configurar origem, selecione seu pool de fluxos e Stream.

    T9_1

  4. Em Configurar destino, selecione MyApp como Aplicativo de Função e fn-java-event-to-atp como Função.

    T9_1

Observação Talvez você precise criar políticas adicionais conforme sugerido na página Criar conector.

Tarefa 10: Criar uma Mensagem no OCI Streaming e Verificar o Funcionamento do Pipeline

Observação A amostra de código Java fornecida foi projetada para processar mensagens em uma estrutura JSON específica. O código analisa esse JSON para extrair os dados necessários e, em seguida, insere-os na tabela MY_TABLE. Qualquer desvio do formato JSON esperado resultará em erros de parsing e impedirá a inserção bem-sucedida do banco de dados.

Mensagem de Amostra JSON:

{"code": "001", "name":"Larry"}

Siga as etapas:

  1. Vá para a Console do OCI, navegue até Analytics & AI, Messaging, Streaming, selecione seu stream (myfirststream) e clique em Produzir Mensagem de Teste.

  2. Em Dados, digite a mensagem JSON de amostra e clique em Produzir.

    T9_1

    Observação O pipeline de stream pode experimentar um início frio em sua primeira execução, resultando em um atraso perceptível. Essa é uma consequência da inicialização da função que ocorre na primeira tentativa do hub do conector de enviar uma mensagem.

Tarefa 11: Validar os Dados Chegados no Banco de Dados

  1. Selecione o Oracle Autonomous Database no qual você fez download da wallet, clique no menu drop-down Ações do banco de dados e clique em SQL.

    T9_1

  2. Execute a seguinte consulta.

    select * from admin.my_table;
    

    T9_1

Solução de problemas e dicas

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.