Implantar funciones de OCI para actualizar una tabla NoSQL de Oracle al cargarla en OCI Object Storage

La arquitectura nativa en la nube, basada en eventos y sin servidor es un enfoque para crear y desplegar aplicaciones que aprovechan los recursos y servicios de computación en la nube para maximizar la escalabilidad, la eficiencia y la flexibilidad.

Esta arquitectura de referencia demuestra la integración perfecta de Oracle Cloud Infrastructure Events y OCI Functions para actualizar automáticamente las tablas de Oracle NoSQL Database Cloud Service (Oracle NoSQL) cuando se crean o modifican objetos en cubos de OCI Object Storage. Aborda el escenario de negocio común de análisis y actualización de datos en una tabla NoSQL de Oracle cada vez que se agrega o modifica un archivo en un cubo de OCI Object Storage.

OCI Events ofrece una solución sólida para automatizar tareas basadas en cambios de estado en varios recursos en la nube. Permite la creación de reglas que entregan eventos a servicios de OCI específicos, como OCI Streaming, OCI Functions (que sirven como una valiosa herramienta para procesar datos de eventos e integrar con otros servicios de OCI para ejecutar diversas acciones) y OCI Notifications.

Además, OCI Functions puede incorporar código para manejar los datos de carga útil recibidos de OCI Events y adaptar la actualización de la tabla NoSQL de Oracle según los requisitos de negocio específicos.

Esta arquitectura de referencia proporciona una visión general completa del uso de funciones de OCI junto con eventos de OCI para actualizar las tablas de Oracle NoSQL cuando se crean o modifican objetos en cubos de OCI Object Storage.

Arquitectura

En esta arquitectura de referencia se muestra cómo utilizar OCI Functions y OCI Events para actualizar una tabla NoSQL de Oracle cada vez que se crea o actualiza un archivo en OCI Object Storage.

El diagrama de arquitectura muestra un flujo de datos que comienza con la carga del archivo en un cubo de OCI Object Storage designado. Los disparadores de servicio de eventos se configuran para activarse en función de las condiciones de regla de eventos especificadas. El evento emitido, a su vez, llama a una función capaz de extraer datos del archivo cargado, realizar un procesamiento adicional según los requisitos de negocio y, en última instancia, actualizar la tabla NoSQL de Oracle con los datos procesados. Este enfoque ofrece ventajas significativas al aprovechar la arquitectura basada en eventos y facilitar el procesamiento de datos en tiempo real. Prueba un valor incalculable cuando es necesario preprocesar los datos antes de actualizar la tabla de destino y realizar las comprobaciones de validez necesarias para garantizar la integridad de los datos.

El caso de uso de negocio, donde los datos se deben analizar y actualizar en una tabla NoSQL de Oracle cada vez que se crea o actualiza un archivo en un cubo de OCI Object Storage, se puede lograr mediante el siguiente enfoque:

  1. Configure una regla de evento en Eventos de OCI para disparar Funciones de OCI cada vez que se crea o actualiza un objeto en el cubo de OCI Object Storage.
  2. Cree una función que reciba el evento disparado por la regla de evento. Esta función manejará el análisis y la actualización de datos en la tabla NoSQL de Oracle.
  3. En la función, implante la lógica necesaria para analizar los datos del objeto en el cubo de OCI Object Storage.
  4. Utilice el SDK o la API de OCI adecuados para interactuar con el servicio NoSQL de Oracle e insertar o actualizar registros en la tabla NoSQL de Oracle según los datos analizados.

Al combinar los servicios OCI Events, OCI Functions y Oracle NoSQL, podemos automatizar el proceso de análisis y actualización de datos en la tabla NoSQL de Oracle cada vez que se crea o actualiza un archivo en el cubo de OCI Object Storage. Este enfoque permite un procesamiento y sincronización de datos eficientes y optimizados entre OCI Object Storage y Oracle NoSQL.

En el siguiente diagrama se ilustra esta arquitectura de referencia.



object-storage-function-nosql-diagram-oracle.zip

Antes de empezar

  1. Configure la aplicación de funciones y cree una tabla NoSQL de Oracle mediante la consola de OCI.
  2. Recopile estos valores necesarios para configurar las variables de entorno para la aplicación de función.
    • Identificador de Usuario

      OCID del usuario con el que se va a autenticar.

    • ID de arrendamiento

      OCID de arrendamiento. Se puede encontrar en el perfil de usuario.

    • Huella

      Se utilizará para autenticarse en la API de OCI.

    • Región

      Identificador de la región en la que se van a crear las solicitudes.

    • Clave privada de API

      Ubicación de archivo de clave privada de API.

    • OCID de compartimento

      OCID de compartimento en el que se crea la tabla NoSQL de Oracle.

    • Tabla NoSQL

      Tabla de personas de ejemplo. Créelo con los siguientes atributos.

Clave principal Nombre de columna Tipo Clave compartida No nulo
Si id INTEGER Si Si
No nombre STRING No No
No edad INTEGER No No
No género STRING No No

