Ottimizza le prestazioni dei collegamenti cloud con le viste materializzate

Le viste materializzate migliorano le prestazioni dei collegamenti cloud inserendo nella cache i dati remoti localmente nel database dei consumatori e aggiornandoli in modo incrementale invece di rileggere ogni cosa sulla rete ogni volta.

Le viste materializzate vengono spesso utilizzate per migliorare le prestazioni, in particolare quando si memorizzano dati in un database locale che provengono da tabelle o viste remote tramite un database link. Analogamente, le viste materializzate vengono spesso utilizzate al posto delle viste quando sono presenti calcoli o riepiloghi estesi, in particolare su set di dati di grandi dimensioni. Le viste materializzate vengono aggiornate a intervalli specificati, il che significa che i dati non sono sempre aggiornati. Tuttavia, le query su queste viste materializzate sono notevolmente più veloci in questi casi d'uso.

Aggiornamento di viste materializzate

Il database gestisce i dati nelle viste materializzate aggiornandoli dopo le modifiche apportate alle tabelle di base. L'aggiornamento di una vista materializzata aggiorna automaticamente tutti i relativi indici. In caso di aggiornamento completo, questo richiede uno spazio di ordinamento temporaneo per ricreare tutti gli indici durante l'aggiornamento.

Tipi di aggiornamento per le viste materializzate:

Di seguito sono riportati i metodi di aggiornamento incrementale per le viste materializzate che utilizzano i collegamenti cloud.

  • aggiornamento basato su log

Per i diversi metodi di aggiornamento, è possibile fare riferimento al capitolo Aggiornamento delle viste materializzate.

Nota

L'aggiornamento della registrazione delle modifiche alle partizioni (PCT) e l'aggiornamento della registrazione delle modifiche alle partizioni logiche (LPCT) non sono supportati per le viste materializzate che utilizzano collegamenti cloud.

Aggiornamento incrementale delle viste materializzate sui collegamenti cloud

L'aggiornamento incrementale è in genere chiamato aggiornamento FAST perché di solito viene eseguito più velocemente dell'aggiornamento completo.

Un aggiornamento incrementale elimina la necessità di ricreare le viste materializzate da zero. Pertanto, l'elaborazione solo delle modifiche può comportare un tempo di aggiornamento molto rapido. Per le viste materializzate che utilizzano il metodo di aggiornamento rapido basato su log, un log delle viste materializzate mantiene un record delle modifiche apportate alle tabelle di base. Un log delle viste materializzate è un oggetto schema che registra le modifiche apportate a una tabella di base in modo che una vista materializzata definita nella tabella di base possa essere aggiornata in modo incrementale. Ogni log delle viste materializzate è associato a una singola tabella di base. Il log delle viste materializzate si trova nello stesso database e schema della tabella di base. È possibile consentire a Oracle Autonomous AI Database di definire e aggiornare le viste materializzate sulle tabelle remote a cui si accede tramite collegamenti cloud.

Autonomous AI Database Serverless esegue l'aggiornamento incrementale delle viste materializzate utilizzando l'aggiornamento FAST. Questo metodo applica solo le modifiche apportate dopo l'ultimo aggiornamento, anziché eseguire un aggiornamento completo dell'intera vista materializzata.

Con il supporto dell'aggiornamento incrementale:
  • I dashboard e i report possono essere aggiornati rapidamente senza ricaricare i dati completi, consentendo analytics quasi in tempo reale.
  • Miglioramento degli accordi sul livello di servizio (SLA) per i carichi di lavoro di analytics attraverso una maggiore freschezza dei dati.

Fare riferimento alla sezione Tipi di viste materializzate per vari tipi di viste materializzate che supportano l'aggiornamento incrementale con i collegamenti cloud.

Registra un collegamento cloud con aggiornamento rapido delle viste materializzate

È necessario registrare un collegamento cloud per indicare che l'aggiornamento rapido della vista materializzata è supportato. Utilizzare la procedura REGISTER nel pacchetto DBMS_CLOUD_LINK con argomento MV_FAST_REFRESH per registrare il collegamento cloud.

Si supponga che sia stata creata una tabella di log delle viste materializzate nella tabella SALES_VIEW_AGG nello schema CLOUDLINK. Quindi può essere registrato come collegamento cloud con funzionalità di aggiornamento rapido abilitata passando il valore TRUE per l'argomento MV_FAST_REFRESH nella procedura 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

In qualità di provider, è necessario creare la tabella di log delle viste materializzate nella tabella di base nel database del provider che corrisponde alla vista materializzata nel database del consumer.

Per ulteriori informazioni, vedere Procedura REGISTER.

Aggiornamento rapido di un collegamento cloud con viste materializzate

È possibile aggiornare un collegamento cloud per indicare che l'aggiornamento rapido delle viste materializzate è supportato nel collegamento cloud.

Si supponga che un collegamento cloud sia registrato senza funzionalità di aggiornamento rapido:
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;
/

