Çok kiracılı SaaS veritabanı kiracı desenleri
ŞUNUN İÇİN GEÇERLİDİR:
Azure SQL Database
Bu makalede, çok kiracılı bir SaaS uygulaması için kullanılabilen çeşitli kiracı modelleri açıklanmıştır.
Çok kiracılı bir SaaS uygulaması tasarlarken, uygulamanıza en uygun kiracı modelini dikkatli bir şekilde seçmeniz gerekir. Kiracı modeli, her kiracının verilerini depolamayla nasıl eşleştireceklerini belirler. Kira modeli seçiminiz uygulama tasarımını ve yönetimini etkiler. Daha sonra farklı bir modele geçmek bazen maliyetli olabilir.
A. SaaS kavramları ve terminolojisi
Hizmet Olarak Yazılım (SaaS) modelinde, şirketiniz yazılımınıza lisans satmıyor. Bunun yerine, her müşteri şirketinize kira ödemeleri yapar ve her müşteriyi kendi şirketinizin kiracısı yapar.
Kira ödemesi karşılığında her kiracı SaaS uygulama bileşenlerinize erişim alır ve verileri SaaS sisteminde depolanır.
Kiracı modeli terimi, kiracıların depolanan verilerini nasıl düzenlemektedir:
- Tekli kira: Her veritabanı yalnızca bir kiracıdan veri depolar.
- Çok kiralı: Her veritabanı, birden çok ayrı kiracıdan (veri gizliliğini koruma mekanizmalarıyla) verileri depolar.
- Hibrit kira modelleri de mevcuttur.
B. Uygun kira modelini seçme
Genel olarak, kira modeli bir uygulamanın işlevini etkilemez, ancak büyük olasılıkla çözümün diğer yönlerini de etkiler. Modellerin her birini değerlendirmek için aşağıdaki ölçütler kullanılır:
Ölçeklenebilir -lik:
- Kiracı sayısı.
- Kiracı başına depolama.
- Toplamada depolama.
- Iş yük -ünü.
Kiracı yalıtımı: Veri yalıtımı ve performansı (bir kiracının iş yükünün diğer kiracıları etkilese de etkilemesi).
Kiracı başına maliyet: Veritabanı maliyetleri.
Geliştirme karmaşıklığı:
- Şemada yapılan değişiklikler.
- Sorgularda yapılan değişiklikler (desen için gereklidir).
İşletimsel karmaşıklık:
- Performansı izleme ve yönetme.
- Şema yönetimi.
- Kiracıyı geri yükleme.
- Olağanüstü durum kurtarma.
Özelleştirilebilirlik: Kiracıya özgü veya kiracı sınıfına özgü şema özelleştirmelerini destekleme kolaylığı.
Kira tartışmaları veri katmanına odaklandı. Ancak bir an için uygulama katmanını göz önünde bulundurabilirsiniz. Uygulama katmanı monolitik varlık olarak kabul edilir. Uygulamayı çok sayıda küçük bileşene bölersanız, kira modeli seçiminiz değişebilir. Bazı bileşenlere hem kira hem de kullanılan depolama teknolojisi veya platformla ilgili olarak diğer bileşenlerden farklı davranabilirsiniz.
C. Tek kiracılı veritabanı ile tek kiracılı uygulama
Uygulama düzeyinde yalıtım
Bu modelde, uygulamanın tamamı her kiracı için bir kez tekrar tekrar yüklenir. Uygulamanın her örneği tek başına bir örnektir, bu nedenle hiçbir zaman başka bir tek başına örnekle etkileşim kurmaz. Uygulamanın her örneğinde yalnızca bir kiracı vardır ve bu nedenle yalnızca bir veritabanı gerekir. Kiracı, veritabanının kendisine aittir.

