Création et modification d'objets pour le voyage dans le temps

Présentation

Pour exécuter des requêtes de déplacement temporel sur NPSaaS, créez une table de déplacement temporel, un schéma ou une base de données (objets de déplacement temporel) en définissant DATA_VERSION_RETENTION_TIME (intervalle de temps de conservation) sur une valeur différente de zéro. Pour définir DATA_VERSION_RETENTION_TIME, utilisez la commande CREATE ou ALTER pour ces types d'objet ou utilisez la console Web. Vous pouvez sélectionner entre 1 jour et jusqu'à 99 jours, ou zéro pour modifier un objet temporel en objet non temporel.

Avant de définir les intervalles de temps de conservation pour toutes les tables d'un schéma ou d'une base de données, prenez en compte le coût de stockage des tables temporelles, qui peut être important. Voir Gestion de l'utilisation de l'espace de voyage dans le temps.

Vous pouvez également définir une valeur par défaut DATA_VERSION_RETENTION_TIME pour le système.

Les tables temporelles comportent généralement des lignes en cours et des lignes historiques. Les lignes en cours ne sont pas marquées pour suppression. Les lignes d'historique sont marquées pour suppression (par les instructions DELETE, UPDATE, MERGE ou TRUNCATE ) et sont visibles pour les requêtes de déplacement temporel jusqu'à l'intervalle de temps de conservation spécifié au-delà de leurs horodatages de suppression.

Une table avec une valeur DATA_VERSION_RETENTION_TIME égale à zéro est non temporelle. Seules ses lignes en cours (non supprimées) sont visibles pour les requêtes. Certaines lignes d'historique peuvent être conservées à des fins de sauvegarde incrémentielle, mais les lignes ne sont pas accessibles aux requêtes de déplacement temporel.

Si vous modifiez DATA_VERSION_RETENTION_TIME d'une table temporelle existante à zéro, la table devient une table non temporelle. Il ne prend plus en charge l'accès aux données d'historique avec les requêtes de déplacement dans le temps.

Limitations

Les modifications apportées aux intervalles de conservation pour les tables, les schémas et les bases de données ne sont pas répliquées des noeuds principaux vers les noeuds de réplique. Il ne s'agit pas non plus de lignes de table historiques (supprimées).

Les intervalles de conservation des tables, des schémas et des bases de données sont automatiquement sauvegardés par la commande nzbackup et restaurés par la commande nzrestore. Les horodatages d'insertion et de suppression des lignes de la table ne sont pas sauvegardés et restaurés. Les lignes restaurées obtiennent de nouveaux horodatages d'insertion dans la base de données ou le système cible, et les lignes qui ont été supprimées par la restauration incrémentielle obtiennent de nouveaux horodatages de suppression dans la base de données ou le système cible. Il n'y a aucune attente ni garantie que le nombre de versions historiques d'une ligne sur la cible correspondra à celui de la base de données source. Par exemple, une ligne spécifique peut être mise à jour plusieurs fois, ou être mise à jour, puis supprimée, entre les incréments de sauvegarde sur la source. Cette action entraîne une suppression unique de cette ligne sur la cible.

Si vous essayez de développer votre système NPSaaS avec des boîtiers SPU supplémentaires, la procédure entraîne la perte de lignes historiques (supprimées). Toutes les lignes en cours sont redistribuées avec de nouveaux horodatages d'insertion.

Les types de table suivants ne peuvent pas être des tables temporelles:

  • Tables temporaires
  • Tables externes
  • Tables versionnées qui ont été modifiées par l'ajout et/ou la suppression de colonnes
  • Tables sécurisées par des lignes.

Cette limitation affecte les commandes suivantes:

La commande GROOM TABLE VERSIONS transforme une table versionnée en table non versionnée. Dans ce cas, vous pouvez spécifier un DATA_VERSION_RETENTION_TIME différent de zéro à l'aide de la commande ALTER TABLE.

Exceptions liées à DATA_VERSION_RETENTION_TIME pour watsonx.data

Il existe des exceptions pour watsonx.data liées à DATA_VERSION_RETENTION_TIME. Le tableau suivant décrit le comportement de la propriété DATA_VERSION_RETENTION_TIME pour les bases de données, les schémas et les tables de watsonx.data.

Comportement et exceptions
Comportement Exception
CREATE DATABASE avec DATA_VERSION_RETENTION_TIME pour watsonx.data Non autorisé
ALTER DATABASE avec DATA_VERSION_RETENTION_TIME pour watsonx.data Non autorisé
CREATE SCHEMA avec DATA_VERSION_RETENTION_TIME pour watsonx.data Non autorisé
ALTER SCHEMA avec DATA_VERSION_RETENTION_TIME pour watsonx.data Non autorisé sauf pour NETEZZA_SCHEMA
CREATE TABLE avec la table DATA_VERSION_RETENTION_TIME (temporelle) Autorisé sous NETEZZA_SCHEMA uniquement
ALTER TABLE avec la table DATA_VERSION_RETENTION_TIME (temporelle) Autorisé sous NETEZZA_SCHEMA uniquement

