Note:

Transmisión de datos a la base de datos Oracle Autonomous Transaction Processing con OCI Functions

Introducción

En este tutorial, aprenderemos a crear y desplegar un pipeline de transmisión de datos en tiempo real mediante los servicios de Oracle Cloud Infrastructure (OCI). El pipeline transmite datos de un flujo de OCI a una instancia de Oracle Autonomous Database aprovechando OCI Connector Hub y OCI Functions. La función se escribe en Java, empleando el método de autenticación de entidad de recurso para un acceso seguro a los servicios de OCI y una cartera de base de datos para establecer una conexión con Oracle Autonomous Database.

OCI Streaming: OCI tiene una serie de herramientas para manejar datos en la nube, siendo OCI Streaming uno de esos servicios adaptado para flujos de datos en tiempo real de alto rendimiento. Al aprovechar OCI Streaming, los desarrolladores pueden construir pipelines de datos escalables y confiables que ingieran, procesen y distribuyan eficientemente flujos de datos.

OCI Functions: OCI Functions es una plataforma de funciones como servicio totalmente gestionada, multi-inquilino, altamente escalable y bajo demanda. Se basa en OCI de nivel empresarial y en el motor de código abierto Fn Project. Utilice OCI Functions cuando desee centrarse en la escritura de código para satisfacer las necesidades empresariales.

Autenticación de entidad de recurso: puede utilizar una entidad de recurso para autenticar y acceder a los recursos de OCI. La entidad de recurso consta de un token de sesión temporal y credenciales seguras que permiten a OCI Functions autenticarse en otros servicios de OCI, como OCI Streaming.

OCI Connector Hub: OCI Connector Hub es una plataforma de bus de mensajes en la nube que ofrece un panel único para describir, ejecutar y supervisar interacciones al mover datos entre servicios de OCI.

Nota:

Objetivos

Requisitos

Tarea 1: Configuración de grupos dinámicos

Conéctese a la consola de OCI, navegue al dominio, haga clic en Grupos dinámicos y cree un grupo con la siguiente información.

Tarea 2: Crear políticas

Vaya a la consola de OCI, vaya a Políticas y cree las políticas con la siguiente información.

Tarea 3: Creación de OCI Container Registry

  1. Vaya a la consola de OCI, vaya a Developer Services, Containers & Artifacts, seleccione Container Registry y haga clic en Create repository para crear un repositorio privado para la imagen de función.

    • Nombre del repositorio: introduzca lab/fn-java-event-to-atp.

      T3_1

  2. Compruebe los repositorios y anote el espacio de nombres.

    T3_1

  3. Abra OCI Cloud Shell donde debe tener instaladas la CLI y Docker de OCI y continúe con el inicio de sesión en el registro. Compruebe cuál es la URL correcta para su región. En este tutorial, estamos utilizando Este de Brasil (São Paulo), donde la URL del registro es gru.ocir.io.

    Nota: Necesitará el token de autenticación de usuario creado en la sección Requisitos.

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

    T3_3

Tarea 4: Creación de un cubo de OCI Object Storage para almacenar la cartera de base de datos

Vaya a la consola de OCI, vaya a Storage, Object Storage & Archive Storage, Buckets y haga clic en Create Bucket para crear un nuevo cubo denominado Wallet para almacenar el archivo zip de cartera de la base de datos.

T4_1

Tarea 5: Descarga de la cartera de base de datos y almacenamiento en el cubo de OCI Object Storage

Nota: En este ejemplo de código se muestra cómo conectarse de forma segura a una instancia de Oracle Autonomous Database mediante la cartera. Para continuar, deberá configurar las credenciales de la cartera y establecer una contraseña para su uso en este tutorial.

  1. Vaya a la consola de OCI, vaya a Oracle Database, haga clic en Autonomous Database y seleccione su ATP.

    T4_1

  2. Haga clic en Conexión a base de datos.

    T4_1

  3. Introduzca la contraseña de cartera y anótelo. Necesitará esta contraseña en la aplicación.

    T4_1

  4. Vaya al cubo de OCI Object Storage creado en la tarea 4 y haga clic en Cargar para cargar el archivo zip de cartera descargado.

    T4_1

Tarea 6: Almacenar de forma segura las credenciales de base de datos y la contraseña de cartera en el almacén

Nota: Como requisito, asegúrese de que ya ha creado un almacén.

  1. Vaya a la consola de OCI, vaya a Identity & Security, Vault y seleccione el almacén.

  2. Haga clic en Secretos, Crear secreto y cree secretos con la siguiente información.

    Nombre de secreto Valor
    MYRDBMS_WALLET_PASSWORD Contraseña de cartera en texto sin formato
    MYRDBMS_DB_PASSWORD La contraseña de la base de datos en texto sin formato

    T5_1

    Nota Asegúrese de seleccionar Texto sin formato para Plantilla de tipo de secreto.

Repita este proceso también para MYRDBMS_DB_PASSWORD y tome nota de ambos OCID que se utilizarán para la configuración de la función.

T5_1

Tarea 7: Creación de las funciones de OCI de Java para recibir el mensaje del evento e inserción en la base de datos ATP

