Optimización del Rendimiento de Enlaces en la Nube con Vistas Materializadas

Las vistas materializadas mejoran el rendimiento de los enlaces en la nube al almacenar en caché los datos remotos localmente en la base de datos de consumidor y refrescarlos de forma incremental en lugar de volver a leer todo en la red cada vez.

Las vistas materializadas se suelen utilizar para mejorar el rendimiento, especialmente cuando se almacenan datos en una base de datos local que se obtiene de tablas o vistas remotas a través de un enlace de base de datos. Del mismo modo, las vistas materializadas se suelen utilizar en lugar de vistas cuando hay cálculos o resúmenes extensos, especialmente en juegos de datos de gran tamaño. Las vistas materializadas se refrescan en intervalos especificados, lo que significa que los datos no siempre están actualizados. Sin embargo, las consultas en estas vistas materializadas son significativamente más rápidas en estos casos de uso.

Refrescamiento de Vistas Materializadas

La base de datos mantiene los datos en las vistas materializadas refrescándolos después de los cambios realizados en las tablas base. El refrescamiento de una vista materializada actualiza automáticamente todos sus índices. En el caso del refrescamiento completo, se necesita un espacio de ordenación temporal para volver a crear todos los índices durante el refrescamiento.

Tipos de Refrescamiento para Vistas Materializadas:

A continuación se muestran los métodos de refrescamiento incremental para las vistas materializadas que utilizan enlaces en la nube:

  • refrescamiento basado en log

Para conocer diferentes métodos de refrescamiento, puede consultar el capítulo Refrescamiento de Vistas Materializadas.

Nota

El refrescamiento de seguimiento de cambios de partición (PCT) y el refrescamiento de seguimiento de cambios de partición lógica (LPCT) no están soportados para las vistas materializadas que utilizan enlaces en la nube.

Refrescamiento Incremental de Vistas Materializadas sobre Enlaces de Nube

El refrescamiento incremental se suele llamar refrescamiento FAST porque normalmente se realiza más rápido que el refrescamiento completo.

Un refrescamiento incremental elimina la necesidad de volver a crear vistas materializadas desde cero. Por lo tanto, el procesamiento solo de los cambios puede generar un tiempo de actualización muy rápido. En las vistas materializadas que utilizan el método de refrescamiento rápido basado en log, un log de vista materializada conserva un registro de los cambios realizados en las tablas base. Un log de vista materializada es un objeto de esquema que registra los cambios realizados en una tabla base para que una vista materializada definida en la tabla base se pueda refrescar de forma incremental. Cada log de vista materializada está asociado a una única tabla base. El Log de Vista Materializada reside en la misma Base de Datos y el esquema que su tabla base. Puede activar Oracle Autonomous AI Database para definir y refrescar vistas materializadas en tablas remotas a las que se accede mediante enlaces en la nube.

Autonomous AI Database Serverless realiza un refrescamiento incremental de las vistas materializadas mediante el refrescamiento FAST. Este método sólo aplica los cambios realizados desde el último refrescamiento, en lugar de realizar un refrescamiento completo de toda la vista materializada.

Con soporte de refrescamiento incremental:
  • Los paneles de control y los informes se pueden actualizar rápidamente sin recargas de datos completas, lo que permite realizar análisis casi en tiempo real.
  • Acuerdos de nivel de servicio (SLA) mejorados para cargas de trabajo de análisis a través de una actualización de datos mejorada.

Consulte Tipos de Vistas Materializadas para ver los distintos tipos de vistas materializadas que soportan el refrescamiento incremental con enlaces en la nube.

Registro de un Enlace de Nube con Refrescamiento Rápido de Vista Materializada

Debe registrar un enlace de nube para indicar que el refrescamiento rápido de la vista materializada está soportado. Utilice el procedimiento REGISTER en el paquete DBMS_CLOUD_LINK con el argumento MV_FAST_REFRESH para registrar el enlace de nube.

Supongamos que se ha creado una tabla de log de vista materializada en la tabla SALES_VIEW_AGG del esquema CLOUDLINK. A continuación, se puede registrar como un enlace en la nube con la capacidad de refrescamiento rápido activada mediante la transferencia del valor TRUE para el argumento MV_FAST_REFRESH en el procedimiento REGISTER.
BEGIN
   DBMS_CLOUD_LINK.REGISTER(
    schema_name     => 'CLOUDLINK',
    schema_object   => 'SALES_VIEW_AGG',
    namespace       => 'REGIONAL_SALES', 
    name            => 'SALES_AGG',
    description     => 'Aggregated regional sales information.',
    scope           => 'MY$TENANCY',
    auth_required   =>  FALSE,
    data_set_owner  =>  'tomholl@example.com',
    mv_fast_refresh =>  TRUE );