Her uygulama örneği ayrı bir Azure kaynak grubuna yüklenir. Kaynak grubu, yazılım satıcısının veya kiracının sahip olduğu aboneliğe ait olabilir. Her iki durumda da satıcı kiracı için yazılımı yönetebilir. Her uygulama örneği, karşılık gelen veritabanına bağlanarak yapılandırılır.
Her kiracı veritabanı tek bir veritabanı olarak dağıtılır. Bu model en büyük veritabanı yalıtımı sağlar. Ancak yalıtım, en yoğun yüklerini işlemek için her veritabanına yeterli kaynakların tahsisini gerektirir. Burada, elastik havuzların farklı kaynak gruplarına veya farklı aboneliklere dağıtılmış veritabanları için kullanılamamaları önemlidir. Bu sınırlama, tek başına tek kiracılı uygulama modelinin genel veritabanı maliyeti açısından en pahalı çözüm olmasını sağlar.
Satıcı yönetimi
Satıcı, uygulama örnekleri farklı kiracı aboneliklerine yüklenmiş olsa bile tüm tek başına uygulama örneklerde yer alan tüm veritabanlarına erişebilirsiniz. Erişim SQL bağlantıları aracılığıyla sağlanır. Bu örnekler arası erişim, satıcının raporlama veya analiz amacıyla şema yönetimini ve veritabanı arası sorguyu merkezileştirmelerine olanak sağlar. Bu tür bir merkezi yönetim istenirse, kiracı tanımlayıcılarını veritabanı URL'leri ile eşleten bir katalog dağıtılabilir. Azure SQL Veritabanı bir katalog sağlamak için birlikte kullanılan bir parçalama kitaplığı sağlar. Parçalama kitaplığı, istemci kitaplığı olarak Esnek Veritabanı olarak adlandırılmıştır.
D. Kiracı başına veritabanı ile çok kiracılı uygulama
Bu sonraki desende, hepsi tek kiracılı veritabanları olan çok kiracılı bir uygulama kullanılır. Her yeni kiracı için yeni bir veritabanı sağlandı. Uygulama katmanı, düğüm başına daha fazla kaynak ekleyerek dikey olarak ölçeklendirildi. Veya daha fazla düğüm ekleyerek uygulamanın ölçeği yatay olarak uztar. Ölçeklendirme, iş yüküne dayalıdır ve tek tek veritabanlarının sayısından veya ölçeğinden bağımsızdır.

Kiracı için özelleştirme
Tek başına uygulama düzeni gibi, tek kiracılı veritabanlarının kullanımı da güçlü kiracı yalıtımı sağlar. Modeli yalnızca tek kiracılı veritabanlarını belirten herhangi bir uygulamada, belirli bir veritabanının şeması kiracısı için özelleştirilebilir ve iyileştirilebilir. Bu özelleştirme, uygulamanın diğer kiracılarını etkilemez. Bir kiracının tüm kiracılara gereken temel veri alanlarının ötesindeki verilere ihtiyacı olabilir. Ayrıca, ek veri alanında bir dizine ihtiyaç olabilir.
Kiracı başına veritabanı ile şemayı bir veya daha fazla kiracı için özelleştirmek oldukça kolaydır. Uygulama satıcısının büyük ölçekte şema özelleştirmelerini dikkatle yönetmek için yordamlar tasarlaması gerekir.
Esnek havuzlar
Veritabanları aynı kaynak grubunda dağıtıldığında elastik havuzlar olarak gruplandırılabilir. Havuzlar, kaynakları birçok veritabanı arasında paylaşmanın uygun maliyetli bir yolunu sağlar. Bu havuz seçeneği, her veritabanının kullanım zirvelerini karşılayacak kadar büyük olması gerekmeden daha ucuzdur. Havuza alan veritabanları kaynaklara erişimi paylaşsa da yüksek düzeyde performans yalıtımı elde etmek için kullanılabilir.

