Satış raporunuz üç yılın verisini okumak istediğinde veritabanınız milyarlarca satır okur; ama rapor yalnızca tarih ve tutar kolonlarını ister. Satır tabanlı depolamada o kolonlara ulaşmak için tüm satırı okumak zorundasınızdır: adres, ad, soyad, telefon, hepsi belleğe taşınır ve atılır. Analitik sorguların dramı budur; sütun bazlı sıkıştırma ise tam bu noktada sahneye çıkar ve belleği, cömertlik göstermeden akıllıca kullanmayı öğretir.
Sütun düzeni neden kazanır
Satır tabanlı depoda veri, satır satır ardışıktır. Sütun tabanlı depoda ise aynı kolonun değerleri yan yana dizilir. Bu tek fark üç sonuç doğurur. Birincisi: analitik sorgu yalnızca ilgilendiği sütunları okur; beş sütunluk tabloda üç sütun isteyen sorgu, verinin sadece üçte beşini okur. İkincisi: aynı sütunda birbirine benzer değerler ardışıktır ve sıkıştırma, benzerlikten beslenir. Üçüncüsü: gruplama ve toplama, sütun üzerinde tek geçişte olur.
-- Aynı değerler ardışıksa koşu uzunluğu kodlaması vurucudur
-- ulke kolonu: [TR, TR, TR, TR, DE, DE, ...]
-- sıkıştırılmış: TR x4, DE x2 (bellekte bayt başına değil, koşu başına kayıt)
-- DuckDB ile sütun bazlı tarama
SELECT ulke, SUM(tutar) AS toplam
FROM satislar
WHERE tarih >= '2026-01-01'
GROUP BY ulke;
Aynı sorgu satır tabanlı motorda yılların kayıtlarını satır satır okurken, sütun motorda yalnızca tarih, tutar ve ulke kolonlarını tarar; sıkıştırılmış bloklar belleğe daha az yer tutar, yani daha çok veri bellekte kalır.
Önbellek dostu düzen
Bellek bant genişliği, bugünkü donanımda işlemciden pahalıdır. Sıkıştırılmış sütun verisi, aynı önbellek satırına daha çok mantıksal değer sığdırır; işlemci, beklediği veriye daha az duraklamada ulaşır. Analitik sorgularda kazanılan hızın önemli bir bölümü bu önbellek dostu düzenden gelir; sıkıştırmanın kendisi değil. Çoğu sütun motorda sıkıştırma maliyeti, tarama kazancının gölgesinde kalır: koşu uzunluğu kodlaması, sözlük kodlaması ve delta kodlaması, değerleri çoğu kez onda birine indirir.
Günlük işimiz çoğu kez işlemseldir: tek sipariş, tek kullanıcı, tek satır güncelleme. Ama kararlar analitiktir: geçen ay ne sattık, hangi şehir yükseldi, stok nerede eridi. İki iş yükü, iki farklı düzen ister; sütun bazlı sıkıştırma ikinci dünyanın doğal dilidir.
Karar, teknoloji merakından değil tasarımdan doğar. Sorulacak üç soru şudur: sorguların kaç kolonla ilgileniyor, tablo kolon sayısına göre ne kadar geniş, taramalar kaç satır büyüyor? Kolon sayısı yirmiyi aşan ve sorguların çoğu beş altı kolonla yetinen bir tablo, sütun düzeninin en bereketli toprağıdır; dört beş kolonluk kompakt tablolar ise kazancı küçültür, hatta değişimin maliyetini ödeyemez. Dönüşümü bir hamlede yapmak yerine en büyük analitik tablodan başlatın; kazanımı ölçün, sonra listeyi genişletin. Modern araçlar bu geçişi kolaylaştırır: aynı sorgu hem satır hem sütun motorunda koşabilir, sonuç karşılaştırılabilir, taşınma parça parça yapılabilir.
Ölçtüğünüzde şaşıracaksınız: kazanç en çok sorgu süresinde değil, bellek bütçesinde görünür. Aynı sunucu, sıkıştırılmış sütun verisiyle çalışma kümesini belleğe sığdırır; bir kez sığan veri ikinci kez diske gitmez. Kararlı büyümenin sırrı budur: donanım eklemek yerine, aynı donanımda daha çok veriye cömert davranabilmek. Verinizi ne kadarının toplayarak okuduğunuzu ölçün; sütun düzenini o oranda sevindirici bulacaksınız.
Okur Yorumları (0)