Çok kiracılı SaaS veritabanı kiracı desenleri

Şunlar için geçerlidir: Azure SQL Veritabanı

Bu makalede, çok kiracılı bir SaaS uygulaması için kullanılabilen çeşitli kiracı modelleri açıklanmaktadır.

Çok kiracılı bir SaaS uygulaması tasarlarken, uygulamanızın gereksinimlerine en uygun kiracı modelini dikkatle seçmeniz gerekir. Kiracı modeli, her kiracının verilerinin depolamaya nasıl eşleneceğini belirler. Kiracı 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 satmaz. Bunun yerine, her müşteri şirketinize kira ödemeleri yaparak her müşteriyi şirketinizin kiracısı yapar.

Kira ödemesi karşılığında, her kiracı SaaS uygulama bileşenlerinize erişim alır ve verilerini SaaS sisteminde depolar.

Kiracı modeli terimi kiracıların depolanan verilerinin nasıl düzenlendiğinden sorumludur:

  • Tek kiracı: Her veritabanı yalnızca bir kiracıdan veri depolar.
  • Çok kiracılı: Her veritabanı birden çok ayrı kiracıdan (veri gizliliğini korumaya yönelik mekanizmalarla) verileri depolar.
  • Hibrit kiracı modelleri de mevcuttur.

B. Uygun kiracı modelini seçme

Genel olarak kiracı modeli bir uygulamanın işlevini etkilemez, ancak büyük olasılıkla genel çözümün diğer yönlerini 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.
    • Toplu 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ğerlerini etkileyip etkilemediği).

  • 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).
  • İşlem karmaşıklığı:

    • Performansı izleme ve yönetme.
    • Şema yönetimi.
    • Kiracıyı geri yükleme.
    • Olağanüstü durum kurtarma.
  • Customizability: Kiracıya özgü veya kiracı sınıfına özgü şema özelleştirmelerini destekleme kolaylığı.

Kiracı tartışması veri katmanına odaklanır. Ancak bir an için uygulama katmanını düşünün. Uygulama katmanı monolitik bir varlık olarak kabul edilir. Uygulamayı birçok küçük bileşene bölerseniz kiracı modeli seçiminiz değişebilir. Hem kiracı hem de kullanılan depolama teknolojisi veya platformuyla ilgili olarak bazı bileşenlere diğerlerinden farklı davranabilirsiniz.

C. Tek kiracılı veritabanı ile tek başına tek kiracılı uygulama

Uygulama düzeyinde yalıtım

Bu modelde, uygulamanın tamamı her kiracı için bir kez art arda yüklenir. Uygulamanın her örneği tek başına bir örnek olduğundan hiçbir zaman başka bir tek başına örnekle etkileşim kurmaz. Uygulamanın her örneği yalnızca bir kiracıya sahiptir ve bu nedenle yalnızca bir veritabanına ihtiyaç duyar. Kiracı, veritabanının tamamına sahiptir.

Tek kiracılı veritabanı olan tek başına uygulamanın tasarımı.

Her uygulama örneği ayrı bir Azure kaynak grubuna yüklenir. Kaynak grubu, yazılım satıcısına veya kiracıya ait bir aboneliğe ait olabilir. Her iki durumda da, satıcı kiracının yazılımını yönetebilir. Her uygulama örneği, ilgili veritabanına bağlanacak şekilde 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ını sağlar. Ancak yalıtım, en yüksek yüklerini işlemek için her veritabanına yeterli kaynağın ayrılmasını gerektirir. Burada elastik havuzların farklı kaynak gruplarına veya farklı aboneliklere dağıtılan veritabanları için kullanılamayacağı önemlidir. Bu sınırlama, bu tek başına tek kiracılı uygulama modelini genel veritabanı maliyeti açısından en pahalı çözüm haline getirir.

Satıcı yönetimi

