ClickHouse Menambah Sokongan UPDATE Tetapi Komuniti Memberi Amaran Terhadap Kes Penggunaan OLTP

Pasukan Komuniti BigGo
ClickHouse Menambah Sokongan UPDATE Tetapi Komuniti Memberi Amaran Terhadap Kes Penggunaan OLTP

ClickHouse baru-baru ini memperkenalkan sokongan penyata UPDATE dalam versi 25.7, menandakan pencapaian penting bagi pangkalan data analitik kolumnar ini. Perkembangan ini telah mencetuskan perbincangan sengit dalam komuniti mengenai bila hendak menggunakan ClickHouse berbanding PostgreSQL, dengan ramai pembangun berkongsi pengajaran pahit tentang perbezaan asas antara sistem OLAP dan OLTP.

Semakan Realiti: Kemaskini Datang dengan Kaveat Utama

Walaupun keupayaan UPDATE baharu ClickHouse mewakili kerja kejuruteraan yang mengagumkan, ahli komuniti cepat menunjukkan had-hadnya. Pangkalan data ini masih beroperasi secara asasnya berbeza daripada sistem berasaskan baris tradisional seperti PostgreSQL. Kemaskini dalam ClickHouse mencipta bahagian tampung yang digabungkan di latar belakang, bukannya mengubah suai data secara langsung di tempatnya.

Tiada pangkalan data yang pernah membuatkan saya lebih gila daripada ClickHouse. Jika beban kerja anda adalah tambah-sahaja/masuk-sahaja maka tahniah, ia menakjubkan, anda akan mempunyai masa yang hebat. Jika anda perlu mengemas kini data... Nah, bersiaplah.

Sentimen ini mencerminkan konsensus komuniti yang lebih luas: ClickHouse cemerlang dalam apa yang direka untuknya, tetapi cuba memaksanya ke dalam peranan OLTP membawa kepada kekecewaan dan masalah prestasi.

Perbandingan Seni Bina:

  • PostgreSQL: Penyimpanan berasaskan baris dalam halaman 8KB dengan metadata transaksi (xmin/xmax) untuk MVCC
  • ClickHouse: Penyimpanan kolumnar dengan proses gabungan latar belakang untuk kemaskini
  • Mekanisme kemaskini: PostgreSQL mengubah suai tuple secara in-place; ClickHouse mencipta bahagian tampung yang digabungkan oleh proses latar belakang
  • Kesan memori: Kemaskini PostgreSQL biasanya mempengaruhi satu blok memori; kemaskini ClickHouse mungkin memerlukan sentuhan pada berbilang halaman memori

Seni Bina Lebih Penting Daripada Penanda Aras

Perbezaan seni bina asas antara sistem-sistem ini menjadikan perbandingan langsung mencabar. PostgreSQL menyimpan data dalam halaman 8KB dengan metadata transaksi untuk setiap tuple, menjadikan kemaskini baris tunggal cekap. Penyimpanan kolumnar ClickHouse bermakna mengemas kini berbilang medan dalam satu baris memerlukan sentuhan pada berbilang halaman memori, sememangnya menjadikan kemaskini titik lebih mahal.

Ahli komuniti menekankan bahawa ini bukan sekadar butiran pelaksanaan—ia mencerminkan falsafah reka bentuk teras. PostgreSQL mengutamakan pematuhan ACID dan integriti transaksi, manakala ClickHouse mengoptimumkan untuk beban kerja analitik di mana data biasanya ditulis sekali dan dibaca berkali-kali.

Pendekatan Hibrid Mendapat Tarikan

Daripada memilih satu pangkalan data berbanding yang lain, banyak organisasi menggunakan seni bina hibrid. Perbincangan komuniti mendedahkan corak yang jelas: gunakan PostgreSQL untuk beban kerja transaksi dan ClickHouse untuk analitik, dengan Change Data Capture (CDC) menjambatani kedua-dua sistem.