Azure SQL Veritabanı paylaşımı yapılandırmak, izlemek ve yönetmek için gereken araçları sağlar. Hem havuz düzeyinde hem de veritabanı düzeyinde performans ölçümleri Azure portal günlüklerde Azure İzleyici kullanılabilir. Ölçümler hem toplama hem de kiracıya özgü performans hakkında harika içgörüler sağlar. Belirli bir kiracıya ayrılmış kaynaklar sağlamak için tek veritabanları havuzlar arasında taşınabilirsiniz. Bu araçlar, uygun maliyetli bir şekilde iyi performans sağlamaya olanak sağlar.
Kiracı başına veritabanı için işlemler ölçeklendirildi
Azure SQL Veritabanı, 100.000'den fazla veritabanı gibi büyük ölçekli veritabanlarını yönetmek için tasarlanmış birçok yönetim özelliğine sahiptir. Bu özellikler, kiracı başına veritabanı desenini makul hale gelir.
Örneğin, bir sistemin tek veritabanı olarak 1000 kiracılı bir veritabanı olduğunu varsayalım. Veritabanında 20 dizin olabilir. Sistem 1000 tek kiracılı veritabanına dönüştürülürse dizin miktarı 20.000'e yükselir. Otomatik Azure SQL Veritabanı'nin bir parçası olarak,otomatik dizinleme özellikleri varsayılan olarak etkindir. Otomatik Dizin oluşturma, sizin için tüm 20.000 dizinleri ve devam eden oluşturma ve bırakma iyileştirmelerini yönetir. Bu otomatikleştirilmiş eylemler tek bir veritabanı içinde gerçekleşir ve diğer veritabanlarındaki benzer eylemler tarafından koordine edilmez veya kısıtlanmaz. Otomatik Dizin oluşturma, dizinlere, daha az meşgul bir veritabanından çok meşgul bir veritabanında farklı davranır. Bu çok büyük yönetim görevinin el ile yapılması gerekiyorsa, bu tür bir dizin yönetimi özelleştirmesi, kiracı başına veritabanı ölçeğinde pratik bir şekilde yapılır.
Ölçeklendirilen diğer yönetim özellikleri şunlardır:
- Yerleşik yedeklemeler.
- Yüksek kullanılabilirlik.
- Disk üzerinde şifreleme.
- Performans telemetrisi.
Otomasyon
Yönetim işlemleri, çalıştırılabilir ve bir DevOps modeliyle sunulabilir. İşlemler bile otomatikleştirilebilir ve uygulamada açığa çıkabilir.
Örneğin, tek bir kiracının kurtarma işlemini zaman içinde daha önceki bir noktaya otomatik hale getirebilirsiniz. Kurtarmanın yalnızca kiracıyı depolayan tek kiracılı bir veritabanını geri yüklemesi gerekir. Bu geri yüklemenin diğer kiracılar üzerinde hiçbir etkisi yoktur. Bu, yönetim işlemlerinin her bir kiracının çok ayrıntılı düzeyinde olduğunu onaylar.
E. Çok kiracılı veritabanları içeren çok kiracılı uygulama
Kullanılabilir başka bir model, çok kiracılı bir veritabanında birçok kiracıyı depolardır. Uygulama örneği herhangi bir sayıda çok kiracılı veritabanına sahip olabilir. Bir çok kiracılı veritabanının şeması bir veya daha fazla kiracı tanımlayıcı sütununa sahip olmalıdır, böylece belirli bir Kiracıdaki verilerin seçmeli olarak alınabilmesi için. Ayrıca, şema yalnızca kiracıların bir alt kümesi tarafından kullanılan birkaç tablo veya sütun gerektirebilir. Ancak, statik kod ve başvuru verileri yalnızca bir kez depolanır ve tüm kiracılar tarafından paylaşılır.
Kiracı yalıtımı feda
Veri: Çok kiracılı bir veritabanı, kiracı yalıtımına sahip olması için gerekli değildir. Birden çok kiracının verileri bir veritabanında birlikte depolanır. Geliştirme sırasında, sorguların birden fazla kiracıdan verileri hiçbir şekilde kullanıma sunduğundan emin olun. SQL veritabanı, bir sorgudan döndürülen verilerin tek bir kiracıya kapsam uygulanmasını zorlayabilen satır düzeyi güvenliğidestekler.
İşleme: Çok kiracılı bir veritabanı işlem ve depolama kaynaklarını tüm kiracılar genelinde paylaşır. Veritabanı bir bütün olarak, kabul edilebilir bir şekilde çalıştığından emin olmak için izlenebilir. Ancak, Azure sisteminde tek bir kiracı tarafından bu kaynakların kullanımını izlemeye veya yönetmeye yönelik yerleşik bir yol yoktur. Bu nedenle, çok kiracılı veritabanı, bir aşırı etkin kiracının iş yükünün aynı veritabanındaki diğer kiracıların performans deneyimini etkilediği gürültülü komşuları ile karşılaşmadan daha fazla risk taşır. Ek uygulama düzeyi izleme, kiracı düzeyinde performansı izleyebilir.
Düşük maliyet
Genel olarak, çok kiracılı veritabanlarının en düşük kiracı başına maliyeti vardır. Tek bir veritabanı için kaynak maliyetleri, equivalently boyutlu elastik bir havuzdan daha düşüktür. Bunlara ek olarak, kiracıların yalnızca sınırlı depolama ihtiyacı olan senaryolarda, milyonlarca kiracı büyük olasılıkla tek bir veritabanında depolanabilir. Esnek havuz milyonlarca veritabanına sahip olamaz. Ancak, 1000 havuzlarıyla, havuz başına 1000 veritabanı içeren bir çözüm, yönetmek için uygun hale gelme riski altında milyonlarca ölçeğe ulaşabilir.
Çok kiracılı bir veritabanı modelinin iki farklı çeşidi, parçalı çok kiracılı model en esnek ve ölçeklenebilir olacak şekilde aşağıdaki şekilde ele alınmıştır.
F. Tek bir çok kiracılı veritabanı ile çok kiracılı uygulama
En basit çok kiracılı veritabanı, tüm kiracılara yönelik verileri barındırmak için tek bir veritabanı kullanır. Daha fazla kiracı eklendikçe, veritabanı daha fazla depolama ve işlem kaynaklarıyla ölçeklenir. Bu ölçek artırma, her zaman bir en son ölçek sınırı olmasına rağmen gerekli olabilir. Ancak, bu sınıra ulaşılmadan önce uzun bir süre, veritabanının yönetilmesi için çok daha etkin hale gelir.
Ayrı kiracılara odaklanan yönetim işlemleri çok kiracılı bir veritabanında uygulamak daha karmaşıktır. Ve bu işlemler ölçeğinde, kabul edilebilir yavaş hale gelebilir. Tek bir örnek, tek bir kiracının verilerinin bir nokta geri yüklemesi örneğidir.
G. Parçalı çok kiracılı veritabanları içeren çok kiracılı uygulama
Birçok SaaS uygulaması tek seferde yalnızca bir kiracının verilerine erişir. Bu erişim stili, kiracı verilerinin birden çok veritabanına veya parçalara dağıtılmasına olanak tanır. Bu, herhangi bir kiracının tüm verilerinin tek parça içinde yer aldığı yerdir. Çok kiracılı bir veritabanı düzeniyle birleştirildiğinde, parçalı bir model neredeyse sınırsız ölçeğe izin verir.

