All Products
Search
Document Center

Lindorm:Pengendalian versi data

Last Updated:Apr 23, 2026

Topik ini menjelaskan cara menggunakan hint dalam SQL LindormTable untuk mengatur timestamp guna pengendalian versi data.

Mesin dan versi yang didukung

Sintaks hint hanya tersedia pada mesin LindormTable versi 2.3.1 atau lebih baru.

Catatan

Untuk melihat atau melakukan upgrade versi saat ini, lihat Catatan rilis untuk LindormTable dan Upgrade versi minor.

Cara kerja

Di LindormTable, setiap nilai kolom menerima timestamp saat ditulis. Secara default, timestamp tersebut adalah waktu server dari operasi penulisan dan berfungsi sebagai pengidentifikasi versi kolom. Timestamp yang lebih besar menunjukkan versi yang lebih baru. Anda juga dapat menentukan timestamp kustom. Agar tabel wide-column menyimpan beberapa versi data, Anda harus mengatur atribut versi 'VERSIONS' = 'n' saat membuat tabel, dengan n sebagai jumlah maksimum versi yang disimpan untuk setiap kolom. Untuk mengkueri beberapa versi data, Anda harus menyertakan hint yang sesuai dalam kueri Anda. Tabel berikut menjelaskan hint yang digunakan untuk pengendalian versi data.

Hint

Deskripsi

Pernyataan yang berlaku

_l_ts_(N)

Membaca atau menulis data dengan timestamp yang ditentukan.

UPSERT, SELECT

_l_versions_(N)

Mengembalikan N versi data terbaru dalam set hasil.

SELECT

_l_ts_min_(N)

Menyaring set hasil untuk mengembalikan data dengan timestamp lebih besar dari atau sama dengan N.

SELECT

_l_ts_max_(N)

Menyaring set hasil untuk mengembalikan data dengan timestamp kurang dari N.

SELECT

Prosedur

Atur timestamp dan kueri data

Di LindormTable, Anda dapat mengatur timestamp untuk kolom non-primary key dan menggunakannya untuk mengkueri versi data tertentu.

  1. Buat tabel uji dan tentukan jumlah versi yang akan disimpan:

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

    Anda dapat menjalankan pernyataan ALTER TABLE table_name SET 'VERSIONS' = 'num'; untuk menentukan atau mengubah jumlah versi untuk suatu tabel, dengan table_name sebagai nama tabel dan num sebagai jumlah versi.

  2. Untuk mengatur timestamp, Anda harus menyertakan hint yang sesuai. Contohnya:

    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. Kueri versi data tertentu berdasarkan timestamp. Untuk melihat timestamp suatu kolom, Anda harus menyertakan kolom tersebut beserta kolom ekstensinya dalam kueri. Nama kolom ekstensi mengikuti format column_name_l_ts.

    Sebagai contoh, untuk melihat timestamp kolom c3, sertakan c3 dan c3_l_ts dalam pernyataan SELECT Anda.

    Penting

    Saat mengkueri informasi versi, jika Anda memilih kolom ekstensi (misalnya, 'c3_l_ts') tanpa menyertakan hint terkait versi, kolom ekstensi dalam set hasil akan mengembalikan null. Oleh karena itu, pernyataan kueri juga harus menyertakan hint terkait versi, seperti /*+ _l_versions_(1) */ atau /*+ _l_ts_min_(N) */.

    • Contoh 1: Mengembalikan data pada timestamp 1000.

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

      Hasil berikut dikembalikan:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Contoh 2: Mengkueri data dengan timestamp dalam rentang [1000,2001).

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

      Hasil berikut dikembalikan:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 11 | 1000    |
      +----+----+---------+
    • Contoh 3: Mengembalikan N versi data terbaru dengan menggunakan hint _l_versions_(N).

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

      Hasil berikut dikembalikan:

      +----+----+---------+
      | c1 | c3 | c3_l_ts |
      +----+----+---------+
      | 1  | 22 | 2001    |
      +----+----+---------+
    • Mengembalikan dua versi terbaru untuk setiap kolom. Versi dengan timestamp yang sama dikelompokkan dalam satu baris. Hint _l_versions_(N) mengambil data timestamp untuk semua kolom non-primary key.

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

      Hasil berikut dikembalikan:

      +----+------+------+---------+---------+
      | 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    |
      +----+------+------+---------+---------+
    • Contoh 5: Jumlah versi yang dikembalikan dibatasi oleh atribut 'VERSIONS' tabel. Sebagai contoh, meskipun kueri ini meminta enam versi dengan _l_versions_(6), hanya lima versi yang dikembalikan karena tabel dibuat dengan 'VERSIONS'='5'.

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

      Hasil berikut dikembalikan:

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