Veritabanları için yatay ve dikey ölçeklendirme arasındaki fark

Birçok NoSQL veritabanı ve SQL veritabanı ile karşılaştım. Bu veritabanlarının güçlü ve zayıf yönlerini ölçmek için çeşitli parametreler var ve ölçeklenebilirlik de bunlardan biri. Bu veritabanlarını yatay ve dikey olarak ölçeklendirmek arasındaki fark nedir?

Çözüm

Yatay ölçeklendirme, kaynak havuzunuza daha fazla makine ekleyerek ölçeklendirdiğiniz anlamına gelirken Dikey ölçeklendirme, mevcut bir makineye daha fazla güç (CPU, RAM) ekleyerek ölçeklendirdiğiniz anlamına gelir.

Bunu hatırlamanın kolay bir yolu, bir sunucu rafındaki bir makineyi düşünmektir; yatay yönde daha fazla makine ekleriz ve dikey yönde bir makineye daha fazla kaynak ekleriz.

                 

Bir veritabanı dünyasında yatay ölçeklendirme genellikle verilerin bölümlenmesine dayanır, yani her düğüm verilerin yalnızca bir kısmını içerir, dikey ölçeklendirmede veriler tek bir düğümde bulunur ve ölçeklendirme çok çekirdekli aracılığıyla yapılır, yani yükü o makinenin CPU ve RAM kaynakları arasında yayar.

Yatay ölçeklendirme ile mevcut havuza daha fazla makine ekleyerek dinamik olarak ölçeklendirmek genellikle daha kolaydır - Dikey ölçeklendirme genellikle tek bir makinenin kapasitesiyle sınırlıdır, bu kapasitenin ötesinde ölçeklendirme genellikle kesinti süresini içerir ve bir üst sınırla birlikte gelir.

Yatay ölçeklendirmenin iyi örnekleri Cassandra, MongoDB, Google Cloud Spanner ... ve dikey ölçeklendirmenin iyi bir örneği MySQL - Amazon RDS'dir (MySQL'in bulut sürümü). Küçük makinelerden daha büyük makinelere geçerek dikey olarak ölçeklendirmenin kolay bir yolunu sağlar. Bu süreç genellikle kesinti sürelerini içerir.

GigaSpaces XAP]3, Coherence vb. gibi Bellek İçi Veri Izgaraları, diske bağlı olmadıkları için genellikle hem yatay hem de dikey ölçeklendirme için optimize edilmiştir. Bölümleme yoluyla yatay ölçeklendirme ve çoklu çekirdek desteği yoluyla dikey ölçeklendirme.

Bu konuda daha fazla bilgiyi önceki yazılarımda bulabilirsiniz: Scale-out vs Scale-up ve NOSQL Alternatiflerinin Arkasındaki Ortak İlkeler

Yorumlar (6)

Bahsedilmeyen ek bir mimari daha var - manuel parçalama karmaşıklığı olmadan yatay ölçeklendirmeyi mümkün kılan SQL tabanlı veritabanı hizmetleri. Bu hizmetler parçalama işlemini arka planda yapar, böylece geleneksel bir SQL veritabanı çalıştırmanıza ve MongoDB veya CouchDB gibi NoSQL motorlarında olduğu gibi ölçeklendirmenize olanak tanır. Bildiğim iki hizmet PostgreSQL için EnterpriseDB ve MySQL için Xeround. Xeround tarafından SQL veritabanlarında ölçek büyütmenin neden zor olduğunu ve bunu nasıl farklı bir şekilde yaptıklarını açıklayan derinlemesine bir post gördüm - bir satıcı gönderisi olduğu için bunu bir tuz tanesi ile ele alın. Ayrıca Wikipedia'nın Cloud Database girişine göz atın, SQL vs NoSQL ve hizmet vs kendi kendine barındırılan, satıcıların bir listesi ve her kombinasyon için ölçeklendirme seçenekleri hakkında güzel bir açıklama var ;)

Yorumlar (3)

Evet, yatay ölçeklendirme daha fazla makine eklemek anlamına gelir, ancak aynı zamanda makinelerin kümede eşit olduğu anlamına da gelir. MySQL, replika kullanımı yoluyla Okuma verileri açısından yatay olarak ölçeklenebilir, ancak sunucu belleği/disk kapasitesine ulaştığında, verileri sunucular arasında paylaştırmaya başlamanız gerekir. Bu giderek daha karmaşık bir hal alır. Çoğaltma hızları genellikle veri değişim hızlarına yetişemeyecek kadar yavaş olduğundan, verileri çoğaltmalar arasında tutarlı tutmak genellikle bir sorundur.

Couchbase aynı zamanda birçok ticari yüksek erişilebilirlik uygulamasında ve oyunlarda kullanılan harika bir NoSQL Yatay Ölçekleme veritabanıdır ve tartışmasız kategorideki en yüksek performansa sahiptir. Verileri otomatik olarak küme içinde bölümlere ayırır, düğüm eklemek basittir ve emtia donanımını, daha ucuz vm örneklerini kullanabilirsiniz (örneğin AWS'de Yüksek Bellek, Yüksek Disk makineleri yerine Büyük kullanarak). Membase (Memcached) üzerine inşa edilmiştir ancak kalıcılık ekler. Ayrıca, Couchbase durumunda, her düğüm okuma ve yazma yapabilir ve kümede eşittir, yalnızca yük devretme replikasyonu ile (mySQL'deki gibi tüm sunucularda tam veri kümesi replikasyonu değil).

Performans açısından mükemmel bir Cisco kıyaslaması görebilirsiniz: http://blog.couchbase.com/understanding-performance-benchmark-published-cisco-and-solarflare-using-couchbase-server

İşte Couchbase Mimarisi hakkında harika bir blog yazısı: http://horicky.blogspot.com/2012/07/couchbase-architecture.html

Yorumlar (0)