Uygulama örnekleri farklı kiracı aboneliklerine yüklenmiş olsa bile satıcı tüm tek başına uygulama örneklerindeki tüm veritabanlarına erişebilir. 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 veritabanları arası sorguyu merkezileştirmesini sağlayabilir. Bu tür bir merkezi yönetim isteniyorsa, kiracı tanımlayıcılarını veritabanı URI'lerine eşleyen bir katalog dağıtılmalıdır. Azure SQL Veritabanı, katalog sağlamak için birlikte kullanılan bir parçalama kitaplığı sağlar. Parçalama kitaplığı resmi olarak Elastik Veritabanı İstemci Kitaplığı olarak adlandırılır.

D. Kiracı başına veritabanı içeren çok kiracılı uygulama

Bu sonraki düzende, tümü tek kiracılı veritabanları olan birçok veritabanı olan çok kiracılı bir uygulama kullanılır. Her yeni kiracı için yeni bir veritabanı sağlanır. Uygulama katmanı, düğüm başına daha fazla kaynak eklenerek dikey olarak ölçeklendirilir . Ya da daha fazla düğüm eklenerek uygulamanın ölçeği yatay olarak genişletilir . Ölçeklendirme iş yükünü temel alır ve tek tek veritabanlarının sayısından veya ölçeğinden bağımsızdır.

Kiracı başına veritabanı ile çok kiracılı uygulamanın tasarımı.

Kiracı için özelleştirme

Tek başına uygulama düzeninde olduğu gibi, tek kiracılı veritabanlarının kullanılması 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, uygulamadaki diğer kiracıları etkilemez. Bir kiracının, tüm kiracıların ihtiyaç duyduğu temel veri alanlarının ötesinde verilere ihtiyacı olabilir. Ayrıca, ek veri alanının bir dizine ihtiyacı olabilir.

Kiracı başına veritabanı ile bir veya daha fazla kiracı için şemayı özelleştirmek kolaydır. Uygulama satıcısının şema özelleştirmelerini büyük ölçekte dikkatle yönetmek için yordamlar tasarlaması gerekir.

Esnek havuzlar

Veritabanları aynı kaynak grubunda dağıtıldığında elastik havuzlar halinde gruplandırılabilir. Havuzlar, kaynakları birçok veritabanında paylaşmanın uygun maliyetli bir yolunu sağlar. Bu havuz seçeneği, her veritabanının karşılaştığı kullanım artışlarını karşılayacak kadar büyük olmasını gerektirmekten daha ucuzdur. Havuza alınan veritabanları kaynaklara erişimi paylaşsa da yüksek düzeyde performans yalıtımı elde edebilir.

Elastik havuz kullanarak kiracı başına veritabanıyla çok kiracılı uygulamanın tasarımı.

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 ve Azure İzleyici günlükleri aracılığıyla kullanılabilir. Ölçümler hem toplama hem de kiracıya özgü performansla ilgili harika içgörüler sağlayabilir. Belirli bir kiracıya ayrılmış kaynaklar sağlamak için tek tek veritabanları havuzlar arasında taşınabilir. Bu araçlar uygun maliyetli bir şekilde iyi performans sağlamanıza olanak tanır.

Kiracı başına veritabanı için işlem ölçeği

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 getirir.

Örneğin, bir sistemin tek veritabanı olarak 1000 kiracılı bir veritabanına sahip olduğunu varsayalım. Veritabanında 20 dizin olabilir. Sistem 1000 tek kiracılı veritabanına sahip olacak şekilde dönüştürülürse dizin sayısı 20.000'e yükselir. otomatik ayarlamanın bir parçası olarak Azure SQL Veritabanı'nda otomatik dizin oluşturma özellikleri varsayılan olarak etkinleştirilir. Otomatik dizin oluşturma, 20.000 dizini ve bunların devam eden oluşturma ve bırakma iyileştirmelerini sizin için yönetir. Bu otomatik eylemler tek bir veritabanında gerçekleşir ve diğer veritabanlarındaki benzer eylemlerle eşgüdümlü veya kısıtlanmaz. Otomatik dizin oluşturma, meşgul bir veritabanındaki dizinleri daha az meşgul bir veritabanından farklı şekilde ele alır. Bu büyük yönetim görevinin el ile gerçekleştirilmesi gerekiyorsa, bu tür dizin yönetimi özelleştirmesi kiracı başına veritabanı ölçeğinde pratik olmaz.

