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 makalede, çok kiracılı parçalı veritabanı modelinde veya deseninde yeni kiracıların sağlanması ve kataloglanması yer alır.

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

Veritabanı deseni

Bu bölümün yanı sıra aşağıdaki birkaç bölüme ek olarak çok kiracılı parçalı veritabanı deseninin kavramları 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ında bir kiracı anahtarı içerir. Kiracı anahtarı, her veritabanının 0, 1 veya birçok kiracıyı 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 daha düşük maliyet karşılaştırması

Veritabanı olan bir 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 fazla 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 üzere aynı SaaS uygulamasında karıştırılır.

Sharded multi-tenant database app with tenant catalog

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 ilgi alanı kiracısını 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şvuruda bulunur. Uygulama bağlanmak için veritabanı bilgilerini kullanır. Diğer kiracı anahtar düzenleri de kullanılabilir.

Katalog kullanmak, sağlama sonrasında uygulamanın kesintiye uğramadan kiracı veritabanının adının veya konumunun değiştirilmesini sağlar. Çok kiracılı 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önetimi, müşteri desteği 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ını, yönetmesini ve kullanmasını sağlar. 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 EDCL işlevleri, parça eşlemesinde girdileri oluşturmak için uygulamalardan veya PowerShell betiklerinden kullanılabilir. Daha sonra EDCL işlevleri doğru veritabanına bağlanmak için 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ı kaldı 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.

Tüm uygulamalar gibi Wingtip de zaman içinde 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 haritasına kaydedilir. Örnek uygulamada, birden çok kiracı içeren veritabanlarına tenants1 veya tenants2 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şlar

Bu öğreticide aşağıdakilerin nasıl yapılacağı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
  • Katalogda 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 için betiklerde adım adım gezinmek için PowerShell ISE hata ayıklayıcısını kullanırsınız.

Sağlamanın önemli eylemleri

Aşağıda, adım adım ilerlediğiniz sağlama iş akışının temel öğ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 Olaylar sayfasını açın: Bushwillow Blues olayları sayfası tarayıcıda açılır.

    Screenshot that shows the Events page for a new tenant.

Hata ayıklayıcısı 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 dosyasını açın ve aşağıdaki parametreleri ayarlayın:

    • = $TenantName Bushwillow Blues, yeni bir mekanın adı.
    • = $VenueType blues, önceden tanımlanmış mekan türlerinden biri: blues, klasikmusik, dans, caz, judo, motorracing, çok amaçlı, opera, rockmusic, futbol (küçük harf, boşluk yok).
    • = $DemoScenario 1, paylaşılan bir veritabanındaki bir kiracıyı diğer kiracılarla sağlamak için.
  2. İmlecinizi 38. satırda, Yeni Kiracı ' yazan satırda herhangi bir yere yerleştirip F9 tuşuna basarak kesme noktası ekleyin.

    Screenshot that highlights the line that includes New Tenant.

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

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

    Screenshot shows the Windows PowerShell ISE with the Debug menu open and Step Into selected.

  5. F10 ve F11 hata ayıklama menü seçeneklerini kullanarak betiğin yürütülmesini izleyerek üzerine gidin veya çağrılan işlevlere geçin.

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

Kiracıyı kendi veritabanında sağlama

Sağlamanın önemli eylemleri

Betiği izlerken adım adım ilerlediğiniz iş akışının temel öğeleri aşağıdadı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ı, bir Resource Manager şablonu kullanılarak basetenantdb veritabanı kopyalanarak oluşturulur. Yeni veritabanı adı, kiracının adına bağlıdı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ı için Etkinlikler sayfasını açın: Sequoia Soccer Events sayfası tarayıcıda açılır.

    events

Hata ayıklayıcısı adımları

Şimdi kendi veritabanında kiracı oluştururken betik işlemine göz gezdirin:

  1. Hala ...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 dosyasında aşağıdaki parametreleri ayarlayın:

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

    break point

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

  4. Betik yürütme kesme noktasında durduktan sonra, kodun içine girmek için F11 tuşuna basın. Yürütmeyi izlemek için F10 ve F11'i kullanarak adım atlayın ve işlevlere geçin.

Bir grup kiracı 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 dosyasını açın ve $DemoScenario parametresini 4 olarak değiştirin:

    • = paylaşılan veritabanına bir grup kiracı sağlamak için 4 $DemoScenario.
  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ında, 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:

Screenshot of the tenants1-mt-USER server Overview page that highlights the databases.

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 Merkezi web sayfasında ve kataloğa göz atarak 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 kullanılabilir. 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'da (SSMS), catalog-mt konumundaki kiracı sunucusuna bağlanın.<USER.database.windows.net>, Login = developer ve Password = P@ssword1

    SSMS connection dialog

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

  3. TenantsExtended 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şlemeyi not edin.

    ExtendedTenants view in SSMS

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 veritabanlarının sayısı, beklenen sağlama oranına uygun bir arabellek 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ı kullanımdan kaldırılıp silinirse elastik havuzlarda oluşturduğu 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şlenecek bir kuyruğa sağlama isteği gönderir. Betik daha sonra tamamlanma durumunu algılamak için yoklar. Ö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önetir.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide, şunları öğrendiniz:

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

Performans izleme öğreticisini deneyin.