Untuk mengurangi biaya penyimpanan data, meningkatkan kinerja kueri, dan meningkatkan pemanfaatan sumber daya sistem, kluster ApsaraDB for ClickHouse Community-compatible Edition dan Enterprise Edition yang menggunakan penyimpanan ESSD_L1 atau ESSD_L2 mendukung penyimpanan bertingkat data panas dan dingin. Fitur ini menyimpan data panas dan dingin pada media penyimpanan berbeda berdasarkan frekuensi aksesnya. Topik ini menjelaskan cara mengaktifkan penyimpanan bertingkat dan mengonfigurasi kebijakan penyimpanan.
Prasyarat
Community-compatible Edition
Kluster menjalankan versi 20.8 atau yang lebih baru.
Fitur pencadangan data dinonaktifkan untuk kluster tersebut.
Jika Anda ingin menggunakan penyimpanan bertingkat pada kluster yang menjalankan versi sebelumnya, migrasikan data ke kluster yang menjalankan versi 20.8 atau yang lebih baru, lalu aktifkan penyimpanan bertingkat. Untuk informasi selengkapnya, lihat Migrasi data antar kluster ApsaraDB for ClickHouse Community-compatible Edition.
Enterprise Edition
Kluster menggunakan penyimpanan ESSD_L1 atau ESSD_L2. Untuk menggunakan tipe penyimpanan ini, kirimkan tiket untuk menambahkan fitur tersebut ke daftar putih.
Informasi latar belakang
Penyimpanan bertingkat data panas dan dingin mengklasifikasikan data menjadi dua kategori berdasarkan frekuensi akses:
Hot data: Data yang sering diakses. Data ini disimpan pada disk data panas, seperti enterprise SSD (ESSD) atau disk ultra yang dipilih saat membuat kluster, guna memenuhi persyaratan akses berkinerja tinggi.
Cold data: Data yang jarang diakses. Data ini disimpan pada disk data dingin yang lebih murah, guna memenuhi persyaratan penyimpanan hemat biaya.
Kebijakan penyimpanan untuk penyimpanan bertingkat data panas dan dingin adalah sebagai berikut:
Community-compatible Edition
Kebijakan penyimpanan | Detail |
Kebijakan penyimpanan default | Data baru ditulis ke disk data panas untuk menyediakan kueri yang efisien. Ketika jumlah data panas mencapai ambang batas tertentu, bagian data yang menempati ruang terbesar pada disk data panas secara otomatis dipindahkan ke disk data dingin. Hal ini membebaskan ruang penyimpanan pada disk data panas. |
Kebijakan penyimpanan TTL | Pernyataan Time to Live (TTL) ditambahkan ke kebijakan penyimpanan default. Hal ini secara otomatis memindahkan semua data yang dibuat sebelum interval waktu tertentu ke disk data dingin. |
Enterprise Edition
Penyimpanan bertingkat diimplementasikan berdasarkan TTL global. Data yang tidak lagi berubah secara otomatis di-dump ke Object Storage Service (OSS), yang lebih murah, untuk mengurangi biaya.
Global TTL: Enterprise Edition mengontrol tiering data menggunakan TTL global.
Waktu dump: Setelah Anda mengaktifkan penyimpanan bertingkat, sistem memindai semua file data setiap hari pukul 00:00 UTC. Bagian data yang telah ada lebih lama dari TTL global di-dump dari disk panas ke disk dingin (OSS).
Peringatan
Community-compatible Edition
Aktifkan penyimpanan bertingkat selama jam sepi. Setelah Anda mengaktifkan fitur ini, kluster akan segera restart. Selama proses restart, Anda hanya dapat melihat informasi kluster dan tidak dapat melakukan upgrade, scale out, scale in, atau mengubah pengaturan parameter.
Saat menggunakan penyimpanan bertingkat, Anda harus menentukan kebijakan penyimpanan untuk setiap tabel.
Saat membuat tabel, tentukan kebijakan penyimpanan menggunakan
SETTINGS storage_policy = 'hot_to_cold'.Ubah kebijakan penyimpanan tabel yang sudah ada.
Untuk kluster yang mengaktifkan kebijakan penyimpanan bertingkat setelah 1 Januari 2024
Jalankan pernyataan berikut untuk mengubah kebijakan.
ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';Untuk kluster yang mengaktifkan kebijakan penyimpanan bertingkat sebelum 1 Januari 2024
Tambahkan kebijakan penyimpanan bertingkat baru melalui operasi O&M. Hal ini memungkinkan Anda menggunakan kebijakan baru untuk memigrasikan data dari disk panas ke disk dingin.
Setelah Anda mengaktifkan penyimpanan bertingkat, Anda tidak dapat menonaktifkannya.
Enterprise Edition
Jika data dalam penyimpanan dingin berubah, data tersebut dimuat ulang ke penyimpanan panas untuk membangun kembali file data. Perubahan tersebut mencakup operasi `Mutation` atau `Optimize` yang Anda jalankan, atau operasi `Merge` yang dipicu sistem berdasarkan aturan. File data baru tidak langsung dipindahkan ke penyimpanan dingin. Data tersebut hanya di-dump kembali setelah melewati durasi lebih lama dari TTL global. Oleh karena itu, hindari penambahan, penghapusan, atau modifikasi data dingin secara berulang.
Operasi dump tidak bersifat instan. Sistem menyesuaikan kecepatan dump secara dinamis berdasarkan faktor-faktor seperti tekanan akses saat ini pada sistem penyimpanan. Operasi ini dapat memakan waktu beberapa jam tergantung pada volume data yang akan di-dump.
Aturan penerapan perubahan TTL:
Menambah TTL: Perubahan berlaku pada waktu dump berikutnya. Namun, data yang sudah di-dump ke penyimpanan dingin tidak dipindahkan kembali ke penyimpanan panas.
Mengurangi TTL: Perubahan berlaku pada waktu dump berikutnya.
Nilai minimum untuk TTL global adalah 1 hari. Ukuran langkah penyesuaian minimum adalah 1 hari.
Penagihan
Aturan penagihan adalah sebagai berikut.
Tipe penyimpanan
Detail penagihan
Penyimpanan data panas
Setelah Anda membeli kluster, Anda memiliki ruang penyimpanan data panas yang setara dengan kapasitas penyimpanan kluster tersebut.
Penyimpanan data dingin
Penyimpanan data dingin menggunakan metode penagihan pay-as-you-go. Anda tidak perlu membeli ruang penyimpanan tetap di muka. Anda ditagih per jam berdasarkan ruang penyimpanan yang digunakan.
Untuk informasi harga detail penyimpanan data dingin, lihat Harga bucket Edisi Komunitas dan Metode penagihan pay-as-you-go Edisi Perusahaan.
Rumus penagihan: Biaya penyimpanan dingin = Harga satuan penyimpanan data dingin × Penggunaan penyimpanan data dingin × Durasi penggunaan.
Sebagai contoh, jika harga satuan penyimpanan data dingin adalah USD 0,000026 per GB/jam dan Anda menggunakan 2.000 GB penyimpanan dingin dari pukul 19.00 hingga 20.00, total biayanya adalah USD 0,000026/GB/jam × 2.000 GB × 1 jam = USD 0,052. Jika Anda melepaskan 500 GB ruang penyimpanan dingin dari pukul 20.00 hingga 21.00 dan menggunakan 1.500 GB, total biaya untuk jam tersebut adalah USD 0,000026/GB/jam × 1.500 GB × 1 jam = USD 0,039.
Harga dalam contoh ini hanya sebagai referensi. Harga aktual berlaku di Konsol.
Aktifkan penyimpanan bertingkat data panas dan dingin
Community-compatible Edition
Masuk ke Konsol ApsaraDB for ClickHouse. Di pojok kiri atas halaman, pilih wilayah tempat kluster berada.
Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.
Di panel navigasi sebelah kiri, klik Cold and hot layered storage.
Klik Click to Enable Layered Storage.
Pada kotak dialog yang muncul, klik OK.
Setelah Anda mengonfirmasi, kluster akan restart. Fitur diaktifkan ketika status kluster berubah dari Changing Configuration menjadi Running.
Enterprise Edition
Untuk ApsaraDB for ClickHouse Enterprise Edition, pertama-tama kirimkan tiket untuk menambahkan penyimpanan bertingkat data panas dan dingin ke daftar putih. Kemudian, lakukan langkah-langkah berikut untuk mengaktifkan fitur tersebut pada kluster tujuan.
Masuk ke Konsol ApsaraDB for ClickHouse. Di pojok kiri atas halaman, pilih wilayah tempat kluster berada.
Pada halaman Clusters, klik tab Enterprise Edition Clusters, lalu klik ID kluster tujuan.
Di panel navigasi sebelah kiri, klik Cold and hot layered storage.
Klik Click to Enable Layered Storage.
Pada kotak dialog yang muncul, konfigurasikan TTL global.
Klik OK.
Fitur diaktifkan ketika status kluster berubah menjadi Running dan halaman Tiered Storage menampilkan Enabled.
Setelah Anda mengaktifkan fitur tersebut, Anda dapat mengklik ikon edit di samping Parameter Value untuk menyesuaikan TTL global. TTL baru berlaku pada epoch dump berikutnya (00:00 UTC pada hari berikutnya).
Kelola kebijakan penyimpanan bertingkat untuk Community-compatible Edition
Kebijakan penyimpanan default untuk penyimpanan bertingkat data panas dan dingin
Setelah Anda mengaktifkan penyimpanan bertingkat, kebijakan penyimpanan default memiliki parameter berikut.
Parameter | Deskripsi |
move_factor | Ketika persentase ruang bebas pada disk data panas kurang dari nilai ini, bagian data yang menempati ruang terbesar pada disk data panas secara otomatis dipindahkan ke disk data dingin. Nilainya harus berada dalam rentang Catatan Untuk mempelajari cara melihat disk space, lihat View disk space. |
prefer_not_to_merge | Menentukan apakah akan menggabungkan data pada disk data dingin. Nilai yang valid:
|
Tetapkan kebijakan penyimpanan bertingkat berbasis TTL saat membuat tabel
Tambahkan pernyataan TTL ke kebijakan penyimpanan default. Hal ini secara otomatis memindahkan semua data yang dibuat sebelum interval waktu tertentu ke disk data dingin.
Sintaks
TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'Deskripsi parameter
Parameter | Deskripsi |
time_column | Kolom dengan tipe data Date atau DateTime. |
number | Interval waktu. Unit umum adalah Day, Week, Month, dan Year. |
Untuk informasi selengkapnya tentang klausa TTL, lihat TTL.
Contoh
Pindahkan semua data yang berusia lebih dari 90 hari ke disk data dingin berdasarkan kolom `date`. Pernyataan untuk membuat tabel adalah sebagai berikut.
CREATE TABLE ttl_test_tbl
(
`f1` String,
`f2` String,
`f3` Int64,
`f4` Float64,
`date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';Ubah kebijakan penyimpanan bertingkat berbasis TTL
Anda dapat mengubah kolom tipe tanggal atau tanggal dan interval waktu dalam kebijakan penyimpanan bertingkat berbasis TTL.
Perhatian
Dampak terhadap data
Data historis: Secara default, data historis disimpan sesuai kebijakan baru. Proses ini bersifat asinkron dan memerlukan waktu. Agar perubahan berlaku segera, jalankan pernyataan
ALTER TABLE materialize TTL;setelah Anda mengubah kebijakan. Jika Anda tidak ingin mengubah kebijakan penyimpanan untuk data historis, jalankan pernyataanSET materialize_ttl_after_modify=0;sebelum mengubah kebijakan.Data inkremental: Secara default, data inkremental juga disimpan sesuai kebijakan baru.
Setelah Anda mengubah kebijakan, data yang sudah berada di disk data dingin tidak secara otomatis dipindahkan ke disk data panas. Untuk memindahkan data tersebut, lihat Move data between hot and cold disks.
Sintaks
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';Deskripsi parameter
Parameter | Deskripsi |
table_name | Nama tabel. |
time_column | Kolom tanggal atau tipe tanggal target. |
number | Interval waktu. Unit umum adalah Day, Week, Month, dan Year. |
Manajemen data untuk Community-compatible Edition
Pindahkan data antara disk panas dan dingin
Pindahkan data dari disk data panas ke disk data dingin.
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk';Pindahkan data dari disk data dingin ke disk data panas.
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';Catatanpartitionadalah nama partisi. Anda dapat menemukannya di tabel sistem `system.parts`.
Lihat data pada disk panas dan dingin
Lihat data pada disk data panas:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1;Lihat data pada disk data dingin:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;
Lihat disk space
Setelah Anda mengaktifkan penyimpanan bertingkat, jalankan pernyataan berikut untuk melihat disk space.
SELECT * FROM system.disks;Hasil berikut dikembalikan.
┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space──────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │ 0 │ OSS │
│ default │ /clickhouse/data/data/ │ 201663209472 │ 207083249664 │ 5420040192 │ 0 │ local │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘Kolom dalam set hasil dijelaskan sebagai berikut.
Parameter | Deskripsi |
name | Nama disk.
|
path | Jalur penyimpanan data pada disk. |
free_space | Ruang bebas tersisa pada disk. Ruang bebas pada disk data dingin tidak terbatas. Satuan: byte. |
total_space | Ruang total pada disk. Ruang bebas pada disk data dingin tidak terbatas. Satuan: byte. |
used_space | Ruang yang digunakan pada disk. Satuan: byte. |
keep_free_space | Ruang bebas yang dicadangkan. Satuan: byte. |
type | Media penyimpanan.
|
FAQ
Q: Mengapa data tidak dipindahkan dari disk data panas ke disk data dingin?
A: Apakah data dipindahkan ke disk data dingin bergantung pada nilai move_ttl_info.min dan move_ttl_info.max dalam tabel `system.parts`. Anda dapat menggunakan pernyataan berikut untuk mengambil nilai-nilai tersebut.
SELECT move_ttl_info.min, move_ttl_info.max FROM system.parts WHERE database = '<db_name>' AND table = '<tb_name>' AND disk_name = 'default'Jika waktu saat ini lebih awal daripada salah satu nilai yang dikembalikan, bagian data tersebut tidak dipindahkan ke penyimpanan dingin. Kemungkinan lainnya adalah sistem sedang dalam proses memindahkan data, tetapi operasi tersebut belum selesai.