Pengambilalihan PeerDB oleh ClickHouse telah menjadikan pendekatan ini lebih mudah diakses, menyediakan keupayaan CDC asli yang boleh mengendalikan pangkalan data dari puluhan gigabait hingga puluhan terabait. Ini membolehkan organisasi mengekalkan PostgreSQL untuk data aplikasi teras mereka sambil memanfaatkan prestasi analitik unggul ClickHouse.

Kes Penggunaan yang Disyorkan:

  • PostgreSQL: Beban kerja OLTP, aplikasi kewangan, kemas kini baris tunggal masa nyata, aplikasi yang memerlukan jaminan ACID yang ketat
  • ClickHouse: Beban kerja OLAP, data siri masa, analitik, senario tambah sahaja, pemprosesan data pukal
  • Pendekatan hibrid: PostgreSQL untuk data transaksi + ClickHouse untuk analitik melalui CDC (Change Data Capture)
  • Garis masa migrasi: Migrasi kecil hingga sederhana: beberapa minggu; migrasi OLAP masa nyata yang lebih besar: 1-2 bulan

Pertukaran Prestasi vs. Konsistensi

Keputusan penanda aras yang menunjukkan kelebihan kelajuan ClickHouse datang dengan kaveat penting tentang jaminan konsistensi. ClickHouse secara lalai menggunakan penulisan tak segerak (fsync_after_insert = false), manakala PostgreSQL secara lalai menggunakan komit segerak. Perbezaan asas dalam jaminan ketahanan ini menjelaskan sebahagian besar jurang prestasi.

Ahli komuniti menyatakan bahawa perbandingan adil memerlukan pelarasan tetapan komit segerak PostgreSQL, walaupun keputusan mungkin kekal sama untuk operasi UPDATE disebabkan perbezaan seni bina yang mendasari.

Perbezaan Prestasi Utama:

  • Kemas kini baris tunggal: PostgreSQL ~2ms (cache panas) berbanding ClickHouse ~6ms
  • Kemas kini pukal: ClickHouse 5x hingga 45x lebih pantas daripada PostgreSQL
  • Tetapan ketahanan lalai: PostgreSQL menggunakan fsync = ON dan synchronous_commit = ON, manakala ClickHouse menggunakan fsync_after_insert = false
  • Pematuhan ACID: PostgreSQL mematuhi ACID sepenuhnya untuk semua transaksi; ClickHouse mematuhi ACID pada peringkat pelayan sahaja

Keluk Pembelajaran dan Cabaran Operasi

Pembangun yang beralih daripada pangkalan data tradisional ke ClickHouse melaporkan keluk pembelajaran yang ketara, biasanya berkisar dari minggu hingga bulan bergantung pada kerumitan beban kerja mereka. Komuniti khususnya menyerlahkan tingkah laku lalai ClickHouse yang berbeza, seperti pengendalian gabungan null, yang boleh mengejutkan pengguna PostgreSQL.

Walau bagaimanapun, mereka yang berjaya menavigasi peralihan ini sering menjadi penyokong kuat, terutamanya untuk beban kerja analitik di mana ClickHouse boleh memberikan peningkatan prestasi 100x berbanding sistem berasaskan baris tradisional.

Konsensus yang muncul daripada perbincangan komuniti adalah jelas: fahami keperluan beban kerja anda dahulu, kemudian pilih alat yang sesuai. Sokongan UPDATE baharu ClickHouse tidak mengubahnya menjadi pangkalan data OLTP tujuan umum, tetapi ia menjadikannya lebih fleksibel untuk beban kerja campuran di mana kemaskini sekali-sekala diperlukan dalam sistem yang terutamanya analitik.

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

Tangkapan daripada blog ClickHouse yang membincangkan perbandingan prestasi antara ClickHouse dan PostgreSQL, memfokuskan kepada keperluan beban kerja dan keupayaan pangkalan data
Tangkapan daripada blog ClickHouse yang membincangkan perbandingan prestasi antara ClickHouse dan PostgreSQL, memfokuskan kepada keperluan beban kerja dan keupayaan pangkalan data