Parçalı çok kiracılı bir Azure SQL Veritabanı kullanarak SaaS uygulamasında yeni kiracılar sağlama ve katalog oluşturma

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

Bu makale, çok kiracılı parçalı veritabanı modelinde veya deseninde yeni kiracıların sağlanması ve kataloglanması konularını kapsar.

Bu makalenin iki ana bölümü vardır:

  • Yeni kiracıların sağlanması ve kataloglanmasıyla ilgili kavramsal tartışma.

  • Sağlama ve kataloglama işlemini gerçekleştiren PowerShell betik kodunu vurgulayan öğretici.

    • Öğreticide, çok kiracılı parçalı veritabanı desenine uyarlanmış Wingtip Biletleri SaaS uygulaması kullanılmaktadır.

Veritabanı deseni

Bu bölüme ek olarak, çok kiracılı parçalı veritabanı deseninin kavramlarını ele alan birkaç bölüm daha ele alınmaktadır.

Bu çok kiracılı parçalı modelde, her veritabanının içindeki tablo şemaları, kiracı verilerini depolayan tabloların birincil anahtarına bir kiracı anahtarı içerir. Kiracı anahtarı, her veritabanının 0, 1 veya birçok kiracı depolamasını sağlar. Parçalı veritabanlarının kullanılması, uygulama sisteminin çok fazla sayıda kiracıyı desteklemesini kolaylaştırır. Herhangi bir kiracının tüm verileri tek bir veritabanında depolanır. Çok sayıda kiracı, çok sayıda parçalı veritabanına dağıtılır. Katalog veritabanı, her kiracının kendi veritabanına eşlemesini depolar.

Yalıtım ve düşük maliyet karşılaştırması

Tamamen kendi başına bir veritabanına sahip olan kiracı, yalıtım avantajlarından yararlanır. Kiracı, diğer kiracılar üzerindeki etkiyle kısıtlanmadan veritabanını daha önceki bir tarihe geri yükleyebilir. Veritabanı performansı, diğer kiracılardan ödün vermek zorunda kalmadan bir kiracı için en iyi duruma getirilecek şekilde ayarlanabilir. Sorun, yalıtım maliyetinin veritabanını diğer kiracılarla paylaşma maliyetinden daha yüksek olmasıdır.

Yeni bir kiracı sağlandığında, veritabanını diğer kiracılarla paylaşabilir veya kendi yeni veritabanına yerleştirilebilir. Daha sonra fikrinizi değiştirebilir ve veritabanını başka bir duruma taşıyabilirsiniz.

Birden çok kiracıya ve tek kiracıya sahip veritabanları, her kiracı için maliyeti veya yalıtımı iyileştirmek amacıyla aynı SaaS uygulamasında karıştırılır.

Kiracı kataloğu ile parçalı çok kiracılı veritabanı uygulaması

Kiracı kataloğu düzeni

Her biri en az bir kiracı içeren iki veya daha fazla veritabanınız varsa, uygulamanın geçerli ilgilendiğiniz kiracıyı depolayan veritabanını bulmanın bir yolu olmalıdır. Katalog veritabanı bu eşlemeyi depolar.

Kiracı anahtarı

Her kiracı için Wingtip uygulaması, kiracı anahtarı olan benzersiz bir anahtar türetebilir. Uygulama, kiracı adını web sayfası URL'sinden ayıklar. Uygulama, anahtarı almak için adı karma olarak ekler. Uygulama, kataloğa erişmek için anahtarını kullanır. Katalog, kiracının depolandığı veritabanı hakkındaki bilgilere çapraz başvurur. Uygulama bağlanmak için veritabanı bilgilerini kullanır. Diğer kiracı anahtar düzenleri de kullanılabilir.

Katalog kullanmak, kiracı veritabanının adı veya konumunun sağlama sonrasında uygulamanın kesintiye uğramadan değiştirilmesini sağlar. Çok kiracılı bir veritabanı modelinde katalog, bir kiracının veritabanları arasında taşınmasını sağlar.

Konumun ötesindeki kiracı meta verileri

