2 poin oleh GN⁺ 2024-10-23 | 1 komentar | Bagikan ke WhatsApp

Pengantar

  • JSON telah menjadi format standar untuk menangani data semi-terstruktur dan tidak terstruktur dalam sistem data modern.
  • ClickHouse menyadari pentingnya JSON dan mengatasi beberapa tantangan untuk memanfaatkan JSON secara efektif dalam skala besar.

Tantangan

  • Tantangan 1: Penyimpanan berorientasi kolom yang sesungguhnya
    Untuk memproses data JSON seefisien tipe kolom lainnya, path JSON harus disimpan dengan cara yang berorientasi kolom.

  • Tantangan 2: Data yang berubah secara dinamis dan masalah integrasi tipe
    Integritas data harus dipertahankan dengan memungkinkan penyimpanan tipe data yang berbeda untuk path JSON.

  • Tantangan 3: Mencegah ledakan file data kolom di disk
    Jika ada banyak kunci JSON unik, perlu ada batasan pada pembuatan kolom untuk mencegah ledakan file kolom.

  • Tantangan 4: Penyimpanan padat
    Jika ada banyak kunci JSON yang unik tetapi jarang muncul, penyimpanan harus menghindari duplikasi NULL atau nilai default.

Tipe data JSON baru

  • ClickHouse memperkenalkan tipe data JSON baru untuk pemrosesan data JSON berperforma tinggi.
  • Tipe ini mendukung data yang berubah secara dinamis sambil mempertahankan kompresi data yang tinggi dan performa kueri.
  • Performa dapat disesuaikan dengan memberikan hint untuk parsing JSON.

Building block 1 - tipe Variant

  • Tipe Variant memungkinkan penyimpanan nilai dengan tipe data yang berbeda secara efisien dalam kolom tabel yang sama.
  • Integritas data dipertahankan dengan menggunakan subkolom terpisah untuk setiap tipe data.

Building block 2 - tipe Dynamic

  • Tipe Dynamic memperluas tipe Variant agar dapat menyimpan beragam tipe data tanpa perlu menentukan tipenya terlebih dahulu.
  • Jumlah tipe yang disimpan dibatasi untuk mencegah ledakan file kolom.

Tipe JSON ClickHouse

  • Berdasarkan tipe Variant dan Dynamic, tipe JSON baru diimplementasikan untuk menyelesaikan semua tantangan tersebut.
  • Data dapat disimpan tanpa bergantung pada struktur objek JSON, dan nilai dapat dibaca dengan menggunakan path JSON sebagai subkolom.

Ringkasan GN⁺

  • Tipe data JSON baru dari ClickHouse berfokus pada penyelesaian masalah performa JSON dalam analisis data skala besar.
  • Tipe ini mendukung beragam tipe data serta memberikan performa dan skalabilitas yang tinggi.
  • Selain JSON, ini juga meletakkan dasar untuk mendukung tipe semi-terstruktur lain seperti XML dan YAML.
  • Ini berguna bagi developer yang menggunakan ClickHouse dan memberikan keuntungan dalam kompresi data serta performa kueri.

1 komentar

 
GN⁺ 2024-10-23
Komentar Hacker News
  • Keputusan menggunakan ClickHouse di PostHog adalah salah satu pilihan terbaik. Mereka bisa membangun lebih banyak produk dengan set data yang sama sambil tetap menskalakan performa

    • Mereka sudah menggunakan ClickHouse bahkan sebelum fitur JSON hadir, dan menyiapkan proses untuk mengubah field JSON menjadi kolom fisik berdasarkan pola kueri terhadap key di JSON blob
    • Setelah kolom fisik dibuat, saat runtime kueri diarahkan ke kolom tersebut sehingga penggunaan CPU dan IO berkurang secara signifikan
    • Tipe JSON baru di ClickHouse meningkatkan performa dengan membuat komputer melakukan lebih sedikit pekerjaan
    • Tim dan komunitas ClickHouse Inc. bergerak sangat cepat, dan ada ekspektasi besar terhadap dukungan Parquet dan Iceberg
  • Menarik apakah menambahkan data type ke JSON masih membuatnya tetap layak disebut JSON

    • Jika parser JSON pustaka standar tidak bisa membacanya, mungkin lebih baik memakai nama seperti "CH-JSON"
    • Belum mencoba ClickHouse, tetapi hasilnya terdengar keren
  • Senang melihat fitur ini di ClickHouse

    • Snowflake pernah menerbitkan whitepaper yang menyebutkan fitur ini sebelum IPO, dan diam-diam mengubah JSON menjadi kolom untuk meningkatkan performa
  • Saat mengevaluasi ClickHouse, Apache Pinot juga layak dipertimbangkan

    • ClickHouse dirancang untuk instalasi single-machine dan dukungan clusternya kurang kuat
    • Pinot lebih mudah diskalakan secara horizontal, dan jika memanfaatkan star-tree index, ada perbedaan performa besar pada analisis multidimensi
  • Tertarik dengan data yang berubah secara dinamis

    • Semoga ini bisa menyelesaikan masalah pengaturan tipe yang muncul saat menyimpan log di Elasticsearch
  • Sudah lama menunggu dukungan JSON di ClickHouse, dan tipe baru serta dynamic columns akan sangat berguna

  • ClickHouse adalah alat yang hebat

    • Digunakan untuk OLAP, dan menangani database berisi 600 juta baris dan 300GB tanpa masalah
    • Tipe data JSON baru diharapkan lebih baik untuk use case yang saat ini ditangani dengan nested tuple
  • Saat mencoba ClickHouse beberapa minggu lalu, file diberi nama berdasarkan nama kolom, sehingga nama file yang panjang dan slash menyebabkan error di file system

  • ClickHouse belum cukup banyak digunakan

    • Ada anggapan bahwa 'postgres adalah segalanya', tetapi jika perlu melakukan scale lebih dari yang dibutuhkan, ClickHouse patut dipertimbangkan
    • clickhouse-local sangat hebat untuk memproses CSV dengan SQL, dan sangat direkomendasikan saat sudah lelah dengan Google Sheets atau Excel