Nota Asegúrese de seleccionar la subred privada, la misma subred del pool de flujos.

  1. Vaya a la consola de OCI, vaya a Developer Services, Functions, Applications y haga clic en Create application.

    T6_1

  2. Vaya a OCI Cloud Shell, donde tiene instalado Docker, la CLI de OCI y la CLI de Fn Project, y ejecute el siguiente comando para inicializar la función.

    Nota: Si ha seguido las tareas, el comando de conexión de Docker ya se ha ejecutado. Si no es así, continúe con los pasos de conexión de Docker en la tarea 3.

  3. Compruebe el contexto actual, ya que está utilizando OCI Cloud Shell, ya debe estar configurado en el contexto actual.

    fn list context 
    

    T6_2

  4. Ejecute el siguiente comando para actualizar la configuración de la función para poder extraer imágenes del registro de contenedores creado en la tarea 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

    Nota: En este tutorial, estamos utilizando la región Este de Brasil (São Paulo). Si está utilizando una región diferente, debe cambiar las ubicaciones de URL de API y REGISTRY.

  5. Ejecute el siguiente comando para comprobar si la aplicación que ha creado aparece en OCI Cloud Shell.

    Nota: Asegúrese de que OCI Cloud Shell utiliza Network: Public

    fn list apps
    

    T6_2

  6. Obtenga el código de ejemplo de la función Java de aquí: fn-java-event-to-atp.zip y cárguelo en OCI Cloud Shell y, a continuación, descomprima el archivo.

  7. Haga clic en el menú de la rueda superior derecha y seleccione Cargar para cargar el archivo.

    T6_2

    T6_2

  8. Ejecute el siguiente comando para descomprimir el archivo.

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

    T9_1

    Nota: Este proyecto conciso de Java recupera la entrada de datos JSON del OCI Connector Hub, la analiza según un formato predefinido e inserta sin problemas la información extraída en la base de datos ATP. Para garantizar la correcta inserción de datos, consulte los siguientes pasos para obtener orientación sobre el formato de mensaje necesario y la tabla correspondiente dentro de la base de datos ATP.

  9. En OCI Cloud Shell, ejecute el siguiente comando para crear el código y desplegar la función.

    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. Vaya a la consola de OCI, vaya a Developer Services, Functions, Applications, seleccione la aplicación (Myapp) y haga clic en la función.

    T9_1

    T9_1

    Nota: El código de ejemplo Java de este tutorial utiliza variables de configuración para establecer una conexión a la base de datos. Asegúrese de proporcionar los valores adecuados de su entorno para garantizar una ejecución correcta.

  11. Cree todas las siguientes configuraciones.

Nombre/clave de secreto Valor
WALLET_BUCKET cartera
WALLET_OBJECT nombre del archivo zip
BUCKET_NAMESPACE Su espacio de nombres de cubo
DB_USER Nombre de usuario de la base de datos
DB_SERVICE_NAME el nombre del servicio de base de datos que encuentre en los detalles de conexión de base de datos
DB_PASSWORD_OCID_VAULT pegue el OCID secreto
DB_WALLET_PASSWORD_OCID_VAULT pegue el OCID secreto

Tarea 8: Creación de una Nueva Tabla en la Base de Datos ATP

Cree una nueva tabla denominada MY_TABLE en la base de datos ATP para recibir datos del flujo.

  1. Seleccione la instancia de Oracle Autonomous Database en la que ha descargado la cartera, haga clic en el menú desplegable Acciones de base de datos y, a continuación, haga clic en SQL.

    T9_1

  2. Ejecute el siguiente comando DDL de creación de tablas.

    Nota En este laboratorio se utiliza el usuario ADMIN para las conexiones de base de datos. Sustituya su propio nombre de usuario si difiere.

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

    T9_1

Tarea 9: Configuración de OCI Connector Hub para llamar a la función cuando llegue un nuevo mensaje en el flujo

Ahora que ha creado la función y la nueva tabla para almacenar los datos, es hora de conectarlo todo. Para ello, configuraremos un pipeline que fluya desde OCI Streaming, a través de OCI Connector Hub y, por último, a OCI Functions.

  1. Vaya a la consola de OCI, vaya a Analytics & AI, Messaging y haga clic en Connector Hub.

  2. Haga clic en Crear conector e introduzca la siguiente información.

    • Nombre de conector: introduzca StreamingToFN.
    • Origen: seleccione Flujo.
    • Destino: seleccione Funciones.

    Nota Como requisito, asegúrese de que ya ha creado el pool de flujos y el flujo denominado myfirststream.

    T9_1

  3. En Configurar origen, seleccione el pool de flujos y el flujo.

    T9_1

  4. En Configurar destino, seleccione MyApp como Aplicación de función y fn-java-event-to-atp como Función.

    T9_1

Nota Puede que necesite crear políticas adicionales como se sugiere en la página Crear conector.

Tarea 10: Creación de un mensaje en OCI Streaming y verificación del funcionamiento del pipeline

Nota: El ejemplo de código Java proporcionado está diseñado para procesar mensajes en una estructura JSON concreta. El código analiza este JSON para extraer los datos necesarios y, a continuación, los inserta en la tabla MY_TABLE. Cualquier desviación del formato JSON esperado generará errores de análisis y evitará la inserción correcta de la base de datos.

Mensaje de ejemplo de JSON:

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

Realice los pasos:

  1. Vaya a la consola de OCI, vaya a Analytics & AI, Messaging, Streaming, seleccione el flujo (myfirststream) y haga clic en Produce mensaje de prueba.

  2. En Datos, introduzca el mensaje JSON de ejemplo y haga clic en Producir.

    T9_1

    Nota El pipeline de flujo puede experimentar un inicio en frío en su primera ejecución, lo que provoca un retraso notable. Esto es una consecuencia de la inicialización de la función que se produce en el primer intento del hub del conector de enviar un mensaje.

Tarea 11: Validación de los Datos Llegados en la Base de Datos

  1. Seleccione la instancia de Oracle Autonomous Database en la que ha descargado la cartera, haga clic en el menú desplegable Acciones de base de datos y haga clic en SQL.

    T9_1

  2. Ejecute la siguiente consulta.

    select * from admin.my_table;
    

    T9_1

Solución de Problemas y Consejos

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.