Si SYSTEM DEFAULT DATA_VERSION_RETENTION_TIME est différent de zéro, CREATE DATABASE n'hérite pas de la propriété de SYSTEM DEFAULT. CREATE SCHEMA avec NETEZZA_SCHEMA n'héritera pas de la propriété de base de données. Il n'y aura pas d'impact ou de modifications nécessaires pour la tâche de maintenance automatique liée au voyage dans le temps pour watsonx.data.

Création d'objets de voyage temporel à l'aide de la ligne de commande

Création de tables temporelles à l'aide de la ligne de commande

Pour créer une table temporelle, définissez DATA_VERSION_RETENTION_TIME sur une valeur différente de zéro.

Pour plus de détails sur la syntaxe et les privilèges, voir la commande CREATE TABLE.

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

Exemple :

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

Lorsque vous insérez une ligne dans la table, la ligne reçoit un horodatage d'insertion virtuelle égal à l'heure de validation de la transaction d'insertion.

Lorsque vous supprimez une ligne de la table, la ligne reçoit un horodatage de suppression virtuelle égal à l'heure de validation de la transaction de suppression (ou de troncature).

Création de schémas temporels à l'aide de la ligne de commande

Pour créer un schéma temporel, définissez DATA_VERSION_RETENTION_TIME sur une valeur différente de zéro.

Pour plus de détails sur la syntaxe et les privilèges, voir la commande CREATE SCHEMA.

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

Exemple :

CREATE SCHEMA SCHEMA1 DATA_VERSION_RETENTION_TIME 30;

Création de bases de données temporelles à l'aide de la ligne de commande

Pour créer une base de données temporelle, définissez DATA_VERSION_RETENTION_TIME sur une valeur différente de zéro.

Pour plus de détails sur la syntaxe et les privilèges, voir la commande CREATE DATABASE.

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

Exemple :

CREATE DATABASE DB1 DATA_VERSION_RETENTION_TIME 30;

Création d'objets de déplacement temporel à l'aide de la console Web

Création de tables temporelles à l'aide de la console Web

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Créez une table temporelle comme décrit dans Création de tables.

Vous devez définir l'intervalle de conservation sur une valeur différente de zéro.

Bases de données, schémas et noms de table contenant un point (".") ne s'affichent pas dans les statistiques et les graphiques de déplacement dans le temps lorsque vous définissez l'intervalle de temps de conservation sur une valeur différente de zéro. Si vous ne définissez pas l'intervalle de conservation, tous les caractères spéciaux sont pris en charge.

Lorsque vous insérez une ligne dans la table, la ligne reçoit un horodatage d'insertion virtuelle égal à l'heure de validation de la transaction d'insertion.

Lorsque vous supprimez une ligne de la table, la ligne reçoit un horodatage de suppression virtuelle égal à l'heure de validation de la transaction de suppression (ou de troncature).

Création de schémas temporels à l'aide de la console Web

Pour créer un schéma temporel, définissez l'intervalle de temps de conservation sur une valeur différente de zéro.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Créez un schéma temporel comme décrit dans Création de schémas.

Création de bases de données temporelles à l'aide de la ligne de commande

Pour créer une base de données temporelle, définissez l'intervalle de conservation sur une valeur différente de zéro.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Créez une base de données temporelle comme décrit dans Création de bases de données.

Modification des objets de déplacement temporel à l'aide de la ligne de commande

Modification des tables temporelles en tables non temporelles à l'aide de la ligne de commande

Pour modifier une table temporelle en table non temporelle, définissez DATA_VERSION_RETENTION_TIME sur 0.

Pour plus de détails sur la syntaxe et les privilèges nécessaires, voir la commande ALTER TABLE.

ALTER TABLE <table> DATA_VERSION_RETENTION_TIME 0;

Exemple :

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 0;

Lorsque vous définissez DATA_VERSION_RETENTION_TIME sur 0, vous ne pouvez plus exécuter de requêtes de déplacement et vous n'avez plus accès aux lignes historiques de cette table. Vous pouvez récupérer certaines ou toutes les lignes d'historique désormais inaccessibles dans la table avec GROOM TABLE.

Modification des tables non temporelles en tables temporelles à l'aide de la ligne de commande

Pour modifier une table non temporelle en table temporelle, définissez DATA_VERSION_RETENTION_TIME] sur une valeur différente de zéro.

Pour plus de détails sur la syntaxe et les privilèges nécessaires, voir la commande ALTER TABLE.

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

Exemple :

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 30;

Si vous avez d'abord désactivé votre table temporelle, puis converti la même table en table temporelle, vous n'avez pas accès aux lignes d'historique précédentes pour cette table. Les données d'historique sont collectées lorsque des lignes sont supprimées ou mises à jour après la conversion de la table en données temporelles.

Comme avec la commande CREATE TABLE, une ligne insérée dans la table reçoit un horodatage d'insertion virtuelle égal à l'heure de validation de la transaction d'insertion. Une ligne supprimée de la table reçoit un horodatage de suppression virtuelle égal à l'heure de validation de la transaction de suppression (ou de troncature). La limite inférieure de conservation et l'heure de début de conservation de la table sont égales ou juste avant l'heure de validation de cette transaction ALTER TABLE.

