Columnar Database - Kolon Bazlı Veritabanları

Günümüzde verinin değeri petrol ya da altın gibi kıymetli bir kaynakla eş tutuluyor. Şirketler kararlarını veriyle besliyor, algoritmalar büyük veri kümelerini analiz ederek yapay zekayı eğitiyor, finans kurumları milisaniyeler içinde milyarlarca işlemi değerlendiriyor. Bu devasa hacimlerdeki verinin işlenebilmesi için kullanılan en önemli araçlardan biri veritabanlarıdır. Ancak klasik veritabanı modelleri, özellikle analitik iş yüklerinde her zaman yeterli performansı gösteremeyebiliyor. İşte burada Columnar Database yani kolon bazlı veritabanı kavramı devreye giriyor.

Bu yazıda columnar veritabanlarının ne olduğunu, neden tercih edildiklerini, nasıl çalıştıklarını, gerçek dünyadaki kullanım alanlarını ve örnek uygulamalarını inceleyeceğiz. Yazının sonunda hem teorik bilgiyi hem de pratik senaryoları anlayabilecek bir noktaya geleceksiniz.


Columnar Database Nedir?

Columnar database, veriyi satır (row) yerine kolon (column) bazlı saklayan bir veritabanı mimarisidir. Geleneksel ilişkisel veritabanlarında (RDBMS) veriler tablo halinde tutulur ve her satır bir kaydı temsil eder. Örneğin, müşteri tablosunda her satır bir müşteriyi ifade eder.

Satır bazlı (row-oriented) sistemlerde veriler şu şekilde tutulur:

CustomerID | Name     | Age | Country
--------------------------------------
1          | Ali      | 29  | Turkey
2          | Ayşe     | 34  | Germany
3          | John     | 40  | USA

Bu veriler disk üzerinde satır satır saklanır:
[1, Ali, 29, Turkey] [2, Ayşe, 34, Germany] [3, John, 40, USA]

Kolon bazlı (column-oriented) sistemlerde ise veriler kolon kolon saklanır:

  • CustomerID: [1, 2, 3]
  • Name: [Ali, Ayşe, John]
  • Age: [29, 34, 40]
  • Country: [Turkey, Germany, USA]

Bu yaklaşım, özellikle büyük ölçekli veri analizlerinde çok büyük performans kazançları sağlar. Çünkü analitik sorgular genellikle tablonun sadece birkaç kolonuna ihtiyaç duyar. Satır bazlı sistemlerde gereksiz kolonlar da okunur; kolon bazlı sistemlerde ise sadece gerekli kolonlar diskten yüklenir.


Row-Oriented ve Column-Oriented Veritabanları Arasındaki Farklar

Veri Saklama Mantığı

  • Row-Oriented: Veriyi satır satır saklar. OLTP (Online Transaction Processing) sistemleri için idealdir. Bankacılık uygulamaları, e-ticaret sipariş sistemleri gibi işlem yoğun uygulamalarda tercih edilir.
  • Column-Oriented: Veriyi kolon bazlı saklar. OLAP (Online Analytical Processing) ve veri ambarı senaryolarında tercih edilir. Büyük veri analizleri, raporlama ve iş zekâsı uygulamaları için uygundur.

Performans

  • Row-based: Satırın tamamını hızlıca getirebilir.
  • Column-based: Sorguların ilgilendiği kolonları hızlıca tarar, büyük veri setlerinde çok daha etkilidir.

Sıkıştırma

  • Kolon bazlı sistemlerde, aynı tipte veriler ardışık saklandığı için sıkıştırma oranı çok daha yüksektir. Örneğin "Country" kolonunda milyonlarca tekrar eden "USA" değeri çok düşük disk alanıyla temsil edilebilir.

Kullanım Senaryoları

  • Row-based: Bankacılık, e-ticaret, CRM gibi transaction odaklı sistemler.
  • Column-based: Data warehouse, BI (Business Intelligence), gerçek zamanlı analiz, makine öğrenmesi öncesi veri hazırlığı.

Neden Columnar Database Kullanılır?

Büyük Veri Analizi

Petabayt seviyesinde veriler üzerinde analitik sorgular çalıştırmak istiyorsanız, kolon bazlı veritabanları vazgeçilmezdir. Örneğin: 

SELECT AVG(Age) 
FROM Customers 
WHERE Country = 'Turkey';

Bu sorguda sadece Age ve Country kolonları okunur. Satır bazlı bir veritabanında tüm satırın okunması gerekirken, kolon bazlıda sadece ilgili kolonlar diskten çekilir.

Disc & CPU

Kolon bazlı saklama, yüksek sıkıştırma sayesinde disk kullanımını ciddi ölçüde azaltır. Bu da daha fazla veriyi RAM'e sığdırmayı mümkün kılar.

Parallelism

Kolon bazlı veriler üzerinde çok çekirdekli CPU'lar veya dağıtık sistemler üzerinden paralel sorgu çalıştırmak daha kolaydır. Her kolon bağımsız tutulabildiği için işlem yükü farklı node’lara bölünebilir.


Columnar Database Avantajları ve Dezavantajları

Avantajlar:

  1. Yüksek Okuma Performansı – Analitik sorgularda inanılmaz hız sağlar.
  2. Veri Sıkıştırma – Kolon bazlı depolama %80'e varan disk tasarrufu sunabilir.
  3. Azalan I/O – Sadece gerekli kolonlar okunur, gereksiz veri yüklemesi yapılmaz.
  4. OLAP için Uygunluk – Veri ambarı ve iş zekası sistemlerinde doğal uyum sağlar.
  5. Kolay Paralel İşleme – Büyük veri kümelerinde dağıtık sorgulara uygundur.

