Dağıtık Veritabanları Nedir?
Dağıtık veritabanı, verilerin fiziksel olarak farklı konumlarda bulunan birden fazla bilgisayar veya sunucu arasında dağıtıldığı, ancak mantıksal olarak tek bir veritabanı gibi çalışan bir sistemdir. Bu veritabanları, tek bir merkezi sistemin sınırlamalarını aşmak, yüksek erişilebilirlik sağlamak ve coğrafi olarak dağılmış kullanıcılara daha iyi hizmet vermek için tasarlanmıştır.
Dağıtık veritabanı sistemleri, modern bulut bilişim, büyük veri ve küresel ölçekli uygulamaların temelini oluşturur. Bu sistemler, veri parçalarını farklı konumlara dağıtırken, kullanıcılara sanki tek bir veritabanı ile etkileşimde bulunuyormuş gibi bir deneyim sunar.
Dağıtık Veritabanlarının Özellikleri
Veri Dağıtımı
Veriler, birden fazla fiziksel konum veya düğüm arasında dağıtılır, ancak mantıksal olarak tek bir veritabanı gibi yönetilir.
Şeffaf Dağıtım
Kullanıcılar ve uygulamalar, verilerin nerede depolandığını bilmek zorunda kalmadan veritabanı ile etkileşime girebilir.
Veri Replikasyonu
Aynı verinin birden fazla kopyası farklı düğümlerde tutularak yüksek erişilebilirlik ve hata toleransı sağlanır.
Yatay Ölçeklenebilirlik
Sisteme yeni düğümler ekleyerek kapasite ve performans artırılabilir, böylece büyüyen iş yükleri karşılanabilir.
Dağıtık Veritabanı Mimarileri
Dağıtık veritabanı sistemleri, farklı mimariler ve tasarım yaklaşımları kullanılarak uygulanabilir. İşte en yaygın dağıtık veritabanı mimarileri:
Yatay parçalama veya sharding, büyük bir veritabanı tablosunun satır bazında daha küçük parçalara (shard'lara) bölünmesi ve bu parçaların farklı sunuculara dağıtılması işlemidir.
- Anahtar Tabanlı Sharding: Verilerin belirli bir anahtar sütununa göre dağıtılması (örn. kullanıcı ID'sine göre).
- Aralık Tabanlı Sharding: Verilerin belirli değer aralıklarına göre dağıtılması (örn. A-M ve N-Z gibi).
- Coğrafi Sharding: Verilerin kullanıcıların coğrafi konumlarına göre dağıtılması.
- Hash Tabanlı Sharding: Verilerin bir hash fonksiyonu kullanılarak dağıtılması, böylece daha dengeli bir dağılım sağlanması.

Şekil: Yatay parçalama (sharding) mimarisi örneği
Replikasyon mimarisi, aynı verilerin birden fazla düğümde kopyalanarak tutulmasını içerir. Bu, yüksek erişilebilirlik, hata toleransı ve okuma performansının artırılmasını sağlar.
- Ana-Yedek (Master-Slave) Replikasyon: Bir ana düğüm tüm yazma işlemlerini alır ve değişiklikler yedek düğümlere kopyalanır. Yedek düğümler genellikle sadece okuma işlemleri için kullanılır.
- Çok Ana (Multi-Master) Replikasyon: Birden fazla düğüm yazma işlemlerini kabul edebilir ve değişiklikler diğer düğümlere yayılır. Bu, daha yüksek yazma ölçeklenebilirliği sağlar ancak çakışma çözümü gerektirir.
- Aktif-Aktif Replikasyon: Tüm düğümler hem okuma hem de yazma işlemlerini kabul edebilir, böylece yük dengeleme ve yüksek erişilebilirlik sağlanır.
- Aktif-Pasif Replikasyon: Yalnızca bir düğüm aktif olarak çalışır, diğerleri yedek olarak bekler ve ana düğüm başarısız olduğunda devreye girer.
Federasyon mimarisi, farklı veritabanı sistemlerinin bir araya getirilerek tek bir mantıksal veritabanı gibi çalışmasını sağlar. Bu, genellikle farklı departmanların veya iş birimlerinin kendi veritabanlarını yönettiği büyük kuruluşlarda kullanılır.
- Heterojen Federasyon: Farklı veritabanı yönetim sistemlerinin (MySQL, PostgreSQL, Oracle vb.) bir arada çalıştığı federasyonlar.
- Homojen Federasyon: Aynı veritabanı yönetim sisteminin farklı örneklerinin bir arada çalıştığı federasyonlar.
- Gevşek Bağlı Federasyon: Her veritabanı büyük ölçüde bağımsız çalışır, ancak gerektiğinde diğer veritabanlarıyla iletişim kurabilir.
- Sıkı Bağlı Federasyon: Veritabanları arasında daha yakın bir entegrasyon ve koordinasyon vardır.
Çok katmanlı mimari, veritabanı sistemini farklı işlevsel katmanlara ayırarak her katmanın bağımsız olarak ölçeklendirilebilmesini ve optimize edilebilmesini sağlar.
- Sorgu İşleme Katmanı: Sorguları alır, analiz eder ve yönlendirir.
- Depolama Katmanı: Verilerin fiziksel olarak depolandığı katman.
- İndeksleme Katmanı: Verilere hızlı erişim için indeksleri yönetir.
- Önbellek Katmanı: Sık erişilen verileri bellekte tutar.
- Yönetim Katmanı: Sistem yapılandırması, izleme ve bakım işlevlerini sağlar.
Dağıtık Veritabanı Sistemlerinin Avantajları ve Zorlukları
Avantajlar
- Ölçeklenebilirlik: Sistem kapasitesi, yeni düğümler ekleyerek kolayca artırılabilir.
- Yüksek Erişilebilirlik: Bir düğüm başarısız olsa bile, diğer düğümler hizmet vermeye devam edebilir.
- Coğrafi Dağılım: Veriler, kullanıcılara yakın konumlarda tutularak gecikme süreleri azaltılabilir.
- Performans İyileştirme: Sorgu yükü birden fazla sunucu arasında dağıtılarak genel performans artırılabilir.
- Veri Yerelliği: Veriler, yasal gerekliliklere uygun olarak belirli coğrafi bölgelerde tutulabilir.
Zorluklar
- Tutarlılık Yönetimi: Dağıtık sistemlerde veri tutarlılığını sağlamak karmaşık olabilir (CAP teoremi).
- Dağıtık İşlemler: Birden fazla düğümü kapsayan işlemlerin yönetimi zordur.
- Karmaşık Yönetim: Dağıtık sistemlerin yapılandırılması, izlenmesi ve bakımı daha karmaşıktır.
- Ağ Sorunları: Düğümler arası iletişim, ağ gecikmelerine ve bölünmelerine duyarlıdır.
- Maliyet: Dağıtık sistemlerin kurulumu ve işletilmesi genellikle daha maliyetlidir.
CAP Teoremi ve Dağıtık Sistemler
CAP teoremi (bazen Brewer teoremi olarak da adlandırılır), dağıtık bir veritabanı sisteminin aynı anda aşağıdaki üç özelliğin hepsini birden sağlayamayacağını belirtir:
Tutarlılık (Consistency)
Tüm düğümler aynı anda aynı verileri görür. Bir veri güncellendiğinde, tüm düğümler bu güncellemeyi hemen görür.
Erişilebilirlik (Availability)
Her istek, başarılı veya başarısız olduğuna dair bir yanıt alır. Sistem her zaman çalışır durumdadır ve isteklere cevap verir.
Bölünme Toleransı (Partition Tolerance)
Ağda iletişim kopukluğu olsa bile sistem çalışmaya devam eder. Düğümler arasındaki iletişim kesildiğinde sistem hala işlevseldir.
CAP teoremi, dağıtık sistem tasarımında önemli bir ödünleşim (trade-off) sunar. Pratikte, bir dağıtık veritabanı sistemi bu üç özellikten en fazla ikisini aynı anda sağlayabilir:
Kombinasyon | Açıklama | Örnek Sistemler |
---|---|---|
CA (Tutarlılık + Erişilebilirlik) |
Ağ bölünmelerine tolerans göstermez. Pratikte, gerçek bir dağıtık sistemde bu kombinasyon mümkün değildir çünkü ağ bölünmeleri kaçınılmazdır. | Geleneksel RDBMS (tek düğümlü) |
CP (Tutarlılık + Bölünme Toleransı) |
Tutarlılığı korumak için, ağ bölünmesi sırasında bazı düğümler erişilemez hale gelebilir. | MongoDB, HBase, Redis |
AP (Erişilebilirlik + Bölünme Toleransı) |
Erişilebilirliği korumak için, ağ bölünmesi sırasında veri tutarlılığından ödün verilir. Sistem, "sonunda tutarlı" (eventually consistent) olabilir. | Cassandra, CouchDB, DynamoDB |