Veri tabanı sistemleri, bir veri tabanının daha fazla kullanıcı veri barındırmasını ve daha fazla uygulama iş yükünü işlemek için iki ölçeklenebilirlik yaklaşımını benimsemiştir. Yatay Ölçeklenebilirlik (Vertical Database Scability) ve Dikey Ölçeklenebilirlik (Horizontal Database Scability) olarak isimlendirebiliriz.

Dikey Veri tabanı Ölçeklenebilirliği (Vertical Database Scability)

Ölçeklendirme işlemi genellikle daha fazla fiziksel kaynak eklemeyi, yani mevcut bir sunucu için CPU, bellek ve depolama alanını arttırmayı veya daha büyük bir donanım eklemeyi ifade eder. Dikey ölçeklenebilirlik ile birlikte;

  • Uygulama uyumluluğuna öncelik verilir; kod değişiklikleri gerektirmez.
  • Tek bir sistem (ya da SQL Server’ın barındırıldığı cihaz diyebiliriz) ile yönetimsel süreçler minimumda tutulur. Tek bir sistemi monitoring etmek birden çok sistemi monitoring etmekten kolaydır.
  • Donanım yapılandırmaları daha pahalı olma eğilimindedir, ancak günümüzde hızla gelişen donanımlar, fiyat-performans oranlarına sahip inanılmaz derecede verimli sunucular oluşturulmaktadır.
  • SQL Server ve diğer yazılımların maliyetleri artabilir. Sistem için monitoring ve bakım programlarında lisans ücretlendirme yöntemleri CPU sayısı ve disk ile ilişkili olduğunu düşünürsek bu durumu göz ardı etmemek gerekir.

Bu yaklaşım en az birkaç sınırlamayla da gelir:

  • Bir iş yükü donanım yapılandırmasına sığmazsa ne olur?
  • Bir iş yükü çok değişkense ne olur?
  • Neden çoğu zaman yetersiz kullanılabilen pahalı, büyük kapasiteli bir sistem için satın alma yapalım?
  • Bu tarz soruların sayısı artırılabilir.

Yatay Veri tabanı Ölçeklenebilirliği (Horizontal Database Scability)

Yatay ölçeklenebilirlik, verileri birden çok veri tabanında barındırarak değişken iş yüklerini barındırır. Dikey ölçeklenebilirlikten farklı olarak, ölçeklendirme yaklaşımları daha az karmaşık donanım bileşenlerini kullanarak, daha fazla uygulama içi geliştirme, veri ve sistem bakımına daha çok yönelerek maliyetleri yönetmektir.

Veri katmanlarını ölçeklendirmek için iyi bilinen birkaç yaklaşımdan herhangi birini kullanabilirsiniz. Seçtiğiniz iş yükünüze ve veri deposu tarafından desteklenen uygulamalara bağlıdır. Çoğu kişi, bir veri kümesinin iş veya organizasyon işlevlerine göre bölümlemeyi seçer.

En yaygın ölçeklendirme tekniklerinden ikisi şöyledir:

  • Veriler tüm düğümlerde tamamen çoğaltılır. SQL Server AlwaysOn’da olduğu gibi Primary değişiklikleri kabul eder ve ile birden çok Secondary ile salt okunur olarak sistem çoğaltılır. Bu tarz yapılandırmalar, raporlama süreçleri için idealdir. Herhangi bir sunucuya bağlanılarak istenilen veriye erişim sağlanır. Buna karşılık, veri yazılması sadece Primary’de gerçekleşeceği için çok yoğun yazma işlemlerinde bir darboğaz gerçekleşebilir.
  • Okuma ve yazma işlemleri çeşitli node’lara dağıtılır. Bir çeşit dağıtım mantığı uygulanarak, verilen bir işlem tek bir düğümde tutularak o node üzerinde kalması sağlanır. Bazı veriler tüm node’larda çoğaltılır, aynı gruba ait tüm veriler için geçerli olan bir anahtar ile bölümlendirilir. Bu sayede veriler parçalanmış olarak çeşitli sunucularda tutulması yöntemi de tercih edilebilir.

Yeni yazımda görüşmek üzere. 🙂