全部产品
Search
文档中心

Lindorm:Pisahkan data panas dan dingin berdasarkan kolom waktu kustom

更新时间:Nov 10, 2025

LindormTable memungkinkan Anda mengarsipkan data panas dan dingin berdasarkan kolom waktu kustom. Setelah membeli instans Lindorm yang dioptimalkan untuk penyimpanan, Anda dapat menentukan kolom waktu pada tabel atau indeks sekunder untuk memisahkan data panas dan dingin. Metode ini menyimpan data pada media yang berbeda guna meningkatkan efisiensi kueri untuk data panas dan mengurangi biaya penyimpanan untuk data dingin. Topik ini menjelaskan cara memisahkan data panas dan dingin berdasarkan kolom waktu kustom serta menyediakan catatan penggunaan terkait.

Prasyarat

Catatan Penggunaan

  • Fitur ini hanya didukung untuk Lindorm SQL. Fitur ini tidak didukung untuk operasi yang kompatibel dengan HBase.

  • Ketika nilai dalam kolom waktu kustom suatu baris melewati batas yang ditentukan untuk data panas, seluruh baris tersebut diarsipkan ke penyimpanan dingin.

  • Aturan berikut berlaku saat Anda menetapkan kolom waktu kustom:

    • Kolom waktu kustom harus merupakan kolom kunci utama.

    • Kolom waktu kustom tidak boleh menjadi kolom pertama dari kunci utama.

    • Kolom waktu kustom hanya mendukung tipe data BIGINT dan TIMESTAMP. Data tidak dapat dipisahkan jika kolom yang ditentukan tidak ada, jika tidak ada data yang ditulis ke kolom tersebut, atau jika data yang ditulis ke kolom tersebut memiliki tipe data yang salah. Dalam kasus-kasus tersebut, semua data ditulis ke penyimpanan panas.

Prosedur

