web-gelistirme-sc.com

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

Birçok NoSQL veritabanına ve SQL veritabanına rastladım. Bu veritabanlarının güçlü ve zayıf yönlerini ölçmek için çeşitli parametreler vardır ve ölçeklenebilirlik bunlardan biridir. Bu veritabanlarını yatay ve dikey ölçeklendirme arasındaki fark nedir?

587
London guy

Yatay ölçekleme, kaynak havuzunuza daha fazla makine ekleyerek ölçeklendirdiğiniz anlamına gelir; 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, sunucu rafındaki bir makineyi düşünmektir, yatay yönünde daha fazla makine ekler ve bir makineye dikey yönünde daha fazla kaynak ekleriz.

Horizontal Scaling/Vertical Scaling Visualisation

Bir veri tabanı dünyasında yatay ölçeklendirme genellikle verinin bölümlenmesini temel alır, yani her düğüm verinin sadece bir kısmını içerir, verinin tek bir düğümde kalmasını dikey ölçeklendirmede ve ölçekleme çok çekirdekli bir şekilde yapılır, yani yükü yayma CPU ve bu makinenin RAM kaynakları.

Yatay ölçeklemeyle, 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 ötesine ölçeklendirme genellikle çalışmama süresi içerir ve bir üst sınırla birlikte gelir.

Yatay ölçeklemenin iyi örnekleri Cassandra, MongoDB, Google Cloud Spanner .. ve dikey ölçeklemenin iyi bir örneği MySQL - Amazon RDS'dir (MySQL'in bulut versiyonu). Küçükten büyüğe makinelere geçerek dikey ölçeklemenin kolay bir yolunu sağlar. Bu süreç genellikle aksama süresini içerir.

GigaSpaces XAP , Tutarlılık etc .. gibi Bellek İçi Veri Izgaraları, genellikle hem diske bağlı olmadıklarından hem yatay hem de dikey ölçeklendirme için optimize edilir. Çok çekirdekli destek sayesinde bölümleme ve dikey ölçekleme yoluyla yatay ölçeklendirme.

Daha önceki yazılarımda bu konuda daha fazla bilgi edinebilirsiniz: Ölçekleme - Ölçeklendirme ve NOSQL Alternatiflerinin Arkasındaki Ortak İlkeler

1044
Nati Shalom

Basit bir deyişle:

Yatay ölçekleme ===> Binlerce minyon işi birlikte sizin için yapacak.

Dikey ölçeklendirme ===> Büyük bir hulk bütün işi sizin için yapacak.

88
147.3k

Sisteminizi şimdi daha önce yapabildiğinden daha fazla taleple başa çıkabilmek için kaynakları artıran ölçeklendirme gereksinimi ile başlayalım.

Sisteminizin yavaşladığını ve mevcut istek sayısını karşılayamadığını fark ettiğinizde, sistemi ölçeklendirmeniz gerekir.

Bu size iki seçenek sunar. Ya şu anda kullanmakta olduğunuz sunucudaki kaynakları artırın, yani RAM, CPU, GPU ve diğer kaynakların miktarını artırın. Bu dikey ölçeklendirme olarak bilinir.

Dikey ölçeklendirme genellikle maliyetlidir. Sistem arızasına tolerans göstermez, yani, tek bir sunucuyla çalışan uygulamayı ölçeklendirirseniz, o sunucu kapanırsa, sisteminiz kapanır. Ayrıca, dikey ölçeklemede iplik miktarı aynı kalır. Dikey ölçeklendirme, işlem gerçekleştiğinde sisteminizin bir anlığına düşmesini gerektirebilir. Bir sunucudaki kaynakları artırmak, yeniden başlatmayı gerektirir ve sisteminizi kapatır.

Bu sorunun diğer bir çözümü, sistemde mevcut sunucuların miktarını arttırmaktır. Bu çözüm teknoloji endüstrisinde oldukça kullanılmaktadır. Bu sonuçta her sunucudaki saniye başına isteği düşürecektir. Sistemi ölçeklendirmeniz gerekiyorsa, yalnızca başka bir sunucu ekleyin; işlem tamamdır. Sistemi yeniden başlatmanız gerekmeyecektir. Her bir sistemdeki diş sayısı yüksek verime neden olur. İstekleri ayırmak için, her uygulama sunucusuna eşit olarak eşitlemek için web sunucularına ters proxy görevi yapacak yük dengeleyici eklemeniz gerekir. Bütün bu sistem tek bir küme olarak adlandırılabilir. Sisteminiz, bunun gibi daha fazla küme gerektiren çok sayıda istek içerebilir.

Tüm sisteme ölçeklendirme tanıtımı kavramını umarsınız.

12
yathartha

