ÖZET VE TEKNİK CEVAP
Bölümlenmiş (sharded) dağıtık veritabanlarında sorguları basit modülo formülüyle ($S = ext{hash}(anahtar) pmod N$) yönlendirmek büyük bir mimari tuzaktır: Shard sayısını 4'ten 5'e çıkardığınızda, **kümedeki neredeyse her bir anahtar bambaşka bir sunucuya denk gelir** (verilerin %80'inden fazlası yer değiştirir). Terabaytlarca canlı verinin %80'ini taşımak platformu saatlerce kapatmayı gerektirir. DynamoDB ve Cassandra tarafından kullanılan **Tutarlı Karma (Consistent Hashing)**, hem Shard sunucularını hem de Veri Anahtarlarını soyut bir **$360^circ$ Karma Halkasına ($0 dots 2^{32}-1$)** yerleştirerek bu sorunu çözer: (1) Halkaya 5. bir sunucu eklendiğinde, sadece halkadaki komşusundan küçük bir veri dilimini devralır; taşınan veri miktarı kesin olarak **sadece $rac{1}{N}$ (yaklaşık %20)** ile sınırlı kalır ve kalan %80 veriye hiç dokunulmaz. (2) **Sanal Düğümler (Vnodes)**, her fiziksel sunucu için halkaya 256 sanal nokta yerleştirerek yükün mükemmel dengeli dağılmasını sağlar ve canlı büyümede sıcak nokta kilitlenmelerini önler.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Tutarlı karma ve canlı yeniden dengeleme 4 aşamada yürütülür: (1) 32-bit Karma Halkası: MurmurHash3 hem anahtarları hem sunucu adreslerini $[0, 2^{32}-1]$ dairesine yerleştirir. (2) Saat Yönünde Yönlendirme: Bir anahtarın hangi sunucuda olduğunu bulmak için anahtar hash'lenir ve halkada saat yönünde ilk karşılaşılan sunucuya gidilir. (3) Sanal Düğüm Çoğaltma: Her fiziksel sunucu halkada 256 sanal noktaya (`Node_A1`, `Node_A2`) sahip olarak yükü eşit böler. (4) Çift Yazmalı Canlı Geçiş: Shard eklenirken yönlendirici hem eski hem yeni sunucuya çift yazar (dual-write), arka plan CDC işçisi eski kayıtları taşır, fark kontrolü yapıldıktan sonra sıfır kesintiyle anahtarlar yeni sunucuya devredilir.
2. Doğru Kullanım Senaryosu
Dağıtık NoSQL veritabanları (Cassandra, DynamoDB), dağıtık önbellek kümeleri (Redis Cluster, Memcached) ve dağıtık nesne depolama sistemleri (Ceph).
3. Prodüksiyon Arıza Modları
Sanal Düğümler (Vnodes) olmadan tutarlı karma kullanıp tek bir sunucunun halkada tüm veriyi üstüne çekmesi (aşırı yük dengesizliği); arka plan veri kopyalama işlemi bitmeden trafiği yeni sunucuya geçirip veri kaybı yaşatmak.
4. Teşhis ve Telemetri Sinyalleri
Shard'lar arasında disk kullanım farkının %40'ı aşması; modülo karma kullanılan sistemlerde sunucu eklenince önbellek ıskalamalarının (cache miss) %90'a fırlaması; shard bölünmesi sırasında gecikme artışı.
5. Önleme ve Mimari Bariyerler
Fiziksel sunucu başına en az 128-256 sanal düğüm (vnode) tanımlayın; yönlendirme halkasını güncellemeden önce otomatik sağlama toplamı (checksum) denetimi yapan CDC çift yazma hatları kullanın.
6. Mimari Ödünleşimler (Trade-offs)
Tutarlı karma küme büyütürken taşınan veriyi kesin olarak $1/N$ ile sınırlandırır; ancak istemci veya ağ geçitlerinin güncel halka haritasını bellekte tutmasını gerektirir.
Vaka İncelemesi (TinyCTO Örneği)
Bir sosyal ağ platformu modülo karma (`hash % 20`) kullanan 20 düğümlü bir Memcached kümesine sahipti. 21. sunucu eklendiğinde önbellekteki oturumların %95,2'si anında geçersiz hale geldi; patlayan veritabanı izdihamı ana veritabanını 40 dakika boyunca kilitledi. Ekip Ketama algoritması ve 256 sanal düğümlü Tutarlı Karma (Consistent Hashing) mimarisine geçti. Aylar sonra 22. sunucu eklendiğinde önbelleğin yalnızca %4,5'i yer değiştirdi, önbellek başarı oranı %95,5'te kaldı ve veritabanı tek bir milisaniye bile zorlanmadan sistem büyütüldü.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaBir kümeye yeni bir sunucu eklerken standart modülo karma (`hash(key) % N`) neden felakete yol açar?
$N$ düğümlü bir Tutarlı Karma (Consistent Hashing) halkasına yeni bir sunucu eklendiğinde verilerin ne kadarı taşınır?
Sıfır Kesintili Veritabanı Yeniden Bölümleme (Resharding): Tutarlı Karma (Consistent Hashing) ve Canlı Durum Geçişi — Sıkça Sorulan Sorular
Tutarlı karmada Sanal Düğümlerin (Virtual Nodes / Vnodes) amacı nedir?
Her fiziksel sunucuyu halka üzerinde yüzlerce sanal noktaya dağıtarak verilerin belirli bir sunucuda yığılmasını önlemek ve diskler arasında kusursuz bir yük dengesi kurmaktır.
Canlı veritabanı geçişlerinde sıfır kesintili yeniden bölümleme (resharding) nasıl yapılır?
Çift yazma (dual-write) ile: Yeni gelen veriyi aynı anda hem eski hem yeni shard'a yazın, eski verileri CDC ile taşıyın, veri uyumunu doğrulayın ve okuma yönlendirmesini yeni halkaya geçirin.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Basit modülo karma, sunucu sayısı değiştiğinde verilerin %80-95'inin yer değiştirmesine yol açar.
- ▸Tutarlı Karma, düğüm ekleyip çıkarırken taşınan veri miktarını kesin olarak $1/N$ ile sınırlar.
- ▸Sanal Düğümler (Vnodes) fiziksel makineler arasında dengeli veri ve trafik dağılımını garanti eder.
- ▸Sıfır kesinti için canlı bölümlemeyi çift yazma ve arka plan CDC kopyalaması ile yürütün.
Yaygın Yanılgılar
- ✗Yanılgı: Tutarlı karma sadece önbellek sistemleri içindir (Gerçek: Cassandra, DynamoDB ve Ceph gibi devasa veritabanlarının temel bölümleme omurgasını oluşturur).
- ✗Yanılgı: Sanal düğümler ağ gecikmesini artırır (Gerçek: Vnode yönlendirmesi tamamen istemci belleğinde nanosaniyeler içinde hesaplanan matematiksel bir haritadır).
Karar Kılavuzu & Önceliklendirme
Sıfır kesintili yatay büyüme ve öngörülebilir veri taşıma için tüm bölümlenmiş veri depolarında ve önbellek katmanlarında Sanal Düğümlü Tutarlı Karma mimarisini uygulayın.
Doğrulanmış Kaynaklar & Referanslar
- [PAPER]Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web— David Karger et al. (ACM STOC 1997)
