Todos os produtos
Search
Central de documentação

Lindorm:Versionamento de dados

Última atualização: Jun 28, 2026

Este tópico descreve como usar hints no SQL do LindormTable para definir timestamps no versionamento de dados.

Engine e versão compatíveis

A sintaxe de hint está disponível apenas para a engine LindormTable versão 2.3.1 ou posterior.

Nota

Para visualizar ou atualizar sua versão atual, consulte Notas de versão do LindormTable e Atualizar uma versão secundária.

Funcionamento

No LindormTable, cada valor de coluna recebe um timestamp durante a gravação. Por padrão, esse timestamp corresponde ao horário do servidor no momento da operação e funciona como identificador de versão da coluna. Um timestamp maior indica uma versão mais recente. Também é possível especificar um timestamp personalizado. Para que uma tabela wide-column armazene múltiplas versões dos dados, defina o atributo de versão 'VERSIONS' = 'n' ao criar a tabela, em que n representa o número máximo de versões retidas por coluna. Para consultar várias versões de dados, especifique os hints adequados na consulta. A tabela a seguir descreve os hints utilizados para versionamento de dados.

Hint

Descrição

Instrução aplicável

_l_ts_(N)

Lê ou grava dados com o timestamp especificado.

UPSERT, SELECT

_l_versions_(N)

Retorna as N versões mais recentes dos dados no conjunto de resultados.

SELECT

_l_ts_min_(N)

Filtra o conjunto de resultados para retornar dados com timestamp maior ou igual a N.

SELECT

_l_ts_max_(N)

Filtra o conjunto de resultados para retornar dados com timestamp menor que N.

SELECT

Procedimento

Definir timestamps e consultar dados

No LindormTable, defina um timestamp para uma coluna que não seja chave primária e utilize-o para consultar versões específicas dos dados.

  1. Crie uma tabela de teste e especifique o número de versões a serem retidas:

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

    Execute a instrução ALTER TABLE table_name SET 'VERSIONS' = 'num'; para especificar ou modificar o número de versões de uma tabela, em que table_name é o nome da tabela e num é a quantidade de versões.

  2. Para definir um timestamp, especifique o hint apropriado. Por exemplo:

    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. Consulte uma versão específica dos dados usando um timestamp. Para visualizar o timestamp de uma coluna, inclua tanto a coluna quanto sua coluna estendida na consulta. O nome da coluna estendida segue o formato column_name_l_ts.

    Por exemplo, para visualizar o timestamp da coluna c3, inclua tanto c3 quanto c3_l_ts na instrução SELECT.

    Importante

    Ao consultar informações de versão, se você selecionar uma coluna estendida (por exemplo, 'c3_l_ts') sem incluir um hint relacionado a versões, a coluna estendida no conjunto de resultados retornará null. Portanto, a instrução de consulta também deve conter um hint relacionado a versões, como /*+ _l_versions_(1) */ ou /*+ _l_ts_min_(N) */.

    • Exemplo 1: Retornar dados no timestamp 1000.

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

      Resultado retornado:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Exemplo 2: Consultar dados com timestamps no intervalo [1000,2001).

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

      Resultado retornado:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Exemplo 3: Retornar as N versões mais recentes dos dados utilizando o hint _l_versions_(N).

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

      Resultado retornado:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 22 | 2001    |
      +----+----+---------+
    • Retorna as duas versões mais recentes de cada coluna. Versões com o mesmo timestamp são agrupadas em uma única linha. O hint _l_versions_(N) recupera dados de timestamp para todas as colunas que não são chave primária.

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

      Resultado retornado:

      +----+------+------+---------+---------+
      | 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    |
      +----+------+------+---------+---------+
    • Exemplo 5: O número de versões retornadas é limitado pelo atributo 'VERSIONS' da tabela. Por exemplo, embora esta consulta solicite seis versões com _l_versions_(6), ela retorna apenas cinco porque a tabela foi criada com 'VERSIONS'='5'.

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

      Resultado retornado:

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