Contrairement à la commande CREATE TABLE, qui ne comporte aucune ligne existante, les lignes visibles existantes dans la table sont traitées comme si elles avaient été insérées par la transaction ALTER TABLE. Les lignes visibles existantes reçoivent des horodatages d'insertion virtuelle qui sont égaux à l'heure de début de la conservation. Avec ces horodatages, les lignes sont potentiellement visibles pour les requêtes de parcours temporel.

Modification des schémas temporels en schémas non temporels à l'aide de la ligne de commande

Pour modifier un schéma temporel en schéma non temporel, définissez DATA_VERSION_RETENTION_TIME sur 0.

Pour une syntaxe détaillée, les privilèges nécessaires et l'option CASCADE, voir la commande ALTER SCHEMA.

ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Exemple :

ALTER SCHEMA SCHEMA DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Modification des schémas non temporels en schémas temporels à l'aide de la ligne de commande

Pour modifier un schéma non temporel en temporel, définissez DATA_VERSION_RETENTION_TIME sur une valeur différente de zéro.

Pour une syntaxe détaillée, les privilèges nécessaires et l'option CASCADE, voir la commande ALTER SCHEMA.

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

Exemple :

ALTER SCHEMA DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

Modification des bases de données temporelles en bases de données non temporelles à l'aide de la ligne de commande

Pour modifier une base de données temporelle en une base de données non temporelle, définissez DATA_VERSION_RETENTION_TIME sur 0.

Pour plus de détails sur la syntaxe et les privilèges nécessaires, voir la commande ALTER DATABASE.

ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Exemple :

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

Modification des bases de données non temporelles en bases de données temporelles à l'aide de la ligne de commande

Pour modifier une base de données non temporelle en temporelle, définissez DATA_VERSION_RETENTION_TIME sur une valeur différente de zéro.

Pour plus de détails sur la syntaxe et les privilèges nécessaires, voir la commande ALTER DATABASE.

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

Exemple :

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

Modification des objets de déplacement temporel à l'aide de la console Web

Modification des tables temporelles en tables non temporelles à l'aide de la console Web

Pour modifier une table temporelle en table non temporelle, définissez l'intervalle de temps de conservation sur 0.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation des tables.

Lorsque vous affectez la valeur 0 à l'intervalle de temps de conservation, vous ne pouvez pas exécuter de requêtes de déplacement de temps et vous n'avez plus accès aux lignes d'historique de cette table. Vous pouvez récupérer certaines ou toutes les lignes d'historique désormais inaccessibles dans la table avec GROOM TABLE.

Modification des tables non temporelles en tables temporelles à l'aide de la console Web

Pour modifier une table non temporelle en table temporelle, définissez l'intervalle de temps de conservation sur une valeur différente de zéro.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation des tables.

Si vous avez d'abord désactivé votre table temporelle, puis converti la même table en table temporelle, vous n'avez pas accès aux lignes d'historique précédentes pour cette table. Les données d'historique sont collectées lorsque des lignes sont supprimées ou mises à jour après la conversion de la table en données temporelles.

De la même manière que lorsque vous créez une table, une ligne insérée dans la table reçoit un horodatage d'insertion virtuelle égal à l'heure de validation de la transaction d'insertion. Une ligne supprimée de la table reçoit un horodatage de suppression virtuelle égal à l'heure de validation de la transaction de suppression (ou de troncature). La limite inférieure de conservation et l'heure de début de conservation de la table sont égales ou juste avant l'heure de validation de cette transaction de modification.

Contrairement à la création d'une table, les lignes visibles existantes dans la table sont traitées comme si elles avaient été insérées par cette transaction de modification. Les lignes visibles existantes reçoivent des horodatages d'insertion virtuelle qui sont égaux à l'heure de début de la conservation. Avec ces horodatages, les lignes sont potentiellement visibles pour les requêtes de parcours temporel.

Modification des schémas temporels en schémas non temporels à l'aide de la console Web

Pour modifier un schéma temporel en schéma non temporel, définissez l'intervalle de temps de conservation sur 0.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation des schémas.

Modification de schémas non temporels en schémas temporels à l'aide de la console Web

Pour modifier un schéma non temporel en temporel, définissez intervalle de temps de conservation sur une valeur différente de zéro.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation des schémas.

Modification des bases de données temporelles en bases de données non temporelles à l'aide de la console Web

Pour modifier une base de données temporelle en une base de données non temporelle, définissez l'intervalle de temps de conservation sur 0.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation pour les bases de données.

Modification des bases de données non temporelles en bases de données temporelles à l'aide de la console Web

Pour modifier une base de données non temporelle en une base de données temporelle, définissez l'intervalle de temps de conservation sur une valeur différente de zéro.

  1. Connectez-vous à la console Web comme décrit dans Initiation à la console Web.
  2. Modifiez votre table comme décrit dans Mise à jour de l'intervalle de conservation pour les bases de données.

Etape suivante

Une fois que vous avez créé des objets de déplacement temporel, vous pouvez commencer à exécuter des requêtes de déplacement temporel. Pour plus d'informations, voir les liens suivants :