Tous les produits
Search
Centre de documentation

Lindorm:Versionnement des données

Dernière mise à jour :Aug 11, 2026

Cette rubrique explique comment utiliser les hints dans LindormTable SQL pour définir des horodatages afin de gérer le versionnement des données.

Moteur et version pris en charge

La syntaxe des hints est disponible uniquement pour la version 2.3.1 ou ultérieure du moteur LindormTable.

Remarque

Pour consulter ou mettre à niveau votre version actuelle, consultez les Notes de version de LindormTable ainsi que la procédure de Mise à niveau d'une version mineure.

Fonctionnement

Dans LindormTable, chaque valeur de colonne reçoit un horodatage lors de l'écriture. Par défaut, cet horodatage correspond à l'heure du serveur au moment de l'opération d'écriture et sert d'identifiant de version pour la colonne. Un horodatage plus élevé indique une version plus récente. Vous pouvez également spécifier un horodatage personnalisé. Si vous souhaitez qu'une table à colonnes larges stocke plusieurs versions de données, définissez l'attribut de version 'VERSIONS' = 'n' lors de la création de la table, où n représente le nombre maximal de versions à conserver pour chaque colonne. Pour interroger plusieurs versions de données, incluez les hints appropriés dans votre requête. Le tableau suivant décrit les hints utilisés pour le versionnement des données.

Hint

Description

Instruction applicable

_l_ts_(N)

Lit ou écrit des données avec l'horodatage spécifié.

UPSERT, SELECT

_l_versions_(N)

Renvoie les N versions de données les plus récentes dans l'ensemble de résultats.

SELECT

_l_ts_min_(N)

Filtre l'ensemble de résultats pour renvoyer les données dont l'horodatage est supérieur ou égal à N.

SELECT

_l_ts_max_(N)

Filtre l'ensemble de résultats pour renvoyer les données dont l'horodatage est inférieur à N.

SELECT

Procédure

Définition des horodatages et interrogation des données

Dans LindormTable, vous pouvez définir un horodatage pour une colonne ne faisant pas partie de la clé primaire et utiliser cet horodatage pour interroger des versions spécifiques de données.

  1. Créez une table de test et spécifiez le nombre de versions à conserver :

    CREATE TABLE t_test_versions_2 (c1 INT , c2 INT, c3 VARCHAR(50), PRIMARY KEY(c1)) WITH(VERSIONS='5');
    Remarque

    Vous pouvez exécuter l'instruction ALTER TABLE table_name SET 'VERSIONS' = 'num'; pour spécifier ou modifier le nombre de versions d'une table, où table_name représente le nom de la table et num le nombre de versions.

  2. Pour définir un horodatage, spécifiez le hint approprié. Par exemple :

    UPSERT /*+ _l_ts_(1000)  */ INTO t_test_versions_2(c1, c3) values (1, '11');
    UPSERT /*+ _l_ts_(2001)  */ INTO t_test_versions_2(c1, c3) values (1, '22');
    UPSERT /*+ _l_ts_(1000)  */ INTO t_test_versions_2(c1, c2) values (1, 1);
    UPSERT /*+ _l_ts_(2001)  */ INTO t_test_versions_2(c1, c2) values (2, 1);
    UPSERT /*+ _l_ts_(2002)  */ INTO t_test_versions_2(c1, c2) values (2, 2);
    UPSERT /*+ _l_ts_(2003)  */ INTO t_test_versions_2(c1, c2) values (2, 3);
    UPSERT /*+ _l_ts_(2004)  */ INTO t_test_versions_2(c1, c2) values (2, 4);
    UPSERT /*+ _l_ts_(2005)  */INTO t_test_versions_2(c1, c2) values (2, 5);
    UPSERT /*+ _l_ts_(2006)  */ INTO t_test_versions_2(c1, c2) values (2, 6);
  3. Interrogez une version spécifique de données en utilisant un horodatage. Pour consulter l'horodatage d'une colonne, spécifiez la colonne ainsi que sa colonne étendue dans votre requête. Le nom de la colonne étendue suit le format column_name_l_ts.

    Par exemple, pour consulter l'horodatage de la colonne c3, incluez à la fois c3 et c3_l_ts dans votre instruction SELECT.

    Important

    Lors de l'interrogation des informations de version, si vous sélectionnez une colonne étendue (par exemple, 'c3_l_ts') sans inclure de hint lié à la version, la colonne étendue dans l'ensemble de résultats renvoie null. Par conséquent, l'instruction de requête doit également inclure un hint lié à la version, tel que /*+ _l_versions_(1) */ ou /*+ _l_ts_min_(N) */.

    • Exemple 1 : Renvoyer les données à l'horodatage 1000.

      SELECT /*+ _l_ts_(1000) */ c1, c3, c3_l_ts FROM t_test_versions_2 WHERE c1 = 1;

      Le résultat suivant est renvoyé :

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Exemple 2 : Interroger les données dont les horodatages se situent dans la plage [1000,2001).

      SELECT /*+ _l_ts_min_(1000), _l_ts_max_(2001)  */ c1, c3, c3_l_ts FROM t_test_versions_2 WHERE c1 = 1;

      Le résultat suivant est renvoyé :

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Exemple 3 : Renvoyer les N versions de données les plus récentes en utilisant le hint _l_versions_(N).

      SELECT /*+ _l_versions_(1) */ c1, c3, c3_l_ts FROM t_test_versions_2 WHERE c1 = 1;

      Le résultat suivant est renvoyé :

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 22 | 2001    |
      +----+----+---------+
    • Renvoie les deux versions les plus récentes pour chaque colonne. Les versions partageant le même horodatage sont regroupées dans une seule ligne. Le hint _l_versions_(N) récupère les données d'horodatage pour toutes les colonnes ne faisant pas partie de la clé primaire.

      SELECT /*+ _l_versions_(2)  */ c1, c2, c3, c2_l_ts, c3_l_ts FROM t_test_versions_2;

      Le résultat suivant est renvoyé :

      +----+------+------+---------+---------+
      | c1 |  c2  |  c3  | c2_l_ts | c3_l_ts |
      +----+------+------+---------+---------+
      | 1  | null | 22   | null    | 2001    |
      | 1  | 1    | 11   | 1000    | 1000    |
      | 2  | 6    | null | 2006    | null    |
      | 2  | 5    | null | 2005    | null    |
      +----+------+------+---------+---------+
    • Exemple 5 : Le nombre de versions renvoyées est limité par l'attribut 'VERSIONS' de la table. Par exemple, bien que cette requête demande six versions avec _l_versions_(6), elle n'en renvoie que cinq car la table a été créée avec 'VERSIONS'='5'.

      SELECT /*+ _l_versions_(6)  */ c1, c2, c2_l_ts FROM t_test_versions_2 WHERE c1=2;

      Le résultat suivant est renvoyé :

      +----+----+---------+
      | c1 | c2 | c2_l_ts |
      +----+----+---------+
      | 2  | 6  | 2006    |
      | 2  | 5  | 2005    |
      | 2  | 4  | 2004    |
      | 2  | 3  | 2003    |
      | 2  | 2  | 2002    |
      +----+----+---------+