Yatay ölçekleme VS basit bir örnek. sadece veritabanı en dikey ölçeklendirme
Given an example application like so:
Application has many clients, each client has multiple users.
update:
No client needs to know about another client, each user belongs exclusively to one client
Vertical scaling:
Client data is stored in a normalized SQL based database.
user credentials for all users is stored in client_users table.
Benefits
- Kalkınma için direnç kısa yol
- nispeten kolay bütünlüğünü korumak ile
- Yedekleme Kolay
Problem:
Tüm istemci kimlik performansını korumak veya arttırmak için, ilgili verilerle birlikte bu tabloda saklanır çünkü daha fazla kaynak veritabanı katmanı takviye ya da bu bir usta daha köle yatırım gerektirecektir.
Horizontal scaling:
Her müşteri bir öneki tablo şema üzerinde bulunmaktadır. client_users client01_users olur
Benefits
DB yönetiminde orta düzey becerilere sahip birisi (aklı kontrol / test / doğrulamak için daha sonra başka bir saat) yaklaşık 5 dakika içinde yeni bir DB sunucuya # _ * tablolar müşteri kopyalamak için basit bir komut dosyası yazabilirsiniz. Özel donanım gerektiren için yüksek trafik müşterileri şarj ederken bu şekilde size altyapı tasarruf bir overbooked sunucu ve kar üzerine düşük trafik müşterilerine zorlayabilir.
Problems
- Bakım / geliştirme zamanı unutulup içine uzanan ve paylaşılan hiçbir şey teknikleri otomasyon ve şema değişikliği yönetim sistemlerini içermektedir yoksa tamamen gelişimini felç edebilir.
- Bir sütun bırakarak / ekleme gibi basit bir görev yazılım değişikliklere lockstep birden fazla tablo / makinelerde bunu yapmak zorunda gibi peform için çok daha uzun sürer.
- Yedekleme en bazen oldukça ilginç olsun
Summary
Başlangıçta ben paylaşılan hiçbir şey için bir fırsat görebilirsiniz eğer, ben bu uygulamaya almak için diş ve tırnak mücadele edecek. Yeni müşterinin ölçeklendirme sorunları ile için, sonra sözleşmeli benim ilk öneri Sharding veya paylaşılan hiçbir şey müdürleri dahil üstlenmeden içerecektir. Yaklaştı / doğru ele eğer aklımda, ekstra karmaşıklığı idare edilebilir.