Creazione e modifica di oggetti per viaggi nel tempo

Panoramica

Per eseguire le query di viaggio nel tempo su NPSaaS, creare una tabella di viaggio nel tempo, uno schema o un database (oggetti di viaggio nel tempo) impostando DATA_VERSION_RETENTION_TIME (intervallo di tempo di conservazione) su un valore diverso da zero. Per impostare DATA_VERSION_RETENTION_TIME, utilizzare il comando CREATE o ALTER per questi tipi di oggetto o utilizzare la console web. È possibile selezionare un valore compreso tra 1 e 99 giorni o zero per modificare un oggetto temporale in non temporale.

Prima di impostare gli intervalli di tempo di conservazione per tutte le tabelle in uno schema o in un database, considerare il costo di archiviazione per le tabelle temporali, che potrebbe essere significativo. Vedi Gestione dell'utilizzo dello spazio di viaggio nel tempo.

Inoltre, è possibile impostare un valore predefinito DATA_VERSION_RETENTION_TIME per il sistema.

Le tabelle temporali di solito hanno righe correnti e righe cronologiche. Le righe correnti non sono contrassegnate per l'eliminazione. Le righe cronologiche sono contrassegnate per l'eliminazione (dalle istruzioni DELETE, UPDATE, MERGE o TRUNCATE ) e sono visibili per le query di viaggio nel tempo fino all'intervallo di tempo di conservazione specificato dopo la data / ora di eliminazione.

Una tabella con valore DATA_VERSION_RETENTION_TIME pari a zero è non temporale. Solo le sue righe correnti (non eliminate) sono visibili alle interrogazioni. Alcune righe cronologiche potrebbero essere conservate per scopi di backup incrementale, ma le righe non sono accessibili per le query di viaggio nel tempo.

Se si modifica DATA_VERSION_RETENTION_TIME di una tabella temporale esistente su zero, la tabella diventa una tabella non temporale. Non supporta più l'accesso ai dati cronologici con query di viaggio nel tempo.

Limitazioni

Le modifiche agli intervalli di tempo di conservazione per tabelle, schemi e database non vengono replicati dai nodi primari a quelli di replica. Non si tratta nemmeno di righe di tabella cronologiche (eliminate).

Gli intervalli di tempo di conservazione di tabelle, schemi e database vengono automaticamente sottoposti a backup dal comando nzbackup e ripristinati dal comando nzrestore. Le date / ore di inserimento ed eliminazione delle righe della tabella non vengono sottoposte a backup e ripristinate. Le righe ripristinate ottengono nuove date / ore di inserimento nel sistema o nel database di destinazione e le righe che sono state eliminate dal ripristino incrementale ricevono nuove date / ore di eliminazione nel sistema o nel database di destinazione. Non c'è alcuna previsione o garanzia che il numero di versioni cronologiche di una riga sulla destinazione corrisponda a quello sul database di origine. Ad esempio, una riga specifica potrebbe essere aggiornata più volte o potrebbe essere aggiornata ed eliminata tra gli incrementi di backup sull'origine. Questa azione determina una singola eliminazione di tale riga sulla destinazione.

Se tenti di espandere il sistema NPSaaS con ulteriori enclosure SPU, la procedura comporta la perdita di righe cronologiche (eliminate). Tutte le righe correnti vengono ridistribuite con nuove date / ore di inserimento.

I seguenti tipi di tabelle non possono essere tabelle temporali:

  • Tabelle temporanee
  • Tabelle esterne
  • Tabelle con versione che sono state modificate aggiungendo e / o eliminando le colonne
  • Tabelle protette da righe.

Questa limitazione riguarda i comandi seguenti:

Il comando GROOM TABLE VERSIONS trasforma una tabella con versione in una senza versione. Quando ciò accade, è possibile specificare un valore diverso da zero DATA_VERSION_RETENTION_TIME con il comando ALTER TABLE.

Eccezioni correlate a DATA_VERSION_RETENTION_TIME per watsonx.data

Esistono eccezioni per watsonx.data relative a DATA_VERSION_RETENTION_TIME. La seguente tabella descrive la funzionalità di DATA_VERSION_RETENTION_TIME per i database, schemi e tabelle per watsonx.data.

Comportamento ed eccezioni
Modalità di funzionamento Eccezione
CREATE DATABASE con DATA_VERSION_RETENTION_TIME per watsonx.data Non consentito
ALTER DATABASE con DATA_VERSION_RETENTION_TIME per watsonx.data Non consentito
CREATE SCHEMA con DATA_VERSION_RETENTION_TIME per watsonx.data Non consentito
ALTER SCHEMA con DATA_VERSION_RETENTION_TIME per watsonx.data Non consentito tranne che per NETEZZA_SCHEMA
CREATE TABLE con tabella DATA_VERSION_RETENTION_TIME (temporale) Consentito solo in NETEZZA_SCHEMA
ALTER TABLE con tabella DATA_VERSION_RETENTION_TIME (temporale) Consentito solo in NETEZZA_SCHEMA

