« Tüm yayınlar

Apache Iceberg'de Variant Tipi: Shredding ile JSON Analitiği Hızlandırma

Apache Iceberg v3'teki Variant tipi ve shredding tekniği, JSON verilerini hem esnek hem de sorgu performansı yüksek hale getiriyor. İşte perde arkası.

Veri mühendisleri yıllardır aynı ikilemle boğuşuyor: yarı yapılandırılmış veriyi ya ham JSON string olarak saklayıp her sorguda parse etme maliyetine katlanıyorlar, ya da alanları düz kolonlara açıp şema değişikliklerinin getirdiği operasyonel yükle uğraşıyorlar. Apache Iceberg'in v3 tablo format spesifikasyonu, bu ikilemi Variant tipiyle çözmeyi hedefliyor. Variant, satırdan satıra farklı yapıya sahip olabilen değerleri tek bir kolonda tutarken, veriyi metin yerine Parquet projesinde tanımlanan ikili bir kodlamayla saklıyor. Alan adları bir sözlükte bir kez tutuluyor ve değerler bu sözlüğe küçük tam sayı kimlikleriyle referans veriyor; tarihler, timestamp'lar ve ondalıklı sayılar gibi tipler de JSON'un aksine kayıpsız ve tipli şekilde saklanabiliyor. Bu yaklaşım tek başına bile parse maliyetini ve depolama boyutunu düşürüyor, çünkü motor bir alanı bulmak için tüm belgeyi taramak yerine doğrudan offset üzerinden erişebiliyor. Ancak ikili kodlama tek başına Parquet'in kolonsal performans avantajlarını (seçici okuma, sıkıştırma, min/max istatistiklerine dayalı dosya budama) devreye sokmuyor; bir Variant değeri tek bir ikili kolon olarak saklandığında, motor yine de o kolonu bütünüyle okumak zorunda kalıyor. İşte tam bu noktada shredding tekniği devreye giriyor ve Variant'ın vaat ettiği performansı gerçeğe dönüştürüyor. Mühendisler için bu, JSON'un esnekliğini kaybetmeden tipli kolonlara yakın sorgu hızı elde etmenin, üç ayrı veri hattı yerine tek bir kolon üzerinden hem ham veriyi hem de hızlı analitiği desteklemenin yolu anlamına geliyor.

» KaynakDev.to