Embebido de Base de Datos Nativa con @DBFUNCTION

Oracle GoldenGate proporciona potentes capacidades de transformación durante la replicación de datos, incluida la capacidad de llamar a funciones que residen en la base de datos mediante la estructura @DBFUNCTION. Esta función permite a las organizaciones integrar el procesamiento basado en IA, como la generación de incrustaciones vectoriales, directamente en el pipeline de replicación de datos, eliminando la necesidad de pasos de posprocesamiento separados y permitiendo un verdadero enriquecimiento de datos de IA en tiempo real.

La capacidad @DBFUNCTION permite a los procesos de GoldenGate Replicat ejecutar funciones del lado de la base de datos en línea a medida que se aplican datos al sistema de destino. Esto significa que a medida que se replica cada transacción, se puede ejecutar una lógica adicional, como la generación de incrustaciones a partir de texto, en el contexto de la base de datos. Al incorporar la lógica de transformación directamente en el flujo de replicación, las organizaciones pueden garantizar que los datos vectoriales se creen de forma síncrona con la ingestión de datos, manteniendo la consistencia y minimizando la latencia.

Un flujo de trabajo de incrustación típico en tiempo real que utiliza GoldenGate y @DBFUNCTION procede de la siguiente manera:

  1. El proceso de extracción GoldenGate captura una transacción de origen.

  2. Los datos de cambio se transmiten al entorno de destino mediante el archivo de pista GoldenGate.

  3. El proceso Replicat aplica la transacción y llama a @DBFUNCTION para llamar a una función de embebido que reside en la base de datos. En el siguiente ejemplo, la llamada @DBFUNCTION está llamando realmente a una función de envoltorio PL/SQL que realizaría la función de embebido más compleja.

  4. La incrustación se genera en tiempo real y se almacena en una tabla de destino, normalmente en una columna VECTOR para casos de uso de búsqueda de similitud e IA descendentes. Este flujo estrechamente integrado garantiza que las incrustaciones siempre estén sincronizadas con sus correspondientes datos de origen, al tiempo que mantiene la consistencia transaccional. El siguiente ejemplo ilustra cómo se puede utilizar @DBFUNCTION en una configuración de asignación GoldenGate para generar incrustaciones a partir de datos de texto:

      MAP schema.source_table, TARGET schema.target_table,
            COLMAP (
            USEDEFAULTS,
            vector_col = @DBFUNCTION(
                OGGADMIN.CREATE_VECTOR(@AFTER.address, @AFTER.city)
           )
         );

En este ejemplo, la función OGGADMIN.CREATE_VECTOR se ejecuta para cada fila replicada, utilizando los datos entrantes de la dirección y la ciudad como entrada para transformar el texto sin formato en una representación vectorial en el momento de la aplicación. OGGADMIN.CREATE_VECTOR va a embeber los datos. Las formas comunes son a través de llamadas de paquetes VECTOR_EMBEDDING() o DBMS_VECTOR.UTL_TO_EMBEDDING().

@DBFUNCTION Mejores prácticas

Para garantizar un funcionamiento eficiente y fiable, se deben seguir varias mejores prácticas al utilizar @DBFUNCTION para la integración en tiempo real. Las funciones embebidas deben estar diseñadas para ser deterministas y de alto rendimiento, ya que se ejecutan dentro de la ruta de replicación y pueden afectar directamente al rendimiento.

Siempre que sea posible, las organizaciones deben aprovechar las capacidades de Oracle AI Vector Search o llamar a servicios de IA externos a través de envoltorios PL/SQL optimizados para integrar la generación. Se deben implementar mecanismos sólidos de manejo de errores y reintentos para abordar fallos transitorios en la generación de embebido, especialmente cuando hay servicios externos involucrados.

Por último, se deben evitar o descargar las funciones de larga ejecución o que requieren muchos recursos, ya que pueden introducir un retraso de replicación y reducir la escalabilidad general del sistema. Resumen de patrón de incrustación: seleccione @AISERVICE para la inferencia externa o respaldada por GPU, elija @DBFUNCTION para la lógica de incrustación residente en la base de datos y considere la incrustación asíncrona cuando las llamadas síncronas creen un retraso de aplicación.