Dezavantajlar:

  1. Yazma Performansı Düşüklüğü – Satır bazlı ekleme/güncelleme işlemleri yavaş olabilir.
  2. OLTP için Uygun Değil – Transaction yoğun iş yüklerinde tercih edilmez.
  3. Karmaşıklık – Bazı durumlarda kolon bazlı yapının yönetimi ve optimizasyonu daha karmaşıktır.
  4. Hibrit İhtiyaçlar – Hem OLTP hem OLAP ihtiyaçları olan sistemlerde tek başına yeterli olmayabilir.

Popüler Columnar Database Sistemleri

Apache Parquet

  • Hadoop ekosisteminde yaygın kullanılan kolon bazlı bir dosya formatıdır.
  • Spark, Hive, Presto gibi sistemler tarafından desteklenir.
  • Diskte veriyi kolon bazlı tutar, sıkıştırma ve hızlı erişim sağlar.

Amazon Redshift

  • AWS’in veri ambarı çözümü.
  • Tamamen kolon bazlı depolama üzerine inşa edilmiştir.
  • Büyük veri analizleri için ölçeklenebilir bir çözüm.

ClickHouse

  • Yandex tarafından geliştirilmiş açık kaynak kolon bazlı veritabanıdır.
  • Gerçek zamanlı analitik için çok hızlıdır.
  • Milyarlarca satır üzerinde milisaniye seviyesinde sorgu çalıştırabilir.

Snowflake

  • Bulut tabanlı, tamamen kolon bazlı bir veri ambarı çözümüdür.
  • Sorgulama, depolama ve işlem gücünü ayrı ayrı ölçekleyebilir.
  • SQL uyumludur.

Google BigQuery

  • Google Cloud üzerinde çalışan, tamamen yönetilen bir veri ambarı çözümü.
  • Kolon bazlı depolama ve dağıtık mimari sayesinde saniyeler içinde petabayt veriyi sorgulayabilir.

Kullanım Alanları

  1. Business Intelligence (BI): Raporlama, dashboard oluşturma, KPI takibi.
  2. Makine Öğrenmesi: Model eğitimi öncesi veri temizleme ve özellik seçimi.
  3. Log Analizi: Web sunucularından gelen milyarlarca log kaydının analizi.
  4. Finans: Gerçek zamanlı piyasa analizi, fraud detection.
  5. E-Ticaret: Müşteri davranış analizi, ürün öneri sistemleri.
    using ClickHouse.Client.ADO;
    using System;
    using System.Threading.Tasks;
    
    class Program
    {
        static async Task Main()
        {
            var connectionString = "Host=localhost;Port=8123;Database=default;User=default;Password=";
            using var conn = new ClickHouseConnection(connectionString);
            await conn.OpenAsync();
    
            var cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT AVG(Age) FROM Customers WHERE Country = 'Turkey'";
            var result = await cmd.ExecuteScalarAsync();
    
            Console.WriteLine($"Türkiye'deki müşterilerin yaş ortalaması: {result}");
        }
    }
    

Columnar Database ile Örnek Senaryolar

SQL Sorgusu Karşılaştırması

Bir e-ticaret sisteminde 500 milyon sipariş kaydı olduğunu düşünelim.

Sorgu:

SELECT AVG(OrderAmount)
FROM Orders
WHERE Country = 'Germany';
  • Row-Oriented DB: Tüm satırları okur, sadece OrderAmount ve Country kolonlarını kullanır ama diğer kolonlar da gereksiz yere diske çağrılır.

    • Veriler disk üzerinde satır satır tutulur.
    • Bir satırı okuduğunda, o satırın tüm kolonları diske çağrılır.
    • Eğer OrderAmount ve Country kolonlarına ihtiyacın varsa, yine de aynı satırdaki diğer kolonlar (örneğin CustomerName, Address, PhoneNumber vb.) beraberinde okunur.
    • Bu nedenle büyük tablolarda, sadece birkaç kolon ilgilendiren analitik sorgularda gereksiz I/O maliyeti oluşur.

  • Column-Oriented DB: Sadece OrderAmount ve Country kolonlarını okur. Çok daha hızlıdır.


Kullanım Örneği

Bir fintech şirketini düşünelim. Her gün milyarlarca işlem yapılıyor. Müşteriler, kart ödemeleri ve para transferleri yapıyor. Şirket, fraud detection (sahtekarlık tespiti) için anlık analiz yapmak zorunda.

  • Row-based DB: Transaction kayıtlarını tutmak için kullanılır (OLTP).
  • Column-based DB: Fraud analizi yapmak için son 6 ayın verisi üzerinde hızlı sorgular çalıştırılır (OLAP).

Bu hibrit yapı genelde OLTP + OLAP kombinasyonuyla gerçeklenir. Örneğin:

  • PostgreSQL veya MySQL transaction için,
  • ClickHouse, Redshift veya BigQuery analitik için.

 

Columnar database, veri dünyasında analitik işlemleri hızlandıran, sıkıştırma ve depolama verimliliği sağlayan, modern iş zekâsı ve büyük veri ekosistemlerinin vazgeçilmez bir parçasıdır. Satır bazlı sistemlerle birlikte hibrit bir şekilde kullanıldığında hem OLTP hem de OLAP ihtiyaçlarını karşılayan güçlü bir mimari kurmak mümkündür.

Bu yazıda kolon bazlı veritabanlarını temel prensiplerinden popüler sistemlerine, avantaj/dezavantajlarından gerçek dünya senaryolarına kadar geniş kapsamlı bir şekilde ele aldık. Eğer siz de veri analitiği, BI veya büyük veri üzerinde çalışıyorsanız columnar veritabanlarını mutlaka yakından incelemeniz gerekir.

Add comment