2 puan yazan GN⁺ 2024-10-23 | 1 yorum | WhatsApp'ta paylaş

Giriş

  • JSON, modern veri sistemlerinde yarı yapılandırılmış ve yapılandırılmamış verileri işlemek için standart format haline geldi.
  • ClickHouse, JSON'un öneminin farkında ve JSON'u büyük ölçekte etkili şekilde kullanma konusunda bazı zorlukları çözüyor.

Zorluklar

  • Zorluk 1: Gerçek anlamda sütun odaklı depolama
    JSON verilerini diğer sütun tipleri gibi verimli şekilde işlemek için JSON yollarının sütun odaklı biçimde depolanması gerekir.

  • Zorluk 2: Dinamik olarak değişen veri ve tip entegrasyonu sorunu
    Veri bütünlüğünü korumak için JSON yollarında farklı veri tiplerinin saklanabilmesi gerekir.

  • Zorluk 3: Disk üzerindeki sütun veri dosyalarının patlamasını önleme
    Çok sayıda benzersiz JSON anahtarı olduğunda sütun dosyalarının aşırı artmasını önlemek için sütun oluşturulmasına sınır konulmalıdır.

  • Zorluk 4: Yoğun depolama
    Benzersiz ama seyrek görülen çok sayıda JSON anahtarı olduğunda NULL veya varsayılan değerlerin tekrar tekrar depolanmaması gerekir.

Yeni JSON veri tipi

  • ClickHouse, yüksek performanslı JSON veri işleme için yeni bir JSON veri tipi sunuyor.
  • Bu tip, dinamik olarak değişen verileri desteklerken yüksek veri sıkıştırması ve sorgu performansını korur.
  • JSON ayrıştırma için ipuçları sağlayarak performans ayarlanabilir.

Yapı taşı 1 - Variant tipi

  • Variant tipi, aynı tablo sütunu içinde farklı veri tiplerindeki değerlerin verimli şekilde saklanmasını sağlar.
  • Her veri tipi için ayrı bir alt sütun kullanarak veri bütünlüğünü korur.

Yapı taşı 2 - Dynamic tipi

  • Dynamic tipi, Variant tipini genişleterek tipleri önceden tanımlamadan çeşitli veri tiplerinin saklanmasını sağlar.
  • Depolanan tip sayısını sınırlayarak sütun dosyalarının aşırı artmasını önler.

ClickHouse JSON tipi

  • Variant ve Dynamic tiplerine dayalı yeni JSON tipi uygulanarak tüm zorluklar çözülüyor.
  • JSON nesnesinin yapısından bağımsız olarak saklanabilir ve JSON yolları alt sütunlar olarak kullanılarak değerler okunabilir.

GN⁺ özeti

  • ClickHouse'un yeni JSON veri tipi, büyük ölçekli veri analizinde JSON'un performans sorunlarını çözmeye odaklanıyor.
  • Bu tip, çeşitli veri tiplerini destekliyor ve yüksek performans ile ölçeklenebilirlik sağlıyor.
  • JSON'un yanı sıra XML, YAML gibi diğer yarı yapılandırılmış tipleri de destekleyebilecek bir temel oluşturuyor.
  • ClickHouse kullanan geliştiriciler için faydalı olup veri sıkıştırması ve sorgu performansında avantajlar sunuyor.

1 yorum

 
GN⁺ 2024-10-23
Hacker News yorumu
  • PostHog'da ClickHouse kullanma kararı verdikleri en iyi kararlardan biriydi. Performansı ölçeklendirirken aynı veri kümesiyle daha fazla ürün geliştirebildiler

    • JSON özelliği çıkmadan önce de ClickHouse kullanıyorlardı ve JSON blob içindeki anahtarlara yönelik sorgu örüntülerine göre JSON alanlarını fiziksel sütunlara dönüştüren bir düzen kurmuşlardı
    • Fiziksel sütunlar oluşturulduğunda, çalışma zamanında sorguları bu sütunlara yönlendirerek CPU ve IO kullanımını büyük ölçüde azalttılar
    • ClickHouse'un yeni JSON türü, bilgisayarın daha az iş yapmasını sağlayarak performansı artırıyor
    • ClickHouse Inc. ekibi ve topluluğu çok hızlı ilerliyor; Parquet ve Iceberg desteği konusunda beklenti yüksek
  • JSON'a veri tipleri eklemenin bunun JSON olarak kalıp kalmadığı konusunda merak var

    • Eğer standart kütüphane JSON parser'ları bunu okuyamıyorsa, "CH-JSON" gibi bir ad kullanmanın daha iyi olacağını düşünüyor
    • ClickHouse'u henüz denemedi ama sonuç kulağa harika geliyor
  • ClickHouse'ta bu özelliği görmek güzel

    • Snowflake, IPO öncesinde bu özellikten bahseden bir whitepaper yayımlamıştı ve performansı artırmak için JSON'u gizlice sütunlara dönüştürüyordu
  • ClickHouse'u değerlendirirken Apache Pinot'yu da düşünmeye değer

    • ClickHouse, tek makine kurulumları için tasarlanmıştı ve cluster desteği zayıf
    • Pinot'da yatay ölçeklendirme daha kolay ve star-tree index kullanıldığında çok boyutlu analizlerde performans farkı büyük
  • Dinamik olarak değişen veriler için ilgi çekici görünüyor

    • Elasticsearch'te log saklarken yaşanan tip tanımlama sorunlarını çözebilmesini umuyor
  • ClickHouse'un JSON desteğini uzun zamandır bekliyordu; yeni tür ve dinamik sütunlar özellikle faydalı olacak

  • ClickHouse harika bir araç

    • OLAP için kullanıyor ve 600 milyon satırlık, 300GB'lık bir veritabanını sorunsuz işliyor
    • Yeni JSON veri türünün, şu anda iç içe geçmiş tuple'larla çözdüğü kullanım senaryoları için daha iyi olmasını bekliyor
  • Birkaç hafta önce ClickHouse'u denediğinde, sütun adlarına göre dosya adlandırdığı için uzun dosya adları ve slash karakterleri nedeniyle dosya sisteminde hatalar oluşmuştu

  • ClickHouse yeterince kullanılmıyor

    • "postgres her şeydir" gibi bir algı var ama ihtiyacın ötesinde ölçeklenmek gerektiğinde ClickHouse düşünülmeli
    • clickhouse-local, SQL ile CSV işleme konusunda çok başarılı; Google Sheets veya Excel'den bıkanlara şiddetle tavsiye ediyor