Parçaları yönetme
Parçalama, hem tasarım hem de işletimsel yönetime karmaşıklık ekler. Kiracılar ve veritabanları arasındaki eşlemenin korunması için bir katalog gereklidir. Ayrıca, parçaları ve kiracı popülasyonu yönetmek için yönetim yordamları gerekir. Örneğin, yordamlar, parçalama eklemek ve kaldırmak ve kiracı verilerini parçalar arasında taşımak için tasarlanmalıdır. Ölçeklendirmenin bir yolu, yeni bir parça ekleyip yeni kiracılar ile doldurularak yapılır. Diğer zamanlarda, daha seyrek doldurulmuş bir parçayı daha seyrek doldurulmuş parçalara ayırabilirsiniz. Birkaç kiracı taşındıktan veya kullanımdan kaldırıldıktan sonra, seyrek doldurulmuş parçaları birlikte birleştirebilirsiniz. Birleştirme, daha düşük maliyetli kaynak kullanımına neden olur. Kiracılar iş yüklerini dengelemek için parçalar arasında da taşınabilir.
SQL veritabanı, parça kitaplığı ve Katalog veritabanıyla birlikte çalışan bir bölünmüş/birleştirme aracı sağlar. Belirtilen uygulama parçaları bölebilir ve birleştirebilir ve kiracı verilerini parçalar arasında taşıyabilir. Uygulama Ayrıca, bu işlemler sırasında kataloğu korur, etkilenen kiracılar onları taşımadan önce çevrimdışı olarak işaretleniyor. Taşıma işleminden sonra uygulama, kataloğu yeni eşleme ile tekrar güncelleştirir ve kiracıyı yeniden çevrimiçi olarak işaretler.
Daha küçük veritabanları daha kolay yönetiliyor
Kiracılar birden çok veritabanına dağıtarak, parçalı çok kiracılı çözüm daha kolay yönetilebilen daha küçük veritabanlarına neden olur. Örneğin, belirli bir kiracıyı önceki bir noktaya geri yüklemek artık, tüm kiracıların bulunduğu daha büyük bir veritabanı yerine bir yedeklemeden tek bir küçük veritabanının geri yüklenmesini içerir. Veritabanı boyutu ve veritabanı başına kiracı sayısı, iş yükünün ve yönetim çalışmalarının dengelenmesi için seçilebilir.
Şemada kiracı tanımlayıcısı
Kullanılan parça yaklaşımına bağlı olarak, veritabanı şemasına ek kısıtlamalar uygulanabilir. SQL veritabanı bölünmüş/birleştirme uygulaması şemanın, genellikle kiracı tanımlayıcısı olan parçalama anahtarını içermesi gerekir. Kiracı tanımlayıcısı, tüm parçalı tabloların birincil anahtarındaki önde gelen öğedir. Kiracı tanımlayıcısı, bölünmüş/birleştirme uygulamasının belirli bir kiracı ile ilişkili verileri hızlı bir şekilde bulmasını ve taşımasını sağlar.
Parçalar için elastik havuz
Parçalı çok kiracılı veritabanları, esnek havuzlara yerleştirilebilir. Genel olarak, bir havuzda çok sayıda tek kiracılı veritabanı olması, birkaç çok kiracılı veritabanında birçok kiracıya sahip olmaya uygun maliyetli bir yöntemdir. Çok kiracılı veritabanları, çok sayıda görece devre dışı kiracı olduğunda avantajlıdır.
Olsun. Karma parça oluşturulmuş çok kiracılı veritabanı modeli
Karma modelde, tüm veritabanlarının şemasında kiracı tanımlayıcısı vardır. Veritabanlarının hepsi birden fazla kiracı depolama kapasitesine sahiptir ve veritabanları parçalı olabilir. Bu nedenle, şema anlamda tüm çok kiracılı veritabanları vardır. Henüz uygulamada, bu veritabanlarından bazıları yalnızca bir kiracı içeriyor. Ne olursa olsun, belirli bir veritabanında depolanan kiracı miktarının veritabanı şeması üzerinde hiçbir etkisi yoktur.
Kiracılar etrafında taşı
İstediğiniz zaman, belirli bir kiracıyı kendi çok kiracılı veritabanına taşıyabilirsiniz. İstediğiniz zaman fikrinizi değiştirebilir ve kiracıyı birden fazla kiracı içeren bir veritabanına geri taşıyabilirsiniz. Yeni veritabanını sağladığınızda yeni tek kiracılı veritabanına da bir kiracı atayabilirsiniz.
Karma model, kaynak gereksinimlerine yönelik olarak tanımlanabilen kiracı grupları arasında büyük farklar olduğunda oluşur. Örneğin, ücretsiz bir denemeye katılan kiracının, kiracıların abone olduğu yüksek performans düzeyine sahip olduğunu garanti etmez. İlke, ücretsiz deneme aşamasındaki kiracıların tüm ücretsiz deneme kiracılar arasında paylaşılan çok kiracılı bir veritabanında depolanması olabilir. Ücretsiz bir deneme kiracısı temel hizmet katmanına abone olduğunda, kiracı daha az kiracıya sahip olabilecek başka bir çok kiracılı veritabanına taşınabilir. Premium hizmet katmanı için ödeme yapan bir abone, kendi yeni tek kiracılı veritabanına taşınabilir.
Havuzlar
Bu karma modelde, kiracı kiracılarının tek kiracılı veritabanları, kiracı başına veritabanı maliyetlerini azaltmak için kaynak havuzlarına yerleştirilebilir. Bu, kiracı başına veritabanı modelinde da yapılır.
I. Karşılaştırılan kiracı modelleri
Aşağıdaki tabloda, ana kiracı modelleri arasındaki farklar özetlenmektedir.
| Ölçüm | Tek başına uygulama | Kiracı başına veritabanı | Parçalı çoklu kiracı |
|---|---|---|---|
| Ölçek | Orta 1-100s |
Çok yüksek 1-100, 000s |
Sınırsız 1-1, 000, 000s |
| Kiracı yalıtımı | Çok yüksek | Yüksek | Zayıf tek bir kiracı (bir MT DB 'de tek başına) dışında. |
| Kiracı başına veritabanı maliyeti | Geniş , tepe noktaları için boyutlandırılır. | Zayıf kullanılan havuzlar. | En düşük, MT DBs 'deki küçük kiracılar için. |
| Performans izleme ve yönetimi | Yalnızca kiracı başına | Toplu + kiracı başına | Birleşik , ancak yalnızca Singapur için kiracı başına olur. |
| Geliştirme karmaşıklığı | Düşük | Düşük | Uzunlukta parça nedeniyle. |
| İşlemsel karmaşıklık | Düşük-yüksek. Ölçekteki tek tek basit, karmaşık. | Düşük orta. Desenler ölçekteki karmaşıklığı ele. | Düşük-yüksek. Tek tek Kiracı Yönetimi karmaşıktır. |