Katalog, kiracının bakım veya diğer eylemler için çevrimdışı olup olmadığını da gösterebilir. Katalog, aşağıdaki öğeler gibi ek kiracı veya veritabanı meta verilerini depolamak için genişletilebilir:

  • Bir veritabanının hizmet katmanı veya sürümü.
  • Veritabanı şemasının sürümü.
  • Kiracı adı ve SLA'sı (hizmet düzeyi sözleşmesi).
  • Uygulama yönetimini, müşteri desteğini veya devops işlemlerini etkinleştirmeye yönelik bilgiler.

Katalog, analiz amacıyla kiracılar arası raporlamayı, şema yönetimini ve veri ayıklamayı etkinleştirmek için de kullanılabilir.

Elastik Veritabanı İstemci Kitaplığı

Wingtip'te katalog tenantcatalog veritabanında uygulanır. Tenantcatalog, Elastik Veritabanı İstemci Kitaplığı'nın (EDCL) Parça Yönetimi özellikleri kullanılarak oluşturulur. Kitaplık, bir uygulamanın veritabanında depolanan bir parça eşlemesi oluşturmasına, yönetmesine ve kullanmasına olanak tanır. Parça eşlemesi, kiracı anahtarına parçalı veritabanı anlamına gelen parçasıyla çapraz başvuruda bulunur.

Kiracı sağlama sırasında, parça eşlemesinde girdileri oluşturmak için uygulamalardan veya PowerShell betiklerinden EDCL işlevleri kullanılabilir. Daha sonra doğru veritabanına bağlanmak için EDCL işlevleri kullanılabilir. EDCL, katalog veritabanındaki trafiği en aza indirmek ve bağlanma işlemini hızlandırmak için bağlantı bilgilerini önbelleğe alır.

Önemli

Doğrudan erişim aracılığıyla katalog veritabanındaki verileri düzenlemeyin ! Veri bozulması riskinin yüksek olması nedeniyle doğrudan güncelleştirmeler desteklenmez. Bunun yerine, eşleme verilerini yalnızca EDCL API'lerini kullanarak düzenleyin.

Kiracı sağlama düzeni

Denetim Listesi

Mevcut bir paylaşılan veritabanına yeni bir kiracı sağlamak istediğinizde, paylaşılan veritabanının aşağıdaki soruları sormanız gerekir:

  • Yeni kiracı için yeterli alanı var mı?
  • Yeni kiracı için gerekli başvuru verilerini içeren tablolar var mı yoksa veriler eklenebilir mi?
  • Yeni kiracı için temel şemanın uygun varyasyonu var mı?
  • Yeni kiracıya yakın uygun coğrafi konumda mı?
  • Yeni kiracı için doğru hizmet katmanında mı?

Yeni kiracının kendi veritabanında yalıtılmasını istediğinizde, kiracının belirtimlerini karşılayacak şekilde oluşturabilirsiniz.

Sağlama tamamlandıktan sonra kiracıyı kataloğa kaydetmeniz gerekir. Son olarak, uygun parçaya başvurmak için kiracı eşlemesi eklenebilir.

Şablon veritabanı

SQL betiklerini yürüterek, bacpac dağıtarak veya şablon veritabanını kopyalayarak veritabanını sağlayın. Wingtip uygulamaları, yeni kiracı veritabanları oluşturmak için bir şablon veritabanı kopyalar.

Her uygulama gibi Wingtip de zamanla gelişecektir. Bazen Wingtip veritabanında değişiklik yapılmasını gerektirir. Değişiklikler aşağıdaki öğeleri içerebilir:

  • Yeni veya değiştirilmiş şema.
  • Yeni veya değiştirilmiş başvuru verileri.
  • En iyi uygulama performansını sağlamak için rutin veritabanı bakım görevleri.

SaaS uygulamasıyla, bu değişikliklerin oldukça büyük olabilecek bir kiracı veritabanı filosunda eşgüdümlü şekilde dağıtılması gerekir. Bu değişikliklerin gelecekteki kiracı veritabanlarında olması için sağlama işlemine dahil edilmesi gerekir. Bu sınama şema yönetimi öğreticisinde daha ayrıntılı olarak incelenmiştir.

Betikler

