ClickHouse Menambahkan Dukungan UPDATE Namun Komunitas Memperingatkan Penggunaan untuk Kasus OLTP

Tim Komunitas BigGo
ClickHouse Menambahkan Dukungan UPDATE Namun Komunitas Memperingatkan Penggunaan untuk Kasus OLTP

ClickHouse baru-baru ini memperkenalkan dukungan statement UPDATE dalam versi 25.7, menandai pencapaian penting untuk database analitik kolumnar ini. Perkembangan ini telah memicu diskusi intens di komunitas tentang kapan menggunakan ClickHouse versus PostgreSQL, dengan banyak developer berbagi pelajaran berharga tentang perbedaan fundamental antara sistem OLAP dan OLTP.

Kenyataan yang Harus Dihadapi: Update Hadir dengan Peringatan Besar

Meskipun kemampuan UPDATE baru ClickHouse merepresentasikan karya engineering yang mengesankan, anggota komunitas dengan cepat menunjukkan keterbatasannya. Database ini masih beroperasi secara fundamental berbeda dari sistem berbasis baris tradisional seperti PostgreSQL. Update dalam ClickHouse menciptakan patch parts yang digabungkan di background, bukan memodifikasi data secara langsung di tempatnya.

Tidak ada database yang pernah membuat saya lebih frustrasi daripada ClickHouse. Jika workload Anda append-only/insert-only maka selamat, ini luar biasa, Anda akan senang menggunakannya. Jika Anda perlu mengupdate data... Nah, bersiap-siaplah.

Sentimen ini mencerminkan konsensus komunitas yang lebih luas: ClickHouse unggul dalam hal yang memang dirancang untuknya, tetapi memaksanya untuk peran OLTP menyebabkan frustrasi dan masalah performa.

Perbandingan Arsitektur:

  • PostgreSQL: Penyimpanan berbasis baris dalam halaman 8KB dengan metadata transaksi (xmin/xmax) untuk MVCC
  • ClickHouse: Penyimpanan kolumnar dengan proses penggabungan latar belakang untuk pembaruan
  • Mekanisme pembaruan: PostgreSQL memodifikasi tuple secara in-place; ClickHouse membuat bagian patch yang digabungkan oleh proses latar belakang
  • Dampak memori: Pembaruan PostgreSQL biasanya mempengaruhi satu blok memori; ClickHouse pembaruan mungkin memerlukan sentuhan pada beberapa halaman memori

Arsitektur Lebih Penting daripada Benchmark

Perbedaan arsitektur fundamental antara sistem-sistem ini membuat perbandingan langsung menjadi menantang. PostgreSQL menyimpan data dalam halaman 8KB dengan metadata transaksi untuk setiap tuple, membuat update single-row menjadi efisien. Penyimpanan kolumnar ClickHouse berarti mengupdate beberapa field dalam satu baris memerlukan akses ke beberapa halaman memori, yang secara inheren membuat point update lebih mahal.

Anggota komunitas menekankan bahwa ini bukan hanya detail implementasi—tetapi mencerminkan filosofi desain inti. PostgreSQL memprioritaskan kepatuhan ACID dan integritas transaksional, sementara ClickHouse mengoptimalkan untuk workload analitik di mana data biasanya ditulis sekali dan dibaca berkali-kali.

Pendekatan Hybrid Semakin Populer

Daripada memilih satu database dibanding yang lain, banyak organisasi mengadopsi arsitektur hybrid. Diskusi komunitas mengungkapkan pola yang jelas: gunakan PostgreSQL untuk workload transaksional dan ClickHouse untuk analitik, dengan Change Data Capture (CDC) menjembatani kedua sistem.

Akuisisi PeerDB oleh ClickHouse telah membuat pendekatan ini lebih mudah diakses, menyediakan kemampuan CDC native yang dapat menangani database mulai dari puluhan gigabyte hingga puluhan terabyte. Ini memungkinkan organisasi mempertahankan PostgreSQL untuk data aplikasi inti mereka sambil memanfaatkan performa analitik superior ClickHouse.

Kasus Penggunaan yang Direkomendasikan:

  • PostgreSQL: Beban kerja OLTP, aplikasi keuangan, pembaruan baris tunggal secara real-time, aplikasi yang memerlukan jaminan ACID yang ketat
  • ClickHouse: Beban kerja OLAP, data time-series, analitik, skenario append-only, pemrosesan data dalam jumlah besar
  • Pendekatan hybrid: PostgreSQL untuk data transaksional + ClickHouse untuk analitik melalui CDC (Change Data Capture)
  • Timeline migrasi: Migrasi kecil hingga menengah: beberapa minggu; migrasi OLAP real-time yang lebih besar: 1-2 bulan

Trade-off Performa vs. Konsistensi

Hasil benchmark yang menunjukkan keunggulan kecepatan ClickHouse hadir dengan peringatan penting tentang jaminan konsistensi. ClickHouse secara default menggunakan asynchronous writes (fsync_after_insert = false), sementara PostgreSQL secara default menggunakan synchronous commits. Perbedaan fundamental dalam jaminan durabilitas ini menjelaskan sebagian besar gap performa.

Anggota komunitas mencatat bahwa perbandingan yang adil akan memerlukan penyesuaian pengaturan synchronous commit PostgreSQL, meskipun hasilnya kemungkinan akan tetap serupa untuk operasi UPDATE karena perbedaan arsitektur yang mendasar.

Perbedaan Kinerja Utama:

  • Pembaruan baris tunggal: PostgreSQL ~2ms (cache hangat) vs ClickHouse ~6ms
  • Pembaruan massal: ClickHouse 5x hingga 45x lebih cepat dibandingkan PostgreSQL
  • Pengaturan durabilitas default: PostgreSQL menggunakan fsync = ON dan synchronous_commit = ON, sementara ClickHouse menggunakan fsync_after_insert = false
  • Kepatuhan ACID: PostgreSQL sepenuhnya mematuhi ACID untuk semua transaksi; ClickHouse mematuhi ACID hanya di tingkat server

Learning Curve dan Tantangan Operasional

Developer yang bertransisi dari database tradisional ke ClickHouse melaporkan learning curve yang signifikan, biasanya berkisar dari minggu hingga bulan tergantung pada kompleksitas workload mereka. Komunitas secara khusus menyoroti perilaku default ClickHouse yang berbeda, seperti null join handling, yang dapat mengejutkan pengguna PostgreSQL.

Namun, mereka yang berhasil menavigasi transisi ini sering menjadi advokat yang kuat, terutama untuk workload analitik di mana ClickHouse dapat memberikan peningkatan performa 100x dibanding sistem berbasis baris tradisional.

Konsensus yang muncul dari diskusi komunitas jelas: pahami kebutuhan workload Anda terlebih dahulu, kemudian pilih tool yang tepat. Dukungan UPDATE baru ClickHouse tidak mengubahnya menjadi database OLTP serbaguna, tetapi membuatnya lebih fleksibel untuk workload campuran di mana update sesekali diperlukan dalam sistem yang primarily analitik.

Referensi: You can't UPDATE what you can't find: ClickHouse vs PostgreSQL

Tangkapan layar dari blog ClickHouse yang membahas perbandingan performa antara ClickHouse dan PostgreSQL, dengan fokus pada kebutuhan beban kerja dan kemampuan basis data
Tangkapan layar dari blog ClickHouse yang membahas perbandingan performa antara ClickHouse dan PostgreSQL, dengan fokus pada kebutuhan beban kerja dan kemampuan basis data