END;
/
Nota

Como proveedor, debe crear la tabla de log de vista materializada en la tabla base de la base de datos de proveedor que corresponde a la vista materializada en la base de datos de consumidor.

Consulte Procedimiento REGISTER para obtener más información.

Actualización de un Enlace de Nube con Refrescamiento Rápido de Vista Materializada

Puede actualizar un enlace de nube para indicar que el refrescamiento rápido de vista materializada está soportado en el enlace de nube.

Supongamos que un enlace en la nube está registrado sin capacidad de actualización rápida:
BEGIN
   DBMS_CLOUD_LINK.REGISTER(
    schema_name    => 'CLOUDLINK',
    schema_object  => 'SALES_ALL',
    namespace      => 'TRUSTED_COMPARTMENT', 
    name           => 'SALES',
    description    => 'Trusted Compartment, only accessible within my compartment. Early sales data.',
    scope          => 'MY$COMPARTMENT',
    auth_required  =>  FALSE,
    data_set_owner =>  'tomholl@example.com' );
END;
/

Supongamos que posteriormente se crea una tabla de log de vista materializada en la tabla SALES_ALL en el esquema CLOUDLINK. El enlace en la nube se puede actualizar para activar la capacidad de refrescamiento rápido mediante la transferencia del valor TRUE para el argumento MV_FAST_REFRESH en el procedimiento UPDATE_REGISTRATION.

BEGIN
   DBMS_CLOUD_LINK.UPDATE_REGISTRATION(
    namespace       => 'TRUSTED_COMPARTMENT', 
    name            => 'SALES',
    mv_fast_refresh => TRUE );
END;
/

El procedimiento UPDATE_REGISTRATION permite el refrescamiento rápido de vistas materializadas a través de enlaces en la nube al garantizar que se pueda acceder a la tabla de log de vistas materializadas a través del enlace en la nube. Para que sea accesible, debe transferir un valor de TRUE para el argumento MV_FAST_REFRESH.

Consulte el procedimiento UPDATE_REGISTRATION para obtener más información.

Puesto que el proveedor ha creado los logs de vistas materializadas necesarios. Debe refrescar los metadatos del enlace para asegurarse de que refleja las nuevas tablas de log.

Ejemplo: Caso de Uso de Refrescamiento Incremental de Vistas Materializadas

En este caso de uso se muestra cómo compartir datos entre dos instancias de Oracle Autonomous AI Database mediante Cloud Link y vistas materializadas de actualización rápida.

Considere una organización en la que el equipo de ventas Producer AI Autonomous Database (PRODUCER_DB) almacena transacciones de ventas en directo en una tabla denominada SALES_ALL dentro del esquema CLOUDLINK. El equipo de análisis Consumer AI Autonomous Database (CONSUMER_DB) en el mismo compartimento de OCI accede a estos datos de ventas a través de un enlace de nube registrado y crea una vista materializada de refrescamiento rápido TRUSTED_SALES_MV en el enlace de nube y consulta los datos activos para la generación de informes. Después de insertar una nueva venta de lámpara de escritorio en Producer, una actualización rápida sincroniza solo el cambio al consumidor para informes instantáneos.

El flujo de trabajo demuestra nueve pasos clave:
  1. El productor crea una tabla y carga los datos de ventas iniciales.
  2. El productor registra un enlace de nube para exponer la tabla.
  3. El productor crea un log de vista materializada para realizar un seguimiento de los cambios.
  4. El productor actualiza el registro de Cloud Link para permitir una actualización rápida.
  5. El consumidor crea una vista materializada en el enlace de nube.
  6. El consumidor consulta la vista materializada para verificar los datos iniciales.
  7. El productor inserta nuevas transacciones de venta.
  8. El consumidor realiza un refrescamiento rápido en la vista materializada.
  9. El consumidor vuelve a consultar la vista materializada para ver los datos actualizados.

Requisitos

Antes de implantar el refrescamiento incremental para las vistas materializadas a través de enlaces en la nube, asegúrese de que se cumplen los siguientes requisitos.

  • Los enlaces en la nube se configuran y prueban correctamente.
  • Se otorgan los privilegios adecuados a los usuarios que crearán y refrescarán vistas materializadas.
  • La base de datos del proveedor tiene configurado el registro de vistas materializadas para las tablas base.

En las siguientes secciones se describe el flujo de trabajo detallado para compartir datos entre dos instancias de Oracle Autonomous AI Database mediante Cloud Link y vistas materializadas de actualización rápida en un caso de uso práctico de ejemplo. Este flujo de trabajo y los ejemplos de código asociados se pueden modificar e implantar según sus necesidades.