La arquitectura tiene los siguientes componentes:

  • arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un solo arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una sola suscripción, y una única suscripción suele tener un solo arrendamiento.

  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones, y las grandes distancias pueden separarlas (entre países e incluso continentes).

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, es improbable que un fallo en un dominio de disponibilidad afecte a los otros dominios de la región.

  • Dominios de errores

    Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores con energía y hardware independientes. Al distribuir recursos entre varios dominios de errores, sus aplicaciones pueden tolerar fallos en el servidor físico, el mantenimiento del sistema y los fallos de energía dentro de un dominio de errores.

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red definida por software y personalizable que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan un control completo de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Lista de Seguridad

    Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.

  • Gateway de servicio

    El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico desde la VCN al servicio Oracle recorre el tejido de red de Oracle y no Internet.

  • Object Storage

    El almacenamiento de objetos proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin problemas sin experimentar ninguna degradación del rendimiento ni de la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento de acceso rápido al que debe acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivo para el almacenamiento en frío que conserva durante largos períodos de tiempo y a los que rara vez accede.

  • Eventos

    Los servicios de Oracle Cloud Infrastructure generan eventos, que son mensajes estructurados que describen los cambios en los recursos. Los eventos se emiten para operaciones de creación, lectura, actualización o supresión (CRUD), cambios de estado del ciclo de vida de los recursos y eventos del sistema que afectan a los recursos en la nube.

  • Funciones

    Oracle Cloud Infrastructure Functions es una plataforma de funciones como servicio (FaaS) totalmente gestionada, multicliente, altamente escalable y bajo demanda. Se basa en el motor de código abierto de Fn Project. Las funciones le permiten desplegar el código y o bien llamarlo directamente o dispararlo en respuesta a eventos. Oracle Functions utiliza contenedores de Docker alojados en Oracle Cloud Infrastructure Registry.

  • Registro
    Logging es un servicio altamente escalable y totalmente gestionado que proporciona acceso a los siguientes tipos de logs de sus recursos en la nube:
    • Logs de auditoría: logs relacionados con eventos emitidos por el servicio Audit.
    • Logs de servicios: logs emitidos por servicios individuales como API Gateway, Events, Functions, Load Balancing, Object Storage y logs de flujo de VCN.
    • Logs personalizados: logs que contienen información de diagnóstico de aplicaciones personalizadas, otros proveedores de nube o un entorno local.
  • NoSQL de Oracle

    Oracle NoSQL Database Cloud Service es un servicio de base de datos en la nube totalmente gestionado diseñado para operaciones de base de datos que requieren respuestas de latencia en milisegundo de un dígito predecible para consultas simples. Una vez que se haya autenticado con su cuenta de Oracle Cloud, puede crear una tabla de Oracle NoSQL y especificar los requisitos de rendimiento y almacenamiento para la tabla. Oracle reserva y gestiona los recursos para satisfacer sus requisitos, y le ofrece la capacidad que necesita. La capacidad se especifica utilizando unidades de lectura y escritura para el rendimiento global y GB para las unidades de almacenamiento.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida. Sus requisitos pueden ser diferentes de la arquitectura descrita aquí.
  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor de nube) a la que desea configurar conexiones privadas.

    Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.

    Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

  • Cloud Guard

    Clone y personalice las recetas por defecto que proporciona Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas le permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como públicos.

    Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa que supone el mantenimiento de varias configuraciones.

    También puede utilizar la función Lista gestionada para aplicar determinadas configuraciones a los detectores.

  • Funciones

    La función OCI en esta arquitectura se desarrolló con Python. Tenga en cuenta que OCI Functions soporta varios lenguajes de programación y puede utilizar el lenguaje que desee para desarrollar las funciones y desplegarlas.

  • NoSQL de Oracle

    Asegúrese de crear la tabla NoSQL de Oracle en el compartimento adecuado y de gestionar el acceso mediante las políticas de OCI Identity and Access Management (IAM). Es importante calcular con precisión la capacidad de lectura y escritura antes de crear la tabla. Consulte la documentación de Oracle y revise las recomendaciones para obtener instrucciones detalladas.

    En esta solución, se utiliza como ejemplo una tabla de ejemplo denominada "persona". Recuerde personalizar la función y el nombre de la tabla según sus requisitos específicos.

  • Almacenamiento de objetos de OCI

    Esta arquitectura utiliza el almacenamiento de objetos estándar para cargar un archivo. Asegúrese de activar Emitir eventos de objeto para que se puedan disparar los servicios de eventos. También se recomienda utilizar bloques privados para datos confidenciales.

  • Eventos de OCI

    En esta arquitectura, el servicio OCI Events está configurado para recibir cambios en OCI Object Storage para los eventos "Object Create" y "Object Update". El servicio se llama después de cargar el objeto en OCI Functions y llama a la función para su procesamiento.

Consideraciones

Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.

  • Rendimiento

    OCI Events, OCI Functions y Oracle NoSQL son servicios gestionados y altamente escalables. El servicio Oracle NoSQL proporciona rendimiento y aprovisionamiento de almacenamiento a demanda.

    Asegúrese de calcular las capacidades de rendimiento y almacenamiento de Oracle NoSQL Database Cloud Service antes del aprovisionamiento.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de OCI.

    Para OCI Object Storage, el cifrado está activado por defecto y no se puede desactivar.

    Se recomienda almacenar secretos y datos confidenciales en OCI Vault. Considere el uso de Funciones de OCI para almacenar claves de API, nombres de usuario de base de datos, contraseñas y tokens de autenticación utilizados para la autorización con servicios de OCI.

  • Disponibilidad

    Oracle garantiza una alta disponibilidad de los eventos de OCI, funciones de OCI, Oracle NoSQL y registro de OCI, que son nativos de la nube y están completamente gestionados.

  • Costo

    Pague solo por los recursos utilizados mientras se ejecuta una función.

Despliegue

El repositorio GitHub contiene el código de OCI Functions que implanta esta arquitectura de referencia.

  1. Vaya a GitHub.
  2. Clone o descargue el repositorio en la computadora local.
  3. Siga las instrucciones del documento README.

Explorar más

Para obtener más información sobre los servicios OCI Events, OCI Functions y NoSQL, consulte los siguientes recursos:

Revise estos recursos adicionales:

Acuses de recibo

Authors: Shan Duraipandian

Contributors: John Sulyok