Bu öğreticideki kiracı sağlama betikleri aşağıdaki senaryoların ikisini de destekler:

  • Diğer kiracılarla paylaşılan mevcut bir veritabanına kiracı sağlama.
  • Bir kiracıyı kendi veritabanına sağlama.

Daha sonra kiracı verileri başlatılır ve katalog parça eşlemesine kaydedilir. Örnek uygulamada, birden çok kiracı içeren veritabanlarına kiracı1 veya kiracılar2 gibi genel bir ad verilir. Tek bir kiracı içeren veritabanlarına kiracının adı verilir. Katalog kullanımı veritabanına herhangi bir adın atanmasına izin verdiğinden, örnekte kullanılan belirli adlandırma kuralları desenin kritik bir parçası değildir.

Öğretici başlıyor

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Çok kiracılı bir veritabanına kiracı sağlama
  • Tek kiracılı bir veritabanına kiracı sağlama
  • Hem çok kiracılı hem de tek kiracılı veritabanlarına bir grup kiracı sağlama
  • Bir kataloğa veritabanı ve kiracı eşlemesi kaydetme

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdaki ön koşulların karşılandığından emin olun:

Diğer kiracılarla paylaşılan bir veritabanına kiracı sağlama

Bu bölümde, PowerShell betikleri tarafından kullanılabilecek sağlama için önemli eylemlerin listesini görürsünüz. Ardından koddaki eylemleri görmek üzere betiklerde adım adım ilerleyebilmek için PowerShell ISE hata ayıklayıcısını kullanırsınız.

Sağlamanın başlıca eylemleri

Aşağıda, adım adım ilerlediğiniz sağlama iş akışının önemli öğeleri bulunur:

  • Yeni kiracı anahtarını hesaplama: Kiracı adından kiracı anahtarı oluşturmak için bir karma işlevi kullanılır.

  • Kiracı anahtarının zaten var olup olmadığını denetleyin: Anahtarın önceden kaydedilmediğinden emin olmak için katalog denetlendi.

  • Varsayılan kiracı veritabanında kiracıyı başlatma: Kiracı veritabanı, yeni kiracı bilgilerini eklemek için güncelleştirilir.

  • Kiracıyı kataloğa kaydetme: Yeni kiracı anahtarı ile mevcut tenants1 veritabanı arasındaki eşleme kataloğa eklenir.

  • Kiracının adını katalog uzantısı tablosuna ekleyin: Mekan adı katalogdaki Kiracılar tablosuna eklenir. Bu ekleme, Katalog veritabanının uygulamaya özgü ek verileri destekleyecek şekilde nasıl genişletilebileceğini gösterir.

  • Yeni kiracı için Etkinlikler sayfasını açın: Bushwillow Blues olayları sayfası tarayıcıda açılır.

    Yeni bir kiracının Olaylar sayfasını gösteren ekran görüntüsü.

Hata ayıklayıcı adımları

Wingtip uygulamasının paylaşılan veritabanında yeni kiracı sağlamayı nasıl uyguladığını anlamak için bir kesme noktası ekleyin ve iş akışında ilerleyin:

  1. PowerShell ISE'de ...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 açın ve aşağıdaki parametreleri ayarlayın:

    • = $TenantName Bushwillow Blues, yeni mekanın adı.
    • = $VenueType blues, önceden tanımlanmış mekan türlerinden biri: blues, klasikmusik, dans, caz, judo, motosiklet, çok amaçlı, opera, rockmusic, futbol (küçük harf, boşluk yok).
    • = $DemoScenario 1, diğer kiracılarla paylaşılan bir veritabanında kiracı sağlamak için.
  2. İmlecinizi 38. satırdaki şu satırın herhangi bir yerine koyarak bir kesme noktası ekleyin: New-Tenant ' ve ardından F9 tuşuna basın.

    Yeni Kiracı'nın bulunduğu satırı vurgulayan ekran görüntüsü.

  3. F5 tuşuna basarak betiği çalıştırın.

  4. Betik yürütme kesme noktasında durdurulduğunda, koda girmek için F11 tuşuna basın.

    Hata Ayıklama menüsü açık ve Adımla seçeneğinin seçili olduğu Windows PowerShell ISE'yi gösteren ekran görüntüsü.

  5. Komut dosyasının yürütülmesini izlemek için F10 ve F11hata ayıklama menü seçeneklerini kullanarak çağrılan işlevlere geçin veya işleve geçin.

