Untuk mengurangi biaya penyimpanan data serta meningkatkan kinerja query dan pemanfaatan sumber daya sistem, ApsaraDB for ClickHouse menyediakan fitur penyimpanan bertingkat data panas dan data dingin. Anda dapat menyimpan data pada berbagai jenis disk sesuai dengan frekuensi akses query. Topik ini menjelaskan cara mengaktifkan penyimpanan bertingkat data panas dan data dingin serta mengonfigurasi kebijakan penyimpanan.
Prasyarat
Sebuah kluster ApsaraDB for ClickHouse versi V20.8 atau lebih baru telah dibuat.
Fitur cadangan data dinonaktifkan untuk kluster ApsaraDB for ClickHouse.
Jika ingin menggunakan penyimpanan bertingkat data panas dan data dingin pada kluster ApsaraDB for ClickHouse yang tidak mendukung fitur ini, Anda dapat membuat kluster versi V20.8 atau lebih baru dan memigrasi data ke kluster tersebut. Untuk informasi lebih lanjut, lihat Migrasi data antar kluster ApsaraDB for ClickHouse Community-compatible Edition.
ApsaraDB for ClickHouse Enterprise Edition secara otomatis menyimpan data panas di cache dan data dingin di penyimpanan bersama. Penyimpanan bertingkat data panas dan data dingin tidak bergantung pada aturan penyimpanan data panas dan data dingin.
Informasi latar belakang
Data panas adalah data yang sering diakses dan disimpan pada SSD yang ditingkatkan (ESSD) atau disk ultra. Disk-disk ini dipilih saat Anda membuat kluster. Penyimpanan data panas cocok untuk skenario bisnis yang memerlukan query berperforma tinggi.
Data dingin adalah data yang jarang diakses. Data dingin disimpan pada disk data dingin dengan biaya penyimpanan rendah untuk memenuhi kebutuhan penyimpanan yang hemat biaya.
Penyimpanan bertingkat data panas dan data dingin menyediakan kebijakan penyimpanan berikut:
Kebijakan penyimpanan
Deskripsi
Kebijakan penyimpanan default
Data baru yang ditulis disimpan pada disk data panas untuk mendukung query yang efisien. Jika jumlah data panas yang tersimpan mencapai ambang batas penyimpanan, file bagian data dengan ukuran terbesar di disk data panas secara otomatis dipindahkan ke disk data dingin. Dengan cara ini, data panas baru yang ditulis dapat disimpan pada disk data panas.
Kebijakan penyimpanan berbasis waktu hidup (TTL)
Tambahkan klausa TTL ke kebijakan penyimpanan default. Dengan cara ini, semua data yang dihasilkan sebelum periode tertentu dalam klausa TTL secara otomatis dipindahkan ke disk data dingin.
Perhatian
Kami menyarankan Anda mengaktifkan penyimpanan bertingkat data panas dan data dingin hanya selama jam-jam non-puncak. Mengaktifkan fitur ini menyebabkan restart kluster. Selama restart, Anda hanya dapat melihat informasi kluster. Anda tidak dapat meningkatkan, menambah kapasitas, atau mengurangi kapasitas kluster, atau memodifikasi konfigurasi parameter.
Saat menggunakan penyimpanan bertingkat data panas dan data dingin, Anda harus menentukan kebijakan penyimpanan untuk tabel.
Saat membuat tabel, Anda dapat menggunakan
SETTINGS storage_policy = 'hot_to_cold'untuk menentukan kebijakan penyimpanan data.Anda dapat memodifikasi kebijakan penyimpanan data dari tabel yang sudah ada.
Kluster dengan penyimpanan bertingkat data panas dan data dingin diaktifkan setelah 1 Januari 2024
Eksekusi pernyataan berikut untuk memodifikasi kebijakan penyimpanan data:
ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';Kluster dengan penyimpanan bertingkat data panas dan data dingin diaktifkan sebelum 1 Januari 2024
Anda dapat mengajukan tiket untuk menambahkan kebijakan penyimpanan data panas dan dingin. Dengan cara ini, Anda dapat menggunakan kebijakan tersebut untuk memigrasi data dari disk data panas ke disk data dingin.
Fitur penyimpanan bertingkat data panas dan data dingin tidak dapat dinonaktifkan setelah diaktifkan.
Tagihan
Anda akan ditagih untuk fitur penyimpanan bertingkat data panas dan data dingin berdasarkan aturan berikut:
Jenis penyimpanan
Rincian tagihan
Penyimpanan data panas
Kapasitas penyimpanan yang Anda beli untuk kluster khusus untuk data panas. Anda tidak perlu membeli penyimpanan tambahan untuk data panas setelah Anda membeli kluster.
Penyimpanan data dingin
Anda akan ditagih untuk penyimpanan data dingin berdasarkan metode penagihan bayar sesuai pemakaian. Anda tidak perlu membeli penyimpanan untuk data dingin sebelum menggunakan penyimpanan. Anda akan ditagih untuk penyimpanan data dingin setiap jam berdasarkan penyimpanan yang digunakan.
Untuk informasi lebih lanjut tentang harga satuan penyimpanan data dingin, lihat Biaya penyimpanan kluster ApsaraDB for ClickHouse.
Rumus tagihan: Biaya ruang penyimpanan dingin = Harga satuan penyimpanan data dingin × Penyimpanan data dingin yang digunakan × Durasi penggunaan.
Sebagai contoh, jika harga satuan penyimpanan data dingin adalah USD 0,000026 per GB-jam dan 2.000 GB data dingin disimpan dari pukul 19:00 hingga 20:00, total biaya dihitung berdasarkan rumus berikut: USD 0,000026 per GB-jam × 2.000 GB × 1 jam = USD 0,052. Jika Anda melepaskan 500 GB ruang penyimpanan data dingin antara pukul 20:00 dan 21:00, hanya 1.500 GB penyimpanan yang digunakan. Dalam hal ini, total biaya yang dikenakan antara pukul 20:00 dan 21:00 dihitung berdasarkan rumus berikut: USD 0,000026 per GB-jam × 1.500 GB × 1 jam = USD 0,039.
Harga-harga di atas hanya diberikan sebagai referensi. Dalam skenario penagihan aktual, harga yang ditampilkan di konsol ApsaraDB for ClickHouse yang berlaku.
Aktifkan penyimpanan bertingkat data panas dan data dingin
Masuk ke konsol ApsaraDB for ClickHouse.
Di bilah navigasi atas, pilih wilayah tempat kluster Anda ditempatkan.
Di halaman Clusters, klik tab Clusters of Community-compatible Edition dan klik ID kluster yang ingin Anda kelola.
Di panel navigasi sisi kiri, klik Cold and hot layered storage.
Klik Click to Enable Layered Storage.
Di pesan Enable Layered Storage, klik OK.
Kemudian, sistem akan me-restart kluster. Setelah status kluster berubah dari Changing Configuration menjadi Running, penyimpanan bertingkat data panas dan data dingin diaktifkan.
Kebijakan penyimpanan default yang digunakan setelah penyimpanan bertingkat data panas dan data dingin diaktifkan
Tabel berikut menjelaskan parameter untuk kebijakan penyimpanan default yang digunakan setelah penyimpanan bertingkat data panas dan data dingin diaktifkan.
Parameter | Deskripsi |
move_factor | Jika persentase penyimpanan tersedia untuk data panas terhadap total penyimpanan untuk data panas lebih kecil dari nilai parameter move_factor, file bagian data dengan ukuran terbesar di disk data panas secara otomatis dipindahkan ke disk data dingin. Nilai valid: Catatan Untuk informasi lebih lanjut tentang cara melihat ruang disk, lihat bagian Lihat ruang disk dari topik ini. |
prefer_not_to_merge | Menentukan apakah akan menggabungkan data pada disk data dingin. Nilai valid:
|
Tambahkan kebijakan penyimpanan bertingkat berbasis TTL
Tambahkan klausa TTL ke kebijakan penyimpanan default. Dengan cara ini, semua data yang dihasilkan sebelum periode tertentu dalam klausa TTL secara otomatis dipindahkan ke disk data dingin.
Sintaks
TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'Parameter
Parameter | Deskripsi |
time_column | Kolom tipe data DATE atau DATETIME. |
number | Periode sebelum data yang akan dipindahkan dihasilkan. Unit umum adalah hari, minggu, bulan, dan tahun. |
Untuk informasi lebih lanjut tentang klausa TTL, lihat TTL.
Contoh
Pindahkan semua data yang dihasilkan 90 hari lalu ke disk data dingin berdasarkan kolom tanggal. Kolom tanggal berisi tanggal ketika data dihasilkan. Eksekusi pernyataan berikut untuk membuat tabel:
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';Modifikasi penyimpanan bertingkat berbasis TTL data panas dan data dingin
Anda dapat memodifikasi parameter time_column yang menentukan tanggal atau kolom tipe tanggal dan parameter number yang menentukan interval dalam kebijakan penyimpanan bertingkat berbasis TTL.
Catatan penggunaan
Dampak pada Data
Data yang Ada: Secara default, sistem menyimpan data yang ada berdasarkan kebijakan penyimpanan baru setelah Anda memodifikasi kebijakan penyimpanan bertingkat berbasis TTL. Namun, diperlukan waktu untuk menyimpan data secara asinkron. Jika Anda ingin kebijakan penyimpanan baru berlaku segera, Anda harus mengeksekusi pernyataan
ALTER TABLE materialize TTL;setelah Anda memodifikasi kebijakan penyimpanan bertingkat berbasis TTL. Jika Anda tidak ingin menerapkan kebijakan penyimpanan baru ke data yang ada, Anda harus mengeksekusi pernyataanSET materialize_ttl_after_modify=0;sebelum memodifikasi kebijakan penyimpanan bertingkat berbasis TTL.Data Tambahan: Secara default, sistem menyimpan data tambahan berdasarkan kebijakan penyimpanan baru.
Setelah Anda memodifikasi kebijakan penyimpanan bertingkat berbasis TTL, data yang dipindahkan ke disk data dingin berdasarkan kebijakan penyimpanan asli tidak secara otomatis dipindahkan kembali ke disk data panas. Jika Anda ingin memindahkan data dingin ke disk data panas, lihat bagian Migrasi Data pada Disk Data Panas dan Disk Data Dingin dari topik ini.
Sintaks
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';Deskripsi
Parameter | Deskripsi |
table_name | Nama tabel. |
time_column | Tanggal kebijakan penyimpanan baru atau kolom tipe tanggal. |
number | Periode sebelum data yang akan dipindahkan dihasilkan. Unit umum adalah hari, minggu, bulan, dan tahun. |
Migrasi data pada disk data panas dan disk data dingin
Eksekusi pernyataan berikut untuk memindahkan data dari disk data panas ke disk data dingin:
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk';Eksekusi pernyataan berikut untuk memindahkan data dari disk data dingin ke disk data panas:
ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';Catatanpartitionmenentukan nama partisi. Anda dapat melihat nilainya di tabel sistem system.parts.
Lihat data pada disk data panas dan disk data dingin
Eksekusi pernyataan berikut untuk melihat data pada disk data panas:
SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1;Eksekusi pernyataan berikut untuk melihat 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 ruang disk
Setelah penyimpanan bertingkat data panas dan data dingin diaktifkan, Anda dapat mengeksekusi pernyataan berikut untuk melihat ruang disk:
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 │
└ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────Tabel berikut menjelaskan parameter dalam hasil yang dikembalikan:
Parameter | Deskripsi |
name | Nama disk.
|
path | Path tempat data pada disk disimpan. |
free_space | Ruang tersedia pada disk. Ruang tersedia pada disk data dingin tidak terbatas. Unit: byte. |
total_space | Total ruang disk. Ruang tersedia pada disk data dingin tidak terbatas. Unit: byte. |
used_space | Ruang yang digunakan pada disk. Unit: byte. |
keep_free_space | Ruang tersedia yang dicadangkan pada disk. Unit: byte. |
type | Media penyimpanan. Nilai valid:
|
FAQ
Mengapa data tidak dipindahkan dari disk data panas ke disk data dingin?
Anda dapat melihat nilai parameter move_ttl_info.min dan move_ttl_info.max untuk memeriksa apakah data dipindahkan dari disk data panas ke disk data dingin. Anda dapat mengeksekusi pernyataan berikut untuk menanyakan nilai kedua parameter 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 dari salah satu nilai yang dikembalikan, data tidak dipindahkan ke disk data dingin. Selain itu, sistem mungkin sedang memindahkan data atau mempersiapkan pemindahan. Pemindahan belum selesai.