Se SYSTEM DEFAULT DATA_VERSION_RETENTION_TIME è diverso da zero, CREATE DATABASE non erediterà la proprietà da SYSTEM DEFAULT. CREATE SCHEMA incluso NETEZZA_SCHEMA non erediterà la proprietà DB. Non ci saranno impatti o modifiche necessari per l'attività di automazione relativa al viaggio nel tempo per watsonx.data.

Creazione di oggetti di viaggio nel tempo con la riga comandi

Creazione di tabelle temporali con la riga comandi

Per creare una tabella temporale, impostare DATA_VERSION_RETENTION_TIME su un valore diverso da zero.

Per la sintassi e i privilegi dettagliati, consultare il comando CREATE TABLE.

CREATE TABLE <tablename> ( <col>[, <col>… ] ) DATA_VERSION_RETENTION_TIME <number-of-days>;

Esempio:

CREATE TABLE PRODUCT (prodid int, proddesc char(100)) DATA_VERSION_RETENTION_TIME 30;

Quando si inserisce una riga nella tabella, la riga riceve una data / ora di inserimento virtuale uguale all'ora di commit della transazione di inserimento.

Quando si elimina una riga dalla tabella, la riga riceve una data / ora di eliminazione virtuale uguale all'ora di commit della transazione di eliminazione (o troncamento).

Creazione di schemi temporali con la riga comandi

Per creare uno schema temporale, impostare DATA_VERSION_RETENTION_TIME su un valore diverso da zero.

Per la sintassi e i privilegi dettagliati, consultare il comando CREATE SCHEMA.

CREATE SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days>;

Esempio:

CREATE SCHEMA SCHEMA1 DATA_VERSION_RETENTION_TIME 30;

Creazione di database temporali con la riga di comando

Per creare un database temporale, impostare DATA_VERSION_RETENTION_TIME su un valore diverso da zero.

Per la sintassi dettagliata e i privilegi, consultare il comando CREATE DATABASE.

CREATE DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days>;

Esempio:

CREATE DATABASE DB1 DATA_VERSION_RETENTION_TIME 30;

Creazione di oggetti di viaggio nel tempo con la console Web

Creazione di tabelle temporali con la console Web

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Creare una tabella temporale come descritto in Creazione di tabelle.

È necessario impostare intervallo di tempo di conservazione su un valore diverso da zero.

Database, schemi e nomi tabella contenenti un carattere punto (".") non vengono visualizzati nei grafici e nelle statistiche di viaggio temporale quando si imposta l'intervallo di tempo di conservazione su un valore diverso da zero. Quando non si imposta l'intervallo di tempo di conservazione, sono supportati tutti i caratteri speciali.

Quando si inserisce una riga nella tabella, la riga riceve una data / ora di inserimento virtuale uguale all'ora di commit della transazione di inserimento.

Quando si elimina una riga dalla tabella, la riga riceve una data / ora di eliminazione virtuale uguale all'ora di commit della transazione di eliminazione (o troncamento).

Creazione di schemi temporali con la console Web

Per creare uno schema temporale, impostare intervallo di tempo di conservazione su un valore diverso da zero.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Creare uno schema temporale come descritto in Creazione di schemi.

Creazione di database temporali con la riga di comando

Per creare un database temporale, impostare intervallo di tempo di conservazione su un valore diverso da zero.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Creare un database temporale come descritto in Creazione di database.

Modifica degli oggetti di viaggio nel tempo con la riga comandi

Modifica delle tabelle temporali in non temporali con la riga comandi

Per modificare una tabella temporale in non temporale, impostare DATA_VERSION_RETENTION_TIME su 0.

Per la sintassi dettagliata e i privilegi necessari, consultare il comando ALTER TABLE.

ALTER TABLE <table> DATA_VERSION_RETENTION_TIME 0;

Esempio:

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 0;

Quando si imposta DATA_VERSION_RETENTION_TIME su 0, non è possibile eseguire le query di viaggio nel tempo e non si ha più accesso alle righe cronologiche per tale tabella. È possibile recuperare alcune o tutte le righe cronologiche ora inaccessibili nella tabella con GROOM TABLE.

Modifica delle tabelle non temporali in tabelle temporali con la riga comandi

Per modificare una tabella non temporale in temporale, impostare DATA_VERSION_RETENTION_TIME] su un valore diverso da zero.

Per la sintassi dettagliata e i privilegi necessari, consultare il comando ALTER TABLE.

ALTER TABLE <table> DATA_VERSION_RETENTION_TIME <number-of-days>;

Esempio:

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 30;

Se prima si disabilita la tabella temporale e poi si converte la stessa tabella in una tabella temporale, non si ha accesso alle righe cronologiche precedenti per tale tabella. I dati cronologici vengono raccolti quando le righe vengono eliminate o aggiornate dopo che la tabella viene convertita in temporale.

Come con il comando CREATE TABLE, una riga inserita nella tabella riceve una data / ora di inserimento virtuale uguale alla data / ora di commit della transazione di inserimento. Una riga eliminata dalla tabella riceve una data / ora di eliminazione virtuale uguale all'ora di commit della transazione di eliminazione (o troncamento). Il limite inferiore di conservazione della tabella e l'ora di inizio della conservazione sono uguali o immediatamente precedenti al tempo di commit di questa transazione ALTER TABLE.