PowerShell betiklerinde hata ayıklama hakkında daha fazla bilgi için bkz. PowerShell betikleriyle çalışma ve hata ayıklama ipuçları.

Kendi veritabanında kiracı sağlama

Sağlamanın başlıca eylemleri

Betiği izlerken ilerlediğiniz iş akışının önemli öğeleri şunlardır:

  • Yeni kiracı anahtarını hesaplama: Kiracı adından kiracı anahtarı oluşturmak için bir karma işlevi kullanılır.

  • Kiracı anahtarının zaten var olup olmadığını denetleyin: Anahtarın önceden kaydedilmediğinden emin olmak için katalog denetlendi.

  • Yeni kiracı veritabanı oluşturma: Veritabanı, Resource Manager şablonu kullanılarak basetenantdb veritabanı kopyalanarak oluşturulur. Yeni veritabanı adı, kiracının adını temel alır.

  • Kataloğa veritabanı ekleme: Yeni kiracı veritabanı katalogda parça olarak kaydedilir.

  • Varsayılan kiracı veritabanında kiracıyı başlatma: Kiracı veritabanı, yeni kiracı bilgilerini eklemek için güncelleştirilir.

  • Kiracıyı kataloğa kaydetme: Yeni kiracı anahtarı ile sequoiasoccer veritabanı arasındaki eşleme kataloğa eklenir.

  • Kiracı adı kataloğa eklenir: Mekan adı katalogdaki Kiracılar uzantısı tablosuna eklenir.

  • Yeni kiracının Etkinlikler sayfasını açın: Sequoia Futbol Etkinlikleri sayfası tarayıcıda açılır.

    Olay

Hata ayıklayıcı adımları

Şimdi kendi veritabanında bir kiracı oluştururken betik işleminde adım adım ilerleyin:

  1. Hala ...\Learning Modules\ProvisionTenants\ içindeDemo-ProvisionTenants.ps1 aşağıdaki parametreleri ayarlayın:

    • = $TenantName Sequoia Soccer, yeni mekanın adı.
    • = $VenueType futbol, önceden tanımlanmış mekan türlerinden biri: blues, klasik müzik, dans, caz, judo, motosiklet, çok amaçlı, opera, rockmusic, futbol (küçük harf, boşluk yok).
    • = $DemoScenario Bir kiracıyı kendi veritabanına sağlamak için 2.
  2. İmlecinizi 57. satırdaki şu satırın herhangi bir yerine koyarak yeni bir kesme noktası ekleyin: & $PSScriptRoot\New-TenantAndDatabase ' ve F9 tuşuna basın.

    kesme noktası

  3. F5 tuşuna basarak betiği çalıştırın.

  4. Betik yürütme kesme noktasında durdurulduğunda, koda girmek için F11 tuşuna basın. Yürütmeyi izlemek üzere işlevlere geçmek ve işlevlere geçmek için F10 ve F11 kullanın.

Kiracılardan oluşan bir toplu iş sağlama

Bu alıştırmada 17 kiracıdan oluşan bir toplu iş sağlanır. Çalışabileceğiniz daha fazla veritabanı olması için diğer Wingtip Biletleri öğreticilerini başlatmadan önce bu kiracı toplu işlemini sağlamanız önerilir.

  1. PowerShell ISE'de ...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 açın ve $DemoScenario parametresini 4 olarak değiştirin:

    • = $DemoScenario 4, paylaşılan bir veritabanına bir grup kiracı sağlamak için.
  2. F5 tuşuna basıp betiği çalıştırın.

Dağıtılan kiracı kümesini doğrulama

Bu aşamada, paylaşılan bir veritabanına dağıtılan kiracıların ve kendi veritabanlarına dağıtılan kiracıların bir karışımına sahip olursunuz. Azure portal, oluşturulan veritabanlarını incelemek için kullanılabilir. Azure portal, SQL sunucuları listesine göz atarak tenants1-mt-USER<> sunucusunu açın. SQL veritabanları listesi paylaşılan tenants1 veritabanını ve kendi veritabanındaki kiracıların veritabanlarını içermelidir:

