Her müşteriye kendi veritabanını vermeyi planladığımız bir SaaS sistemi kuruyorum. Sistem zaten kuruludur, böylece yük çok fazla olduğunda kolayca ek sunuculara kolayca ölçeklenebiliriz; Binlerce hatta on binlerce müşterimiz olmasını umuyoruz.
Sorular
- Bir SQL Server'da sahip olabileceğiniz / sahip olmanız gereken mikro veri tabanlarının sayısı konusunda pratik bir sınırlama var mı?
- Sunucunun performansını etkileyebilir mi?
- Her biri 100 MB'lık 10.000 veritabanına veya 1 TB'lik bir veritabanına sahip olmak daha mı iyidir?
Ek bilgi
"Mikro veritabanları" derken gerçekten "mikro" demek istemiyorum; Sadece binlerce müşteriyi hedeflediğimizi kastediyorum, bu nedenle her bir veritabanı toplam veri deposunun sadece binde biri veya daha azını oluşturur. Gerçekte, her bir veritabanı ne kadar kullanım alacağına bağlı olarak 100 MB civarında olacaktır.
10.000 veritabanı kullanmanın ana nedeni ölçeklenebilirliktir. İşin aslı, sistemin V1'inin bir veritabanı var ve DB yük altında zorlanırken rahatsız edici anlar yaşadık.
Yukarıdakilerin hepsi CPU, bellek, G / Ç'yi zorluyordu. Bu sorunları çözmemize rağmen, bir noktada, dünyadaki en iyi endekslemeyle bile, fark etmeyi umduğumuz kadar başarılı olursak, tüm verilerimizi tek bir büyük topluluğa koyamayacağımızı anlamamızı sağladılar. 'veritabanı. Yani V2 için biz paylaştık, bu yüzden yükü birden fazla DB sunucusu arasında bölebiliriz.
Geçen yılı bu keskin çözümü geliştirmek için harcadım. Sunucu başına bir lisans, ancak yine de Azure'da VM kullandığımızdan beri halledilir. Sorunun ortaya çıkmasının nedeni, daha önce sadece büyük kurumlara teklif vermemiz ve her birini kendimiz kurmamızdı. Bir sonraki işimiz, tarayıcıya sahip herhangi birinin kaydolacağı ve kendi veritabanını oluşturabildiği bir self servis modelidir. Veri tabanları büyük kurumlardan çok daha küçük ve çok daha fazla olacaktır.
Azure SQL Database Elastic Pools'u denedik . Performans çok hayal kırıklığı yarattı, bu yüzden normal sanal makinelere geri döndük.