İyi ölçeklendirilen diğer yönetim özellikleri şunlardır:

  • Yerleşik yedeklemeler.
  • Yüksek kullanılabilirlik.
  • Diskte şifreleme.
  • Performans telemetrisi.

Otomasyon

Yönetim işlemleri bir devops modeli aracılığıyla betik oluşturulabilir ve sunulur. İşlemler uygulamada otomatikleştirilebilir ve kullanıma sunulur.

Örneğin, tek bir kiracının kurtarma işlemini zaman içinde daha önceki bir noktaya otomatikleştirebilirsiniz. Kurtarmanın yalnızca kiracıyı depolayan tek kiracılı veritabanını geri yüklemesi gerekir. Bu geri yüklemenin diğer kiracıları etkilemesi, yönetim işlemlerinin her bir kiracının ayrıntılı düzeyinde olduğunu onaylar.

E. Çok kiracılı veritabanlarıyla çok kiracılı uygulama

Başka bir kullanılabilir düzen, çok kiracılı bir veritabanında birçok kiracı depolamaktır. Uygulama örneğinde herhangi bir sayıda çok kiracılı veritabanı olabilir. Belirli bir kiracıdaki verilerin seçmeli olarak alınabilmesi için çok kiracılı veritabanının şemasında bir veya daha fazla kiracı tanımlayıcı sütunu olmalıdır. Ayrıca, şemada yalnızca bir kiracı alt kümesi tarafından kullanılan birkaç tablo veya sütun gerekebilir. 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 edilir

Veri: Çok kiracılı bir veritabanı mutlaka kiracı yalıtımını feda eder. Birden çok kiracının verileri tek bir veritabanında birlikte depolanır. Geliştirme sırasında sorguların hiçbir zaman birden fazla kiracıdan veri göstermediğinden emin olun. SQL Veritabanı, sorgudan döndürülen verilerin kapsamının tek bir kiracıda olmasını zorunlu kabilen satır düzeyi güvenliği destekler.

Işleme: Çok kiracılı bir veritabanı, işlem ve depolama kaynaklarını tüm kiracıları arasında paylaşır. Bir bütün olarak veritabanı, kabul edilebilir bir performans sergilediğinden emin olmak için izlenebilir. Ancak Azure sisteminin bu kaynakların tek bir kiracı tarafından kullanımını izlemenin veya yönetmenin yerleşik bir yolu yoktur. Bu nedenle, çok kiracılı veritabanı gürültülü komşularla karşılaşma riskini artırır ve aşırı etkin bir kiracının iş yükü aynı veritabanındaki diğer kiracıların performans deneyimini etkiler. Ek uygulama düzeyinde izleme, kiracı düzeyinde performansı izleyebilir.

Daha düşük maliyet

Genel olarak, çok kiracılı veritabanları kiracı başına en düşük maliyete sahiptir. Tek bir veritabanının kaynak maliyetleri, eşdeğer boyuttaki elastik havuza göre daha düşüktür. Buna ek olarak, kiracıların yalnızca sınırlı depolama alanına ihtiyaç duyduğu senaryolar için, potansiyel olarak milyonlarca kiracı tek bir veritabanında depolanabilir. Hiçbir elastik havuz milyonlarca veritabanı içeremez. Ancak, havuz başına 1000 veritabanı ve 1000 havuz içeren bir çözüm, yönetilmez olma riskiyle milyonların ölçeğine ulaşabilir.