veritabanı listesi

Azure portal kiracı veritabanlarını gösterse de, paylaşılan veritabanının içindeki kiracıları görmenize izin vermez. Kiracıların tam listesi Wingtip'in Olay Hub'ı web sayfasında ve kataloğa göz atılarak görülebilir.

Wingtip Biletleri olay hub'ı sayfasını kullanma

Tarayıcıda Olay Hub'ı sayfasını açın (http:events.wingtip-mt.< USER.trafficmanager.net>)

Katalog veritabanını kullanma

Kiracıların tam listesi ve her birine karşılık gelen veritabanı katalogda bulunabilir. Kiracı adını veritabanı adına birleştiren bir SQL görünümü sağlanır. Görünüm, katalogda depolanan meta verileri genişletmenin değerini güzel bir şekilde gösterir.

  • SQL görünümü tenantcatalog veritabanında kullanılabilir.
  • Kiracı adı Kiracılar tablosunda depolanır.
  • Veritabanı adı Parça Yönetimi tablolarında depolanır.
  1. SQL Server Management Studio'de (SSMS), catalog-mt konumundaki kiracılar sunucusuna bağlanın.< USER.database.windows.net>, Login = developer ve Password = P@ssword1

    SSMS bağlantısı iletişim kutusu

  2. SSMS Nesne Gezgini tenantcatalog veritabanındaki görünümlere göz atın.

  3. KiracılarExtended görünümüne sağ tıklayın ve İlk 1000 Satırı Seç'i seçin. Farklı kiracılar için kiracı adı ve veritabanı arasındaki eşlemeye dikkat edin.

    SSMS'de ExtendedTenants görünümü

Diğer sağlama düzenleri

Bu bölümde diğer ilginç sağlama desenleri ele alınmaktadır.

Elastik havuzlarda veritabanlarını önceden sağlama

Ön sağlama düzeni, elastik havuzlar kullanılırken faturalamanın veritabanları için değil havuz için olması gerçeğinden yararlanır. Bu nedenle veritabanları, ek maliyet olmadan ihtiyaç duyulmadan bir elastik havuza eklenebilir. Bu ön görüntü işleme, bir kiracıyı veritabanına sağlamak için geçen süreyi önemli ölçüde azaltır. Önceden sağlanan veritabanı sayısı, bir arabelleği beklenen sağlama oranına uygun tutmak için gerektiği şekilde ayarlanabilir.

Otomatik sağlama

Otomatik sağlama düzeninde, sunucuları, havuzları ve veritabanlarını gerektiği gibi otomatik olarak sağlamak için ayrılmış bir sağlama hizmeti kullanılır. Bu otomasyon, elastik havuzlardaki veritabanlarının önceden sağlanmasını içerir. Veritabanlarının kullanımdan alınması ve silinmesi durumunda elastik havuzlarda oluşan boşluklar, sağlama hizmeti tarafından istenen şekilde doldurulabilir.

Bu tür bir otomatik hizmet basit veya karmaşık olabilir. Örneğin, otomasyon birden çok coğrafyada sağlamayı işleyebilir ve olağanüstü durum kurtarma için coğrafi çoğaltma ayarlayabilir. Otomatik sağlama düzeniyle, bir istemci uygulaması veya betiği bir sağlama hizmeti tarafından işlenmek üzere kuyruğa bir sağlama isteği gönderir. Betik daha sonra tamamlanma durumunu algılamak için yoklama yapar. Ön sağlama kullanılırsa istekler hızlı bir şekilde işlenirken, arka plan hizmeti yeni bir veritabanının sağlanmasını yönetebilir.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Paylaşılan çok kiracılı veritabanına ve kendi veritabanına tek bir yeni kiracı sağlama
  • Ek kiracı grubu sağlama
  • Kiracıları sağlama ve kataloğa kaydetme ayrıntılarında adım adım ilerleyin

Performans izleme öğreticisini deneyin.