Topik ini menjelaskan keluarga mesin tabel SharedMergeTree di ApsaraDB for ClickHouse Enterprise Edition.
Ikhtisar
Keluarga mesin tabel SharedMergeTree hanya tersedia di ApsaraDB for ClickHouse Enterprise Edition.
Keluarga mesin tabel SharedMergeTree merupakan pengganti berbasis cloud dari mesin ReplicatedMergeTree dan bekerja di atas Object Storage Service (OSS). Setiap jenis mesin MergeTree memiliki alternatif yang sesuai dalam keluarga SharedMergeTree. Sebagai contoh, ReplacingSharedMergeTree menggantikan ReplacingReplicatedMergeTree.
Keluarga mesin tabel SharedMergeTree meningkatkan performa ApsaraDB for ClickHouse Enterprise Edition. Anda tidak perlu melakukan perubahan apa pun untuk menggunakan keluarga mesin tabel SharedMergeTree sebagai pengganti mesin berbasis ReplicatedMergeTree. Keluarga mesin tabel SharedMergeTree menawarkan manfaat berikut:
Throughput insert lebih tinggi
Throughput penggabungan latar belakang yang ditingkatkan
Throughput mutasi yang ditingkatkan
Operasi penskalaan yang lebih cepat
Konsistensi data kuat yang lebih ringan untuk query SELECT
Dibandingkan dengan ReplicatedMergeTree, SharedMergeTree menyediakan pemisahan komputasi dan penyimpanan yang lebih dalam, yang merupakan peningkatan signifikan. Gambar berikut menunjukkan bagaimana ReplicatedMergeTree memisahkan komputasi dan penyimpanan:
Gambar di atas menunjukkan bahwa data yang disimpan di ReplicatedMergeTree berada di penyimpanan objek. Namun, metadata masih berada di setiap server ClickHouse. Ini menunjukkan bahwa metadata perlu direplikasi di semua replika untuk setiap replikasi.
Tidak seperti ReplicatedMergeTree, SharedMergeTree tidak memerlukan replika untuk berkomunikasi satu sama lain. Sebagai gantinya, semua komunikasi terjadi melalui penyimpanan bersama dan ClickHouse Keeper. SharedMergeTree mengimplementasikan replikasi tanpa pemimpin secara asinkron dan menggunakan ClickHouse Keeper untuk koordinasi serta penyimpanan metadata. Ini menunjukkan bahwa metadata tidak perlu direplikasi saat layanan Anda berkembang. Hal ini menghasilkan replikasi, modifikasi, penggabungan, dan operasi penskalaan yang lebih cepat. SharedMergeTree memungkinkan setiap tabel memiliki ratusan replika. Ini juga mengimplementasikan penskalaan dinamis tanpa shard. Pendekatan eksekusi query terdistribusi dapat digunakan di ApsaraDB for ClickHouse Enterprise Edition untuk memanfaatkan lebih banyak sumber daya komputasi untuk sebuah query.
Pemantauan sistem
Sebagian besar tabel sistem ReplicatedMergeTree yang digunakan untuk pemantauan sistem tersedia di SharedMergeTree, kecuali system.replication_queue dan system.replicated_fetches. Hal ini karena replikasi data dan metadata tidak terjadi. Namun, SharedMergeTree memiliki alternatif yang sesuai untuk kedua tabel tersebut.
system.virtual_parts: Tabel ini berfungsi sebagai alternatif SharedMergeTree untuk
system.replication_queue. Tabel ini menyimpan informasi tentang set data bagian saat ini yang paling baru dan data bagian masa depan yang sedang berlangsung, seperti penggabungan, modifikasi, dan penghapusan partisi.system.shared_merge_tree_fetches: Tabel ini berfungsi sebagai alternatif SharedMergeTree untuk system.replicated_fetches. Tabel ini berisi informasi tentang kunci utama dan checksum yang sedang dimuat ke dalam memori.
Menggunakan SharedMergeTree
Mesin tabel berbasis SharedMergeTree adalah mesin tabel default di ApsaraDB for ClickHouse Enterprise Edition. Untuk kluster yang mendukung keluarga mesin tabel SharedMergeTree, Anda tidak perlu melakukan perubahan tambahan. Anda dapat membuat tabel dengan cara yang sama seperti sebelumnya, dan mesin tabel berbasis SharedMergeTree akan digunakan secara otomatis. Mesin ini sesuai dengan mesin yang ditentukan dalam pernyataan CREATE TABLE Anda.
Anda dapat membuat tabel bernama
my_tabledengan menggunakan mesin tabel SharedMergeTree.CREATE TABLE my_table( key UInt64, value String ) ENGINE = MergeTree ORDER BY keyAnda tidak perlu menetapkan nilai
ENGINEmenjadi MergeTree karena nilaidefault_table_engineadalah MergeTree di ApsaraDB for ClickHouse Enterprise Edition. Query berikut identik dengan query sebelumnya:CREATE TABLE my_table( key UInt64, value String ) ORDER BY keyJika Anda menggunakan mesin tabel ReplacingMergeTree, CollapsingMergeTree, AggregatingMergeTree, SummingMergeTree, VersionedCollapsingMergeTree, dan GraphiteMergeTree, mereka akan secara otomatis dikonversi ke mesin tabel berbasis SharedMergeTree yang sesuai.
CREATE TABLE myFirstReplacingMT ( `key` Int64, `someCol` String, `eventTime` DateTime ) ENGINE = ReplacingMergeTree ORDER BY key;Anda dapat menjalankan pernyataan SHOW CREATE TABLE untuk menanyakan pernyataan CREATE TABLE yang sesuai.
SHOW CREATE TABLE myFirstReplacingMT;CREATE TABLE default.myFirstReplacingMT ( `key` Int64, `someCol` String, `eventTime` DateTime ) ENGINE = SharedReplacingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}') ORDER BY key SETTINGS index_granularity = 8192
Konfigurasi mesin
Anda perlu memperhatikan perubahan konfigurasi mesin berikut:
insert_quorum: Semua insert ke SharedMergeTree adalah insert quorum (data ditulis ke penyimpanan bersama). Oleh karena itu, parameter ini tidak diperlukan jika mesin tabel berbasis SharedMergeTree digunakan.insert_quorum_parallel: Semua insert ke SharedMergeTree adalah insert quorum (data ditulis ke penyimpanan bersama).select_sequential_consistency: Insert quorum tidak diperlukan. Permintaan tambahan dikirim ke ClickHouse Keeper dalam query SELECT.