Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
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:
- Este tutorial está diseñado exclusivamente para fines educativos y de estudio. Proporciona un entorno para que los estudiantes experimenten y obtengan experiencia práctica en un entorno controlado. Es crucial tener en cuenta que las configuraciones y prácticas de seguridad empleadas en este tutorial pueden no ser adecuadas para escenarios del mundo real.
- Las consideraciones de seguridad para las aplicaciones reales a menudo son mucho más complejas y dinámicas. Por lo tanto, antes de implementar cualquiera de las técnicas o configuraciones demostradas aquí en un entorno de producción, es esencial realizar una evaluación y revisión exhaustivas de la seguridad. Esta revisión debe abarcar todos los aspectos de la seguridad, incluido el control de acceso, el cifrado, la supervisión y el cumplimiento, para garantizar que el sistema se alinee con las políticas y estándares de seguridad de la organización.
- La seguridad siempre debe ser una prioridad al pasar de un entorno de prácticas a un despliegue real.
Objetivos
- Cree un pipeline de transmisión de datos sencillo que procese mensajes en tiempo real. Cuando se publica un nuevo mensaje en un flujo de OCI, OCI Functions lo reenvía y procesa automáticamente, lo que luego carga los datos en la base de datos de Oracle Autonomous Transaction Processing (ATP). Esta solución integral muestra una ingesta y transformación de datos eficientes mediante los servicios de OCI, lo que garantiza una integración segura y escalable entre los sistemas de transmisión y base de datos.
Requisitos
-
Oracle Cloud Infrastructure:
-
Cuenta de Oracle con permisos de acceso de nivel de administrador.
-
Compartimento para crear los recursos.
Nota: Observe el nombre y el ID de compartimento.
-
VCN con una subred privada. Para obtener más información, consulte Creación de una red virtual en la nube.
Nota: Tenga en cuenta el OCID de la VCN y el nombre de la subred, lo necesitará para el pool de flujos y las funciones.
-
Cree un pool de flujos en la subred privada desde la VCN. Para obtener más información, consulte Creación de un pool de flujos.
-
Cree un flujo denominado
myfirststream
en el mismo pool de flujos creado anteriormente. Para obtener más información, consulte Creación de un flujo. -
Una instancia de Oracle Autonomous Database. Para obtener más información, consulte Oracle Autonomous Database.
-
Un OCI Vault para almacenar secretos. Para obtener más información, consulte Creación de un almacén de claves.
-
Token de autenticación de OCI para permitir la conexión a OCI Container Registry. Para obtener más información, consulte Generación de un token de autenticación para activar la conexión a Oracle Cloud Infrastructure Registry.
-
-
Entorno de OCI Cloud Shell:
- Se necesita OCI Cloud Shell para desplegar la función en OCI. Si no tiene OCI Cloud Shell, puede utilizar un host Bastion en su lugar. Para obtener más información, consulte Visión general de Bastion.
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.
-
Nombre de grupo: introduzca
MyFunctions
.ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
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.
-
Nombre de política: introduzca
FunctionsPolicies
.Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read secret-bundles in compartment YOUR-COMPARTMENT-NAME
Tarea 3: Creación de OCI Container Registry
-
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
.
-
-
Compruebe los repositorios y anote el espacio de nombres.
-
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
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.
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.
-
Vaya a la consola de OCI, vaya a Oracle Database, haga clic en Autonomous Database y seleccione su ATP.
-
Haga clic en Conexión a base de datos.
-
Introduzca la contraseña de cartera y anótelo. Necesitará esta contraseña en la aplicación.
-
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.
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.
-
Vaya a la consola de OCI, vaya a Identity & Security, Vault y seleccione el almacén.
-
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 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.
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.
-
Vaya a la consola de OCI, vaya a Developer Services, Functions, Applications y haga clic en Create application.
-
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.
-
Compruebe el contexto actual, ya que está utilizando OCI Cloud Shell, ya debe estar configurado en el contexto actual.
fn list context
-
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
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.
-
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
-
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.
-
Haga clic en el menú de la rueda superior derecha y seleccione Cargar para cargar el archivo.
-
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
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.
-
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
-
Vaya a la consola de OCI, vaya a Developer Services, Functions, Applications, seleccione la aplicación (
Myapp
) y haga clic en la función.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.
-
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.
-
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.
-
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) ) ;
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.
-
Vaya a la consola de OCI, vaya a Analytics & AI, Messaging y haga clic en Connector Hub.
-
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
. - Nombre de conector: introduzca
-
En Configurar origen, seleccione el pool de flujos y el flujo.
-
En Configurar destino, seleccione MyApp como Aplicación de función y fn-java-event-to-atp como Función.
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:
-
Vaya a la consola de OCI, vaya a Analytics & AI, Messaging, Streaming, seleccione el flujo (
myfirststream
) y haga clic en Produce mensaje de prueba. -
En Datos, introduzca el mensaje JSON de ejemplo y haga clic en Producir.
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
-
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.
-
Ejecute la siguiente consulta.
select * from admin.my_table;
Solución de Problemas y Consejos
-
Active los logs para la función y compruebe si hay errores. Para obtener más información sobre el registro, consulte Almacenamiento y visualización de logs de funciones.
-
Valide que todas las políticas están en vigor como se detalla en la sección Requisitos previos.
-
Active los logs para el hub de OCI Connector. Para obtener más información, consulte Logs for Connector Hub.
Enlaces relacionados
Agradecimientos
- Autor: Joao Tarla (ingeniero de soluciones de Oracle LAD A-Team)
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.
Stream Data to Oracle Autonomous Transaction Processing Database using OCI Functions
G25951-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.