Çok kiracılı bir veritabanı modelinin iki varyasyonu, parçalı çok kiracılı modelin en esnek ve ölçeklenebilir olmasıyla birlikte aşağıda anlatılmaktadır.

F. Tek bir çok kiracılı veritabanı ile çok kiracılı uygulama

En basit çok kiracılı veritabanı düzeni, tüm kiracıların verilerini barındırmak için tek bir veritabanı kullanır. Daha fazla kiracı eklendikçe, veritabanı daha fazla depolama ve işlem kaynağıyla ölçeklendirilir. Her zaman nihai bir ölçek sınırı olsa da bu ölçeği artırma gerekli olabilir. Ancak, bu sınıra ulaşılmadan çok önce veritabanı yönetilemez hale gelir.

Tek tek kiracılara odaklanan yönetim işlemlerinin çok kiracılı bir veritabanında uygulanması daha karmaşıktır. Büyük ölçekte bu işlemler kabul edilemez şekilde yavaşlayabilir. Bir örnek, yalnızca bir kiracı için verilerin belirli bir noktaya geri yüklenmesidir.

G. Parçalı çok kiracılı veritabanlarıyla çok kiracılı uygulama

Çoğu SaaS uygulaması aynı anda yalnızca bir kiracının verilerine erişmektedir. Bu erişim düzeni, kiracı verilerinin birden çok veritabanına veya parçaya dağıtılmasını sağlar ve burada herhangi bir kiracının tüm verileri tek bir parçada yer alır. Çok kiracılı veritabanı deseniyle birlikte parçalı model neredeyse sınırsız ölçeklendirmeye olanak tanır.

Parçalı çok kiracılı veritabanlarıyla çok kiracılı uygulamanın tasarımı.

Parçaları yönetme

Parçalama, hem tasarım hem de işletim yönetimine karmaşıklık ekler. Kiracılar ve veritabanları arasındaki eşlemenin korunduğu bir katalog gereklidir. Ayrıca, parçaları ve kiracı popülasyonunu yönetmek için yönetim yordamları gerekir. Örneğin, yordamlar parça ekleyip kaldırmak ve kiracı verilerini parçalar arasında taşımak için tasarlanmalıdır. Ölçeklendirmenin bir yolu, yeni bir parça eklemek ve yeni kiracılarla doldurmaktır. Diğer zamanlarda, yoğun olarak doldurulmuş bir parça daha az yoğun doldurulmuş iki parçaya bölebilirsiniz. Birkaç kiracı taşındıktan veya kullanımdan kaldırıldıktan sonra seyrek doldurulan parçaları birleştirebilirsiniz. Birleştirme daha uygun 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çalama kitaplığı ve katalog veritabanıyla birlikte çalışan bir bölme/birleştirme aracı sağlar. Sağlanan 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 ve etkilenen kiracıları taşımadan önce çevrimdışı olarak işaretler. Taşıma sonrasında uygulama kataloğu yeni eşlemeyle yeniden güncelleştirir ve kiracıyı yeniden çevrimiçi olarak işaretler.

Daha küçük veritabanları daha kolay yönetilir

Kiracıları birden çok veritabanına dağıtarak parçalanmış çok kiracılı çözüm, daha kolay yönetilen daha küçük veritabanlarına neden olur. Örneğin, belirli bir kiracıyı önceki bir zamana geri yüklemek için artık tüm kiracıları içeren daha büyük bir veritabanı yerine yedekten tek bir daha küçük veritabanının geri yüklenmesi gerekir. İş yükünü ve yönetim çalışmalarını dengelemek için veritabanı boyutu ve veritabanı başına kiracı sayısı seçilebilir.

Şemadaki kiracı tanımlayıcısı