Paso 1: Crear tabla y cargar datos de ventas iniciales

El equipo de ventas crea la tabla SALES_ALL que almacena todas las transacciones de confirmación de orden procedentes de la organización, capturando el ID de venta, el nombre del producto, la cantidad, el precio unitario y la fecha de venta. Carga diez transacciones iniciales que van desde el ratón inalámbrico hasta el altavoz Bluetooth.

CREATE TABLE SALES_ALL (
    sale_id       NUMBER PRIMARY KEY,
    product_name  VARCHAR2(100),
    quantity      NUMBER,
    unit_price    NUMBER(10, 2),
    sale_date     DATE DEFAULT SYSDATE
);

INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (1, 'Wireless Mouse', 2, 25.50, TO_DATE('2026-01-29', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (2, 'Mechanical Keyboard', 1, 89.99, TO_DATE('2026-01-20', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (3, 'USB-C Hub', 3, 45.00, TO_DATE('2026-01-21', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (4, '27-inch Monitor', 2, 299.99, TO_DATE('2026-01-22', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (5, 'Ergonomic Chair', 1, 350.00, TO_DATE('2026-01-23', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (6, 'HD Webcam', 5, 65.25, TO_DATE('2026-01-24', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (7, 'Laptop Stand', 2, 39.95, TO_DATE('2026-01-25', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (8, 'Noise Cancelling Headphones', 1, 199.00, TO_DATE('2026-01-26', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (9, 'External SSD 1TB', 4, 120.00, TO_DATE('2026-01-27', 'YYYY-MM-DD'));
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (10, 'Bluetooth Speaker', 3, 55.00, TO_DATE('2026-01-28', 'YYYY-MM-DD'));


COMMIT;

Paso 2: Registrar el enlace de la nube

Para compartir datos de ventas con el equipo de análisis, el DBA principal registra un enlace de nube en la tabla SALES_ALL. Este enlace en la nube denominado SALES en el espacio de nombres TRUSTED_COMPARTMENT es una ventana de solo lectura en los datos del productor. Dado que tanto las bases de datos de IA autónomas de productor como de consumidor están en el mismo compartimento de OCI, el DBA define el ámbito en MY$COMPARTMENT.

Registre el enlace a la nube mediante el procedimiento DBMS_CLOUD_LINK.REGISTER:
BEGIN
   DBMS_CLOUD_LINK.REGISTER(
    schema_name    => 'CLOUDLINK',
    schema_object  => 'SALES_ALL',
    namespace      => 'TRUSTED_COMPARTMENT', 
    name           => 'SALES',
    description    => 'Trusted Compartment, only accessible within my compartment. Early sales data.',
    scope          => 'MY$COMPARTMENT',
    auth_required  =>  FALSE,
    data_set_owner =>  'tomholl@example.com' );
END;
/

Paso 3: Crear Log De Vista Materializada

Para activar las actualizaciones de refrescamiento incremental, el DBA crea un log de vista materializada en SALES_ALL. Este log captura cada inserción, actualización y supresión, registrando la clave primaria, el ROWID y la información de secuencia necesaria para una actualización rápida.

Cree un log de vista materializada en SALES_ALL:
CREATE MATERIALIZED VIEW LOG ON SALES_ALL WITH PRIMARY KEY, ROWID, SEQUENCE INCLUDING NEW VALUES;

Con el log de vista materializada en lugar de explorar toda la tabla de productor, el consumidor solo puede solicitar los cambios desde el último refrescamiento.

Paso 4: Actualizar el enlace de la nube para un refrescamiento rápido

Con el log de vista materializada, el DBA actualiza el registro de enlace en la nube para activar el refrescamiento rápido de cualquier vista materializada creada en este enlace.

Actualice el registro de Cloud Link para activar el refrescamiento rápido:
BEGIN
   DBMS_CLOUD_LINK.UPDATE_REGISTRATION(
    namespace       => 'TRUSTED_COMPARTMENT', 
    name            => 'SALES',
    mv_fast_refresh => TRUE );
END;
/

La activación del refrescamiento rápido en el nivel de enlace en la nube permite a todos los consumidores beneficiarse de las actualizaciones de refrescamiento incrementales.

Paso 5: Crear Vista Materializada

En la instancia de base de datos de IA autónoma de consumidor, el equipo de análisis crea una vista materializada denominada TRUSTED_SALES_MV que selecciona todas las columnas del enlace en la nube. La vista materializada se configura con REFRESH FAST ON DEMAND, que utiliza el log de vista materializada del productor para aplicar solo cambios incrementales durante cada refrescamiento.

Cree la vista materializada de refrescamiento rápido en el consumidor:
CREATE MATERIALIZED VIEW TRUSTED_SALES_MV REFRESH FAST ON DEMAND AS SELECT * from TRUSTED_COMPARTMENT.SALES@CLOUD$LINK;

Los analistas pueden ejecutar agregaciones, uniones y filtros complejos en TRUSTED_SALES_MV sin que esto afecte al productor. Dado que está configurado para un refrescamiento rápido, el consumidor puede mantenerse sincronizado con el productor.

Paso 6: Consulta de la Vista Materializada

Los analistas consultan TRUSTED_SALES_MV para verificar si pueden ver las diez transacciones de venta iniciales. La consulta devuelve los nombres de productos, las cantidades y los precios unitarios de artículos como Wireless Mouse, Ergonomic Chair y External SSD 1TB que coinciden con los datos cargados en la tabla SALES_ALL del productor.

Consulte la vista materializada para recuperar los datos de ventas iniciales:
SELECT PRODUCT_NAME, QUANTITY, UNIT_PRICE FROM TRUSTED_SALES_MV;
Salida de ejemplo:
PRODUCT_NAME				QUANTITY	UNIT_PRICE
Wireless Mouse				2			25.50
Mechanical Keyboard			1			89.99
USB-C Hub					3			45.00
27-inch Monitor				2			299.99
Ergonomic Chair				1			350.00
HD Webcam					5			65.25
Laptop Stand				2			39.95
Noise Cancelling Headphones	1			199.00
External SSD 1TB			4			120.00
Bluetooth Speaker			3			55.00

La salida muestra los datos de ventas visibles en la vista materializada Consumidor. Los consumidores ahora pueden acceder a los datos de ventas sin tocar la base de datos de productores.

Paso 7: Insertar nuevos datos de ventas

Más tarde, la organización lanza una venta en lámparas de escritorio para compensar el exceso de inventario. Las transacciones nuevas se procesan y se insertan en SALES_ALL en el productor. El log de vista materializada captura automáticamente esta nueva fila, realizando un seguimiento del cambio para el siguiente refrescamiento de consumidor.

Insertar una nueva venta en SALES_ALL:
INSERT INTO SALES_ALL (sale_id, product_name, quantity, unit_price, sale_date) VALUES (11, 'Desk Lamp', 10, 24.99, TO_DATE('2026-01-29', 'YYYY-MM-DD'));

COMMIT;

El Productor continúa manejando transacciones en vivo independientemente del Consumidor. El log de vista materializada registra el cambio, lo que permite al consumidor obtener la información durante el siguiente refrescamiento.

Paso 8: Refrescamiento Rápido de la Vista Materializada

La base de datos de IA autónoma del consumidor dispara un refrescamiento rápido de TRUSTED_SALES_MV mediante el procedimiento DBMS_MVIEW.REFRESH con la opción 'F' (rápida). Durante el proceso de refrescamiento, TRUSTED_SALES_MV se actualiza localmente solo con la nueva fila Lámpara de escritorio del log de vista materializada del productor.

Realice un refrescamiento rápido en la vista materializada:
BEGIN
  DBMS_MVIEW.REFRESH('TRUSTED_SALES_MV', 'F');
END;
/

En lugar de volver a leer las diez (o miles) filas, el refrescamiento de la base de datos de IA autónoma del consumidor recupera solo la nueva fila que se agregó desde el último refrescamiento.

Paso 9: Consulta de Vista Materializada Actualizada

Los analistas vuelven a ejecutar la misma consulta y ahora ven once filas, incluida la lámpara de escritorio recién agregada con una cantidad de 10 y un precio unitario de 24,99. Los datos de venta están disponibles inmediatamente para la presentación de informes.

Consulte la vista materializada para ver los datos actualizados:
SELECT PRODUCT_NAME, QUANTITY, UNIT_PRICE FROM TRUSTED_SALES_MV;
Salida de ejemplo:
PRODUCT_NAME				QUANTITY	UNIT_PRICE
Wireless Mouse				2			25.50
Mechanical Keyboard			1			89.99
USB-C Hub					3			45.00
27-inch Monitor				2			299.99
Ergonomic Chair				1			350.00
HD Webcam					5			65.25
Laptop Stand				2			39.95
Noise Cancelling Headphones	1			199.00
External SSD 1TB			4			120.00
Bluetooth Speaker			3			55.00
Desk Lamp					10			24.99

La salida muestra los datos de ventas actualizados después de la actualización rápida, incluida la nueva venta de lámpara de escritorio.

La organización ha implantado correctamente un recurso compartido de datos mediante Oracle Autonomous AI Database Cloud Link y ha refrescado rápidamente las vistas materializadas.