A differenza del comando CREATE TABLE, che non ha alcuna riga esistente, le righe visibili esistenti nella tabella vengono considerate come se fossero state inserite da questa transazione ALTER TABLE. Le righe visibili esistenti ricevono date / ore di inserimento virtuali uguali all'ora di avvio della conservazione. Con queste date / ore, le righe sono potenzialmente visibili per le query di viaggio nel tempo.

Modifica degli schemi temporali in non temporali con la riga comandi

Per modificare uno schema temporale in non temporale, impostare DATA_VERSION_RETENTION_TIME su 0.

Per la sintassi dettagliata, i privilegi necessari e l'opzione CASCADE, consultare il comando ALTER SCHEMA.

ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Esempio:

ALTER SCHEMA SCHEMA DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Modifica di schemi non temporali in temporali con la riga comandi

Per modificare uno schema non temporale in temporale, impostare DATA_VERSION_RETENTION_TIME su un valore diverso da zero.

Per la sintassi dettagliata, i privilegi necessari e l'opzione CASCADE, consultare il comando ALTER SCHEMA.

ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;

Esempio:

ALTER SCHEMA DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

Modifica dei database temporali in non temporali con la riga comandi

Per modificare un database temporale in non temporale, impostare DATA_VERSION_RETENTION_TIME su 0.

Per la sintassi dettagliata e i privilegi necessari, consultare il comando ALTER DATABASE.

ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Esempio:

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Modifica dei database non temporali in temporali con la riga comandi

Per modificare un database non temporale in temporale, impostare DATA_VERSION_RETENTION_TIME su un valore diverso da zero.

Per la sintassi dettagliata e i privilegi necessari, consultare il comando ALTER DATABASE.

ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;

Esempio:

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

Modifica degli oggetti di viaggio temporale con la console Web

Modifica delle tabelle temporali in non temporali con la console Web

Per modificare una tabella temporale in non temporale, impostare intervallo di tempo di conservazione su 0.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la tabella come descritto in Aggiornamento dell'intervallo di tempo di conservazione per le tabelle.

Quando si imposta intervallo di tempo di conservazione su 0, non è possibile eseguire query di viaggio nel tempo e non si ha più accesso alle righe cronologiche per tale tabella. È possibile recuperare alcune o tutte le righe cronologiche ora inaccessibili nella tabella con GROOM TABLE.

Modifica delle tabelle non temporali in temporali con la console Web

Per modificare una tabella non temporale in temporale, impostare intervallo di tempo di conservazione su un valore diverso da zero.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la tabella come descritto in Aggiornamento dell'intervallo di tempo di conservazione per le tabelle.

Se prima si disabilita la tabella temporale e poi si converte la stessa tabella in una tabella temporale, non si ha accesso alle righe cronologiche precedenti per tale tabella. I dati cronologici vengono raccolti quando le righe vengono eliminate o aggiornate dopo che la tabella viene convertita in temporale.

Analogamente a quando si crea una tabella, una riga inserita nella tabella riceve una data / ora di inserimento virtuale che è uguale al tempo di commit della transazione di inserimento. Una riga eliminata dalla tabella riceve una data / ora di eliminazione virtuale uguale all'ora di commit della transazione di eliminazione (o troncamento). Il limite inferiore di conservazione della tabella e l'ora di inizio della conservazione sono uguali o immediatamente precedenti al tempo di commit di questa transazione di modifica.

A differenza di quando si crea una tabella, le righe visibili esistenti nella tabella vengono considerate come se fossero state inserite da questa transazione di modifica. Le righe visibili esistenti ricevono date / ore di inserimento virtuali uguali all'ora di avvio della conservazione. Con queste date / ore, le righe sono potenzialmente visibili per le query di viaggio nel tempo.

Modifica degli schemi temporali in non temporali con la console Web

Per modificare uno schema temporale in non temporale, impostare intervallo di tempo di conservazione su 0.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la tabella come descritto in Aggiornamento dell'intervallo di conservazione per gli schemi.

Modifica di schemi non temporali in temporali con la console Web

Per modificare uno schema non temporale in temporale, impostare intervallo di tempo di conservazione su un valore diverso da zero.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la tabella come descritto in Aggiornamento dell'intervallo di conservazione per gli schemi.

Modifica dei database temporali in non temporali con la console Web

Per modificare un database temporale in non temporale, impostare intervallo di tempo di conservazione su 0.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la propria tabella come descritto in Aggiornamento dell'intervallo di tempo di conservazione per database.

Modifica dei database non temporali in temporali con la console Web

Per modificare un database non temporale in temporale, impostare intervallo di tempo di conservazione su un valore diverso da zero.

  1. Accedi alla console web come descritto in Introduzione alla console web.
  2. Modificare la propria tabella come descritto in Aggiornamento dell'intervallo di tempo di conservazione per database.

Cosa fare successivamente

Dopo aver creato gli oggetti di viaggio nel tempo, è possibile iniziare a eseguire le query di viaggio nel tempo. Per ulteriori informazioni, consulta i seguenti link: