全部产品
Search
文档中心

Lindorm:Gunakan petunjuk untuk mengimplementasikan versi data

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan petunjuk dalam LindormTable SQL untuk mengonfigurasi timestamp guna mendukung versi data.

Mesin dan versi yang berlaku

Petunjuk hanya berlaku untuk LindormTable 2.3.1 dan versi selanjutnya.

Catatan

Untuk informasi lebih lanjut tentang cara melihat atau meningkatkan versi LindormTable, lihat Catatan Rilis LindormTable dan Tingkatkan Versi Mesin Minor dari Instance Lindorm.

Ikhtisar

Timestamp dicatat untuk data yang ditulis ke setiap kolom di LindormTable. Timestamp ini menunjukkan waktu server saat data ditulis ke kolom. Secara default, timestamp digunakan sebagai ID versi data yang ditulis ke kolom. Anda juga dapat menentukan timestamp untuk data yang ditulis ke kolom. Semakin besar timestamp, semakin baru versinya. Untuk menyimpan beberapa versi kolom tabel lebar di LindormTable, Anda harus mengonfigurasi atribut 'VERSIONS' = 'n' saat membuat tabel. Dalam atribut tersebut, n adalah bilangan bulat positif yang menunjukkan jumlah maksimum versi yang dapat disimpan untuk setiap kolom. Untuk meminta data berversi berdasarkan timestamp di LindormTable, Anda harus menentukan atribut tertentu dalam pernyataan SQL. Tabel berikut menjelaskan atribut yang dapat Anda tentukan.

Atribut

Deskripsi

Pernyataan yang berlaku

_l_ts_(N)

Menentukan timestamp untuk versi.

UPSERT dan SELECT

_l_versions_(N)

Menentukan bahwa N versi terbaru dari data yang Anda query akan dikembalikan.

SELECT

_l_ts_min_(N)

Menentukan bahwa versi dengan timestamp lebih besar dari N dikembalikan.

SELECT

_l_ts_max_(N)

Menentukan bahwa versi dengan timestamp lebih kecil dari N dikembalikan.

SELECT

Penggunaan

Konfigurasikan timestamp dan kueri data berversi

Di LindormTable, Anda dapat mengonfigurasi timestamp untuk kolom non-kunci utama dan menggunakan timestamp tersebut untuk mengkueri versi data yang ditentukan.

  1. Jalankan pernyataan berikut untuk membuat tabel uji dan tentukan jumlah versi yang akan dipertahankan:

    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 memodifikasi jumlah versi yang ingin Anda pertahankan untuk data dalam tabel. Dalam pernyataan tersebut, parameter table_name menunjukkan nama tabel dan parameter num menunjukkan jumlah versi yang ingin Anda pertahankan.

  2. Tulis data ke tabel. Anda harus menentukan atribut _l_ts_(N) dalam pernyataan berikut untuk mengonfigurasi timestamp.

    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 yang ditentukan menggunakan timestamp. Untuk melihat timestamp kolom yang di-query dalam hasil, tambahkan akhiran _l_ts ke nama kolom dalam pernyataan.

    Penting

    Saat Anda mengkueri versi data menggunakan timestamp dan hanya menentukan nama kolom serta akhiran timestamp dalam pernyataan query, nilai kolom timestamp dalam hasil query adalah null. Dalam hal ini, pernyataan query juga harus mencakup petunjuk yang relevan, seperti /*+ _l_versions_(1) */ atau /*+ _l_ts_min_(N) */.

    • Contoh 1: Kueri data dengan 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: Kueri 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: Kueri N versi terbaru dari data yang ditentukan dengan menentukan atribut _l_versions_(N). Dalam contoh ini, nilai N diatur menjadi 1.

      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    |
      +----+----+---------+
    • Contoh 4: Kueri dua versi terbaru dari semua kolom dan tampilkan kolom berbeda dengan timestamp yang sama dalam baris yang sama. Jika Anda menentukan atribut _l_versions_(N) dalam pernyataan, timestamp dari semua kolom non-kunci utama dikembalikan.

      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: Kueri enam versi terbaru dari kolom yang ditentukan. Namun, atribut VERSIONS dari tabel uji diatur ke 5 saat tabel dibuat. Oleh karena itu, hanya lima versi terbaru dari kolom yang dikembalikan meskipun atribut _l_versions_(6) ditentukan dalam pernyataan.

      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    |
      +----+----+---------+