Si supponga che in seguito venga creata una tabella di log delle viste materializzate nella tabella SALES_ALL nello schema CLOUDLINK. Il collegamento cloud può essere aggiornato per abilitare la funzionalità di aggiornamento rapido passando il valore TRUE per l'argomento MV_FAST_REFRESH nella procedura UPDATE_REGISTRATION.

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

La procedura UPDATE_REGISTRATION consente l'aggiornamento rapido delle viste materializzate sui collegamenti cloud garantendo che la tabella di log delle viste materializzate sia accessibile tramite il collegamento cloud. Per renderlo accessibile, è necessario passare il valore TRUE per l'argomento MV_FAST_REFRESH.

Per ulteriori informazioni, vedere UPDATE_REGISTRATION Procedure.

Poiché il provider ha creato i log delle viste materializzate necessari. È necessario aggiornare i metadati del collegamento per assicurarsi che rifletta le nuove tabelle di log.

Esempio: caso d'uso dell'aggiornamento incrementale delle viste materializzate

Questo caso d'uso illustra come condividere i dati tra due istanze di Oracle Autonomous AI Database utilizzando Cloud Link e le viste materializzate di aggiornamento rapido.

Si consideri un'organizzazione in cui il producer AI Autonomous Database (PRODUCER_DB) del team di vendita memorizza le transazioni di vendita in tempo reale in una tabella denominata SALES_ALL all'interno dello schema CLOUDLINK. Il team di analytics Consumer AI Autonomous Database (CONSUMER_DB) nello stesso compartimento OCI accede a questi dati di vendita tramite un Cloud Link registrato e crea una vista materializzata TRUSTED_SALES_MV di aggiornamento rapido sul Cloud Link ed esegue query sui dati attivi per il reporting. Dopo aver inserito una nuova vendita di lampade da scrivania su Producer, un aggiornamento rapido sincronizza solo la modifica a Consumer per il reporting immediato.

Il flusso di lavoro illustra nove passi chiave:
  1. Il producer crea una tabella e carica i dati di vendita iniziali.
  2. Il producer registra un collegamento cloud per esporre la tabella.
  3. Il producer crea un log delle viste materializzate per tenere traccia delle modifiche.
  4. Il producer aggiorna la registrazione di Cloud Link per abilitare l'aggiornamento rapido.
  5. Il consumatore crea una vista materializzata sul collegamento cloud.
  6. Il consumer esegue una query sulla vista materializzata per verificare i dati iniziali.
  7. Il produttore inserisce nuove transazioni di vendita.
  8. Il consumer esegue un aggiornamento rapido sulla vista materializzata.
  9. Il consumer esegue di nuovo una query sulla vista materializzata per visualizzare i dati aggiornati.

Requisiti indispensabili

Prima di implementare l'aggiornamento incrementale per le viste materializzate sui collegamenti cloud, assicurarsi che vengano soddisfatti i prerequisiti riportati di seguito.

  • I collegamenti cloud vengono configurati e sottoposti a test in modo appropriato.
  • Agli utenti che creeranno e aggiorneranno le viste materializzate vengono concessi privilegi appropriati.
  • Il database provider dispone di log delle viste materializzate configurati per le tabelle di base.

Nelle sezioni seguenti viene descritto il flusso di lavoro dettagliato per la condivisione dei dati tra due istanze di Oracle Autonomous AI Database utilizzando Cloud Link e le viste materializzate con aggiornamento rapido in un caso d'uso pratico di esempio. Questo flusso di lavoro e gli esempi di codice associati possono essere modificati e implementati in base alle proprie esigenze.

Passo 1: creazione tabella e caricamento dati vendite iniziali

Il team vendite crea la tabella SALES_ALL che memorizza ogni transazione di checkout proveniente dall'organizzazione, acquisendo l'ID vendita, il nome del prodotto, la quantità, il prezzo unitario e la data di vendita. Carica dieci transazioni iniziali che vanno dal mouse wireless all'altoparlante 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;

Passo 2: registrare il collegamento cloud

Per condividere i dati di vendita con il team di analisi, il DBA lead registra un collegamento cloud nella tabella SALES_ALL. Questo collegamento cloud denominato SALES nello spazio di nomi TRUSTED_COMPARTMENT è una finestra di sola lettura nei dati del producer. Poiché i database AI autonomi di produttori e consumatori si trovano nello stesso compartimento OCI, il DBA imposta l'ambito su MY$COMPARTMENT.

Registrare il collegamento cloud utilizzando la procedura 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;
/

Passo 3: creare il log delle viste materializzate

Per abilitare gli aggiornamenti incrementali di aggiornamento, il DBA crea un log delle viste materializzate su SALES_ALL. Questo log acquisisce tutte le informazioni di inserimento, aggiornamento ed eliminazione, registrando la chiave primaria, ROWID e sequenza necessarie per l'aggiornamento rapido.

Creare un log delle viste materializzate su SALES_ALL:
CREATE MATERIALIZED VIEW LOG ON SALES_ALL WITH PRIMARY KEY, ROWID, SEQUENCE INCLUDING NEW VALUES;