Kullanılan parçalama yaklaşımına bağlı olarak, veritabanı şemasına ek kısıtlamalar uygulanabilir. SQL Veritabanı bölme/birleştirme uygulaması, şemanın genellikle kiracı tanımlayıcısı olan parçalama anahtarını içermesini gerektirir. Kiracı tanımlayıcısı, tüm parçalı tabloların birincil anahtarının başındaki öğedir. Kiracı tanımlayıcısı, bölme/birleştirme uygulamasının belirli bir kiracıyla ilişkili verileri hızla bulmasını ve taşımasını sağlar.

Parçalar için elastik havuz

Parçalı çok kiracılı veritabanları elastik havuzlara yerleştirilebilir. Genel olarak, bir havuzda çok sayıda tek kiracılı veritabanının olması, birkaç çok kiracılı veritabanında çok sayıda kiracı olması kadar uygun maliyetlidir. Çok kiracılı veritabanları, görece etkin olmayan çok sayıda kiracı olduğunda avantajlıdır.

H. Karma parçalı çok kiracılı veritabanı modeli

Karma modelde, tüm veritabanlarının şemalarında kiracı tanımlayıcısı bulunur. Veritabanlarının tümü birden fazla kiracı depolayabilir ve veritabanları parçalanabilir. Bu nedenle şema açısından bunların tümü çok kiracılı veritabanlarıdır. Ancak uygulamada bu veritabanlarından bazıları yalnızca bir kiracı içerir. Ne olursa olsun, belirli bir veritabanında depolanan kiracıların miktarının veritabanı şeması üzerinde hiçbir etkisi yoktur.

Kiracıları taşıma

İstediğiniz zaman belirli bir kiracıyı kendi çok kiracılı veritabanına taşıyabilirsiniz. Ayrıca istediğiniz zaman fikrinizi değiştirebilir ve kiracıyı birden çok kiracı içeren bir veritabanına geri taşıyabilirsiniz. Ayrıca, yeni veritabanını sağladığınızda yeni tek kiracılı veritabanına kiracı atayabilirsiniz.

Karma model, tanımlanabilir kiracı gruplarının kaynak gereksinimleri arasında büyük farklar olduğunda ortaya çıkıyor. Örneğin, ücretsiz deneme sürümüne katılan kiracıların abone olan kiracılarla aynı yüksek performans düzeyinin garanti edilmediğini varsayalım. İ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ına yönelik olabilir. Ücretsiz 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ını ödeyen bir abone kendi yeni tek kiracılı veritabanına taşınabilir.

Havuzlar

Bu karma modelde, kiracı başına veritabanı maliyetlerini azaltmak için abone kiracıları için tek kiracılı veritabanları kaynak havuzlarına yerleştirilebilir. Bu, kiracı başına veritabanı modelinde de gerçekleştirilir.

I. Kiracı modelleri karşılaştırması

Aşağıdaki tabloda ana kiracı modelleri arasındaki farklar özetlemektedir.

Ölçüm Tek başına uygulama Kiracı başına veritabanı Parçalı çok kiracılı
Ölçek Orta
1-100'ler
Çok yüksek
1-100.000s
Sınırsız
1-1.000.000s
Kiracı yalıtımı Çok yüksek Yüksek Düşük; tek bir kiracı (MT db'de tek başınadır) dışında.
Kiracı başına veritabanı maliyeti Yüksek; tepeler için boyutlandırılır. Düşük; havuzları kullanılır. MT DB'lerdeki küçük kiracılar için en düşük.
Performans izleme ve yönetim Yalnızca kiracı başına Toplama + kiracı başına Toplama; ancak yalnızca tek tekler için kiracı başınadır.
Geliştirme karmaşıklığı Düşük Düşük Orta; parçalama nedeniyle.
operasyonel karmaşıklık Düşük-Yüksek. Tek tek basit, büyük ölçekte karmaşık. Düşük-Orta. Desenler büyük ölçekte karmaşıklığı ele alır. Düşük-Yüksek. Bireysel kiracı yönetimi karmaşıktır.

Sonraki adımlar