Tetapkan batas data panas dan dingin untuk tabel

  1. Tetapkan kolom waktu kustom dan batas data panas dan dingin.

    • Metode 1: Tetapkan saat membuat tabel.

      Buat tabel bernama dt. Tetapkan batas data panas dan dingin menjadi satu hari, dan gunakan kolom p2 untuk pemisahan data panas dan dingin.

      -- Tetapkan batas data panas dan dingin menjadi satu hari dan gunakan kolom p2 untuk pemisahan data panas dan dingin. Satuan waktu untuk nilai dalam kolom p2 secara default adalah milidetik (ms).
      CREATE TABLE dt (p1 integer, p2 bigint, p3 bigint, c1 varchar,  constraint pk PRIMARY KEY(p1, p2, p3)) WITH(COMPRESSION = 'ZSTD', CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=p2');
      
      -- Tetapkan batas data panas dan dingin menjadi satu hari dan gunakan kolom p2 untuk pemisahan data panas dan dingin. Tetapkan satuan waktu untuk nilai dalam kolom p2 menjadi detik (s).
      CREATE TABLE dt (p1 integer, p2 bigint, p3 bigint, c1 varchar,  constraint pk PRIMARY KEY(p1, p2, p3)) WITH(COMPRESSION = 'ZSTD', CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=p2|TIMEUNIT=SECONDS');
      
      -- Tetapkan batas data panas dan dingin menjadi satu hari dan gunakan kolom p2 untuk pemisahan data panas dan dingin. Tetapkan satuan waktu untuk nilai dalam kolom p2 menjadi menit (min).
      CREATE TABLE dt (p1 integer, p2 bigint, p3 bigint, c1 varchar,  constraint pk PRIMARY KEY(p1, p2, p3)) WITH(COMPRESSION = 'ZSTD', CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=p2|TIMEUNIT=MINUTES');

      Parameter

      Parameter

      Deskripsi

      CHS

      Batas data panas dan dingin, dalam satuan detik (s). Misalnya, jika CHS diatur ke 86400, data dengan stempel waktu di kolom waktu kustom yang lebih lama dari 86.400 detik (satu hari) akan secara otomatis diarsipkan ke penyimpanan dingin.

      COMPRESSION

      Algoritma kompresi. Ini berlaku untuk seluruh tabel. Nama algoritma tidak peka huruf besar/kecil. Konfigurasi default adalah none.

      CHS_L2

      Properti lapisan kedua. Biasanya dikonfigurasi untuk menentukan tipe penyimpanan: storagetype=COLD.

      CHS_COLUMN

      Kolom waktu kustom. Satuan default untuk nilainya adalah milidetik (ms). Satuan waktu lain yang didukung termasuk SECONDS, MINUTES, MICROSECONDS, dan NANOSECONDS. Formatnya adalah COLUMN=<custom_time_column>|TIMEUNIT=<time_unit>. Contohnya, COLUMN=p2|TIMEUNIT=SECONDS.

      Penting

      Saat menetapkan CHS_COLUMN, jangan tambahkan spasi di kedua sisi tanda sama dengan (=). Jika tidak, akan terjadi kesalahan.

      Verifikasi hasil

      Anda dapat menggunakan salah satu metode berikut untuk memverifikasi pengaturan:

      • Jalankan pernyataan SHOW VARIABLES untuk melihat properti tabel. Contohnya: SHOW TABLE VARIABLES FROM dt LIKE 'CHS_COLUMN';.

      • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Table Details, Anda dapat melihat nilai parameter seperti CHS dan CHS_COLUMN.

    • Metode 2: Jika pemisahan data panas dan dingin belum diaktifkan saat tabel dibuat, gunakan pernyataan ALTER TABLE untuk menambahkan properti terkait.

      -- Untuk tabel data yang sudah ada di mana pemisahan data panas dan dingin belum diaktifkan saat pembuatan, misalnya:
      -- CREATE TABLE dt (p1 integer, p2 bigint, p3 bigint, c1 varchar,  constraint pk primary key(p1, p2, p3));
      
      -- Aktifkan pemisahan data panas dan dingin untuk tabel dt berdasarkan kolom kustom. Tetapkan batas data panas dan dingin menjadi satu hari, gunakan kolom p2 untuk pemisahan, dan gunakan satuan default milidetik (ms).
      ALTER TABLE dt SET 'CHS' ='86400', 'CHS_L2' = 'storagetype=COLD', 'CHS_COLUMN' = 'COLUMN=p2';
      
      -- Aktifkan pemisahan data panas dan dingin untuk tabel dt berdasarkan kolom kustom. Tetapkan batas data panas dan dingin menjadi satu hari, gunakan kolom p2 untuk pemisahan, dan ubah satuan waktu menjadi detik (s).
      ALTER TABLE dt SET 'CHS' ='86400', 'CHS_L2' = 'storagetype=COLD', 'CHS_COLUMN' = 'COLUMN=p2|TIMEUNIT=SECONDS';
      
      -- Aktifkan pemisahan data panas dan dingin untuk tabel dt berdasarkan kolom kustom. Tetapkan batas data panas dan dingin menjadi satu hari, gunakan kolom p2 untuk pemisahan, dan ubah satuan waktu menjadi menit (min).
      ALTER TABLE dt SET 'CHS' ='86400', 'CHS_L2' = 'storagetype=COLD', 'CHS_COLUMN' = 'COLUMN=p2|TIMEUNIT=MINUTES';

      Verifikasi hasil

      Anda dapat menggunakan salah satu metode berikut untuk memverifikasi pengaturan:

      • Jalankan pernyataan SHOW VARIABLES untuk melihat properti tabel. Contohnya: SHOW TABLE VARIABLES FROM dt LIKE 'CHS_COLUMN';.

      • Pada halaman Overview sistem manajemen kluster, klik nama tabel target di bawah database target. Di area Current Table Details, lihat nilai parameter seperti CHS dan CHS_COLUMN.

  2. Opsional: Ubah batas data panas dan dingin serta kolom waktu kustom tabel.

    • Ubah batas data panas dan dingin.

      ALTER TABLE dt SET 'CHS'='1000';
    • Ubah kolom waktu kustom.

      ALTER TABLE dt SET 'CHS_COLUMN'='COLUMN=p3'; 
  3. Opsional: Batalkan pemisahan data panas dan dingin untuk tabel.

    ALTER TABLE dt SET 'CHS'='', 'CHS_L2' = '', 'CHS_COLUMN'='';
    Catatan

    Setelah Anda mengubah batas data panas dan dingin atau membatalkan pemisahan data panas dan dingin, Anda harus menunggu sistem melakukan compaction di latar belakang sebelum data dapat dipindahkan dari penyimpanan dingin kembali ke penyimpanan panas. Untuk mengembalikan data ke penyimpanan panas segera, Anda dapat menjalankan perintah major_compact secara manual.

Tetapkan batas data panas dan dingin untuk indeks sekunder

Secara default, indeks sekunder disimpan dalam sebuah tabel. Oleh karena itu, Anda dapat memisahkan data panas dan dingin untuk indeks sekunder dengan cara yang sama seperti untuk tabel.

Contoh berikut membuat indeks sekunder untuk tabel dt dari bagian sebelumnya.

  1. Buat indeks sekunder dan aktifkan pemisahan data panas dan dingin.

    • Metode 1: Tetapkan kolom waktu kustom dan batas data panas dan dingin saat membuat indeks sekunder.

      CREATE INDEX idx on dt (c1) WITH(CHS = '86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN='COLUMN=p2');
      Catatan

      Anda tidak dapat menentukan kolom waktu kustom untuk indeks sekunder. CHS_COLUMN harus diatur ke kolom waktu kustom dari tabel dasar.

    • Metode 2: Jika pengaturan belum dikonfigurasi saat indeks sekunder dibuat, gunakan pernyataan ALTER TABLE untuk menetapkan kolom waktu kustom dan batas data panas dan dingin.

      -- Untuk indeks sekunder yang sudah ada di mana pemisahan data panas dan dingin belum diaktifkan saat pembuatan, misalnya:
      -- CREATE INDEX idx on dt (c1);
      
      -- Aktifkan pemisahan data panas dan dingin untuk tabel indeks sekunder. Tetapkan batas data panas dan dingin menjadi satu hari dan gunakan kolom p2 untuk pemisahan.
      ALTER TABLE `dt.idx` SET 'CHS' = '86400', 'CHS_L2' = 'storagetype=COLD', 'CHS_COLUMN'='COLUMN=p2';
  2. Opsional: Ubah batas data panas dan dingin serta kolom waktu kustom indeks sekunder.

    • Ubah batas data panas dan dingin.

      ALTER TABLE `dt.idx` SET 'CHS'='10000';
    • Ubah kolom waktu kustom.

      ALTER TABLE `dt.idx` SET 'CHS_COLUMN'='COLUMN=p2'; 
    Catatan

    Nama tabel indeks sekunder menggunakan format NamaTabel.NamaIndeks. Karena nama tersebut mengandung titik (.), yang merupakan karakter khusus, Anda harus membungkus nama tersebut dengan backtick (`) untuk menghindari kesalahan. Misalnya, jika nama tabel adalah test.idx, nama yang di-escape adalah `test.idx`.

  3. Opsional: Batalkan pemisahan data panas dan dingin untuk indeks sekunder.

    ALTER TABLE `dt.idx` SET 'CHS'='', 'CHS_L2' = '', 'CHS_COLUMN'='';

Tulis data

Metode untuk menulis data ke tabel yang telah diaktifkan pemisahan data panas dan dingin sama seperti untuk tabel standar. Data awalnya disimpan di penyimpanan panas (Medium atau Compute-optimized). Seiring waktu, jika suatu baris data memenuhi kondisi Waktu saat ini - Nilai kolom waktu > Nilai CHS, data tersebut akan diarsipkan ke penyimpanan dingin ketika compaction dilakukan.

Kueri data

Karena data panas dan dingin berada dalam tabel yang sama, semua operasi kueri dilakukan pada tabel tunggal tersebut. Saat Anda melakukan kueri data, Anda dapat menentukan rentang waktu untuk kolom waktu kustom guna membatasi cakupan kueri. Sistem kemudian menentukan mode kueri berdasarkan rentang waktu yang ditentukan dan dapat melakukan kueri hanya pada area penyimpanan panas, hanya pada area penyimpanan dingin, atau keduanya. Jika Anda tidak membatasi rentang waktu dalam kueri Anda, kueri tersebut mungkin mengenai data dingin. Hal ini dapat menyebabkan throughput kueri dibatasi oleh penyimpanan dingin. Untuk informasi selengkapnya, lihat Instans Lindorm yang dioptimalkan untuk penyimpanan.

Jika Anda tidak dapat menetapkan kolom waktu kustom dalam kondisi kueri, Anda juga dapat menggunakan HINT untuk mengatur parameter _l_hot_only_ agar hanya melakukan kueri pada data panas.

Contoh kueri

  • Kueri acak (Get)

    -- p2 adalah kolom waktu kustom.
    SELECT * FROM dt WHERE p1 = 10 AND p2 = 10;
  • Kueri rentang

    -- p2 adalah kolom waktu kustom.
    SELECT * FROM dt WHERE p2 > 10 AND p2 < 1000;
    Penting

    Secara default, LindormTable tidak menjalankan pernyataan SELECT yang diidentifikasi sebagai kueri tidak efisien. Sebagai gantinya, sistem akan melemparkan pengecualian. Untuk informasi selengkapnya, lihat SELECT.

  • Gunakan HINT untuk kueri hanya data panas

    SELECT /*+ _l_hot_only_(true) */ * FROM dt WHERE p1>1;

Praktik Terbaik

Dalam skenario Internet of Vehicles (IoV), kunci primer tabel biasanya terdiri dari kolom vin (Vehicle Identification Number) dan stempel waktu. Kolom stempel waktu dapat didefinisikan sebagai kolom waktu kustom untuk pemisahan data panas dan dingin. Saat Anda melakukan kueri data kendaraan dalam rentang waktu tertentu, sistem dapat menentukan apakah akan melakukan kueri pada data dingin atau hanya data panas berdasarkan kondisi kueri.

USE test;
CREATE TABLE dt (
  vin varchar, ts bigint, c1 varchar, c2 varchar, constraint pk primary key(vin, ts)) WITH
(COMPRESSION = 'ZSTD', CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=ts'); // Kolom waktu harus merupakan kunci primer.
-- Kueri data untuk kendaraan tertentu dalam rentang waktu.
SELECT * FROM dt WHERE vin='xxxx' AND ts > 1675065122000 AND ts < 1675975222000;

FAQ

  • T: Jika saya memperbarui data dingin yang sudah ada, apakah data yang diperbarui tetap dingin?

    J: Ya, jika pembaruan tidak mengubah nilai dalam kolom waktu kustom, data tetap dingin. Namun, jika pembaruan mengubah nilai dalam kolom waktu kustom, data akan dievaluasi ulang sebagai panas atau dingin berdasarkan nilai baru tersebut. Misalnya, asumsikan sebuah tabel memiliki kolom kunci primer p1 dan p2, serta kolom non-kunci primer c1 dan c2. Suatu baris memiliki nilai p1=row1, p2=28-Jan-2023, c1="c1", dan c2="c2". Batas panas dan dingin (CHS) adalah 1 hari, dan tanggal saat ini adalah 30-Jan-2023. Baris ini merupakan data dingin. Jika Anda memperbarui nilai c1 dan c2, baris tersebut tetap menjadi data dingin. Jika Anda memperbarui nilai p2 menjadi 30-Jan-2023, baris tersebut menjadi data panas. Data tersebut akan kembali menjadi data dingin pada 01-Feb-2023.

    Catatan

    Anda tidak dapat memperbarui nilai dalam kolom waktu kustom yang merupakan bagian dari kunci primer.

  • T: Jika suatu baris tidak memiliki nilai dalam kolom waktu kustom, apakah datanya dipisahkan menjadi panas dan dingin?

    J: Tidak. Kolom waktu kustom merupakan dasar untuk pemisahan data panas dan dingin. Jika suatu baris tidak memiliki nilai dalam kolom waktu kustom, data tersebut tetap disimpan di penyimpanan panas.