Con il log delle viste materializzate invece di eseguire la scansione dell'intera tabella Produttore, il consumatore può richiedere solo le modifiche dall'ultimo aggiornamento.

Passo 4: aggiornare il collegamento cloud per l'aggiornamento rapido

Con il log delle viste materializzate, il DBA aggiorna la registrazione di Cloud Link per abilitare l'aggiornamento rapido per qualsiasi vista materializzata creata su questo collegamento.

Aggiornare la registrazione Cloud Link per abilitare l'aggiornamento rapido:
BEGIN
   DBMS_CLOUD_LINK.UPDATE_REGISTRATION(
    namespace       => 'TRUSTED_COMPARTMENT', 
    name            => 'SALES',
    mv_fast_refresh => TRUE );
END;
/

L'abilitazione dell'aggiornamento rapido a livello di Cloud Link consente a tutti i consumatori di trarre vantaggio dagli aggiornamenti di aggiornamento incrementali.

Passo 5: Creare una vista materializzata

Nell'istanza di Consumer Autonomous AI Database, il team di analytics crea una vista materializzata denominata TRUSTED_SALES_MV che seleziona tutte le colonne da Cloud Link. La vista materializzata viene configurata con REFRESH FAST ON DEMAND, che utilizza il log delle viste materializzate del producer per applicare solo modifiche incrementali durante ogni aggiornamento.

Creare una vista materializzata con aggiornamento rapido nel consumer:
CREATE MATERIALIZED VIEW TRUSTED_SALES_MV REFRESH FAST ON DEMAND AS SELECT * from TRUSTED_COMPARTMENT.SALES@CLOUD$LINK;

Gli analisti possono eseguire aggregazioni, join e filtri complessi in TRUSTED_SALES_MV senza alcun impatto sul producer. Poiché è configurato per l'aggiornamento rapido, il consumatore può rimanere sincronizzato con il produttore.

Passo 6: Esecuzione di query sulla vista materializzata

Gli analisti eseguono una query su TRUSTED_SALES_MV per verificare se possono visualizzare le dieci transazioni di vendita iniziali. La query restituisce i nomi dei prodotti, le quantità e i prezzi unitari per articoli quali Mouse wireless, Sedia ergonomica e SSD esterno 1TB corrispondenti ai dati caricati nella tabella SALES_ALL del produttore.

Eseguire una query sulla vista materializzata per recuperare i dati di vendita iniziali:
SELECT PRODUCT_NAME, QUANTITY, UNIT_PRICE FROM TRUSTED_SALES_MV;
Output di esempio:
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

L'output visualizza i dati delle vendite visibili nella vista materializzata Consumatore. I consumatori ora possono accedere ai dati di vendita senza toccare il database dei produttori.

Passo 7: inserimento di nuovi dati di vendita

Più tardi nella giornata, l'organizzazione lancia una vendita su lampade da scrivania per cancellare l'inventario in eccesso. Le nuove transazioni vengono elaborate e inserite in SALES_ALL nel producer. Il log delle viste materializzate acquisisce automaticamente questa nuova riga, tenendo traccia delle modifiche per il successivo aggiornamento del consumer.

Inserire una nuova vendita in 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;

Il Produttore continua a gestire le transazioni live indipendentemente dal Consumatore. Il log delle viste materializzate registra la modifica, consentendo al consumatore di ottenere le informazioni durante l'aggiornamento successivo.

Passo 8: aggiornamento rapido della vista materializzata

Consumer Autonomous AI Database attiva un aggiornamento rapido di TRUSTED_SALES_MV utilizzando la procedura DBMS_MVIEW.REFRESH con l'opzione 'F' (veloce). Durante il processo di aggiornamento, TRUSTED_SALES_MV viene aggiornato localmente solo con la nuova riga Lampada da tavolo del log delle viste materializzate del producer.

Eseguire un aggiornamento rapido della vista materializzata:
BEGIN
  DBMS_MVIEW.REFRESH('TRUSTED_SALES_MV', 'F');
END;
/

Invece di rileggere tutte le dieci (o migliaia) righe, l'aggiornamento di Consumer Autonomous AI Database recupera solo la nuova riga aggiunta dopo l'ultimo aggiornamento.

Passo 9: Query aggiornata - Vista materializzata

Gli analisti eseguono di nuovo la stessa query e ora vedono undici righe, tra cui la nuova lampada da tavolo aggiunta con una quantità di 10 e un prezzo unitario di 24,99. I dati di vendita sono immediatamente disponibili per la segnalazione.

Eseguire una query sulla vista materializzata per visualizzare i dati aggiornati:
SELECT PRODUCT_NAME, QUANTITY, UNIT_PRICE FROM TRUSTED_SALES_MV;
Output di esempio:
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

L'output visualizza i dati di vendita aggiornati dopo l'aggiornamento rapido, inclusa la nuova vendita di lampade da tavolo.

L'organizzazione ha implementato con successo una condivisione di dati utilizzando Oracle Autonomous AI Database Cloud Link e le viste materializzate di aggiornamento rapido.