Bahsedilmemiş bir ek mimari daha var - elle paylaşmanın karmaşıklığı olmadan yatay ölçeklemeyi sağlayan SQL tabanlı veritabanı hizmetleri. Bu servisler arka planda netlemeyi yapar, böylece geleneksel bir SQL veritabanı çalıştırmanıza ve MongoDB veya CouchDB gibi NoSQL motorlarında yaptığınız gibi ölçeklenmenize olanak sağlar. Tanıdığım iki hizmet: EnterpriseDB / PostgreSQL için ve Xeround için MySQL. SQL veritabanlarında ölçeklendirmenin neden zor olduğunu ve farklı şekilde nasıl yaptıklarını açıklayan derinlemesine post by Xeround gördüm - bunu bir satıcı postası olduğu gibi bir tuz tanecikiyle ele alın. Ayrıca Wikipedia’nın Bulut Veri Tabanı girişine bir göz atın , SQL ile NoSQL ve servisle ilgili kendi kendine barındırılan, satıcıların bir listesi ve her bir kombinasyon için ölçeklendirme seçeneklerinin güzel bir açıklaması vardır. ;)

9
Dina Kaiser

Evet yatay ölçekleme, daha fazla makine eklemek anlamına gelir, ancak aynı zamanda makinelerin kümede eşit olduğu anlamına gelir. MySQL, kopyalar kullanılarak, Verilerin okunması şeklinde yatay ölçeklenebilir, ancak sunucu mem/diskin kapasitesine ulaştığında, sunucular arasında veri paylaşmaya başlamanız gerekir. Bu giderek daha karmaşık hale gelir. Çoğunlukla verilerin kopyalar arasında tutarlı tutulması, çoğaltma oranlarının veri değişim oranlarına ayak uyduramayacak kadar yavaş olması nedeniyle bir problemdir.

Couchbase ayrıca, birçok ticari yüksek kullanılabilirlik uygulamalarında ve oyunlarında ve tartışmasız kategorideki en yüksek performansta kullanılan fantastik bir NoSQL Yatay Ölçeklendirme veritabanıdır. Verileri küme genelinde otomatik olarak bölümlere ayırır, düğüm eklemek basittir ve emtia donanımlarını, daha ucuz vm örneklerini (örneğin, Yüksek Memeler yerine Büyük, AWS'deki Yüksek Disk makineleri kullanarak) kullanabilirsiniz. Membase'den inşa edilmiştir (Memcached) ancak kalıcılık ekler. Ayrıca, Couchbase durumunda, her düğüm okuma ve yazma yapabilir ve yalnızca yük devretme çoğaltmasıyla (mySQL'deki gibi tüm sunucular arasında tam veri kümesi çoğaltması değil) kümede eşittir.

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

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

8
scalabl3

Geleneksel ilişkisel veritabanları, istemci/sunucu veritabanı sistemleri olarak tasarlanmıştır. Yatay olarak ölçeklenebilirler, ancak bunu yapma süreci karmaşık ve hataya açık olma eğilimindedir. NuoDB gibi NewSQL veritabanları, geleneksel RDBMS'nin SQL/ACID özelliklerini korurken yatay olarak ölçeklenecek şekilde tasarlanmış bellek merkezli dağıtılmış veritabanı sistemleridir.

NuoDB hakkında daha fazla bilgi için, teknik tanıtım belgelerini .

6

Oracle, db2 gibi SQL veritabanları da Paylaşılan disk kümesinde Yatay ölçeklemeyi destekler. Örneğin, Oracle RAC, IBM DB2 purescale veya Sybase ASE Cluster sürümü. Yatay ölçeklemeyi sağlamak için Oracle RAC sistemine veya DB2 purescale sistemine yeni düğüm eklenebilir.

Ancak bu yaklaşım noSQL veritabanlarından (mongodb, CouchDB veya IBM Cloudant gibi) farklıdır, veri paylaşımının Yatay ölçeklendirmenin bir parçası olmadığıdır. NoSQL veritabanlarında veriler yatay ölçeklendirme sırasında küçültülür.

5
Debasish

Diğer tüm cevaplar çoktan tamamlanmış gibi görünüyor ama görmedim Google Cloud Spanner yatay ölçeklemeli ilişkisel bir veritabanı örneği olarak, bu yüzden küçük katkımı ekliyorum.

2
Erickson Filipe

Çok fazla yük dengeleyici eklemek, fazladan ek ve gecikme yaratır ve bu, nosql veritabanlarında yatay olarak ölçeklendirmenin dezavantajıdır. İnsanların neden RPC'nin tavsiye edilmediğini söylediği bir soru gibi değil çünkü sağlam değil.

Gerçek bir sistemde, günümüz sistemlerinin hem çok çekirdekli hem de bulut bilişim yeteneklerinden yararlanmak için hem sql hem de nosql veritabanlarını kullanmalıyız.

Öte yandan, Oracle gibi sql veritabanları kullanılıyorsa karmaşık işlem sorguları yüksek performans gösterir. NoSql, büyük veriler ve yatay ölçeklenebilirlik için sharing yaparak kullanılabilir.

0
farshad-nsh