Dağıtılmış sorguları kullanarak kiracılar arası raporlama

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

Bu öğreticide, raporlama için kiracı veritabanları kümesinin tamamında dağıtılmış sorgular çalıştıracaksınız. Bu sorgular, Wingtip Biletleri SaaS kiracılarının günlük operasyonel verilerine gömülü içgörüleri ayıklayabilir. Bunu yapmak için katalog sunucusuna ek bir raporlama veritabanı dağıtır ve dağıtılmış sorguları etkinleştirmek için Elastik Sorgu'yu kullanırsınız.

Bu öğreticide şunları öğrenirsiniz:

  • Raporlama veritabanını dağıtma
  • Dağıtılmış sorguları tüm kiracı veritabanlarında çalıştırma
  • Her veritabanındaki genel görünümler kiracılar arasında verimli sorgulamayı nasıl etkinleştirebilir?

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

Kiracılar arası raporlama düzeni

cross-tenant distributed query pattern

SaaS uygulamalarıyla ilgili bir fırsat, uygulamanızın işleyişi ve kullanımı hakkında içgörüler elde etmek için bulutta depolanan çok miktarda kiracı verilerini kullanmaktır. Bu içgörüler, uygulama ve hizmetlerinizde özellik geliştirme, kullanılabilirlik iyileştirmeleri ve diğer yatırımlara yol gösterebilir.

Bu verilere tek bir çok kiracılı veritabanında erişim kolaydır, ancak binlerce veritabanına ölçekli olarak dağıtıldığında çok kolay değildir. Yaklaşımlardan biri, ortak şemaya sahip dağıtılmış bir veritabanı kümesinde sorgulamayı sağlayan Elastik Sorgu'yu kullanmaktır. Bu veritabanları farklı kaynak gruplarına ve aboneliklere dağıtılabilir, ancak ortak bir oturum açma bilgilerini paylaşmaları gerekir. Elastik Sorgu, dağıtılmış (kiracı) veritabanlarındaki tabloları veya görünümleri yansıtan dış tabloların tanımlandığı tek bir baş veritabanı kullanır. Bu baş veritabanına gönderilen sorgular, gerektiğinde kiracı veritabanlarına gönderilen sorgu kısımlarıyla birlikte dağıtılmış bir sorgu planı oluşturmak üzere derlenir. Elastik Sorgu, tüm kiracı veritabanlarının konumunu belirlemek için katalog veritabanındaki parça eşlemesini kullanır. Standart Transact-SQL kullanarak baş veritabanının kurulumu ve sorgusu kolaydır ve Power BI ve Excel gibi araçlardan sorgulamayı destekler.

Elastik Sorgu, sorguları kiracı veritabanları arasında dağıtarak canlı üretim verileri hakkında anında içgörü sağlar. Elastik Sorgu potansiyel olarak çok sayıda veritabanından veri çektiğinden, sorgu gecikme süresi tek bir çok kiracılı veritabanına gönderilen eşdeğer sorgulardan daha yüksek olabilir. Baş veritabanına döndürülen verileri en aza indirmek için sorgular tasarlar. Elastik Sorgu genellikle sık kullanılan veya karmaşık analiz sorguları veya raporları oluşturmak yerine az miktarda gerçek zamanlı veriyi sorgulamak için uygundur. Sorgular iyi performans göstermiyorsa, sorgunun hangi bölümünün uzak veritabanına gönderildiğini ve ne kadar veri döndürülmekte olduğunu görmek için yürütme planına bakın. Karmaşık toplama veya analitik işleme gerektiren sorgular, kiracı verilerini analiz sorguları için iyileştirilmiş bir veritabanına veya veri ambarı içine ayıklayarak daha iyi işlenebilir. Bu düzen, kiracı analizi öğreticisinde açıklanmıştır.

Wingtip Biletleri Kiracı Başına SaaS Veritabanı uygulama betiklerini alma

Wingtip Biletleri SaaS Çok Kiracılı Veritabanı betikleri ve uygulama kaynak kodu WingtipTicketsSaaS-DbPerTenant GitHub deposunda bulunur. Wingtip Biletleri SaaS betiklerini indirme ve engellemeyi kaldırma adımları için genel kılavuza göz atın.

Bilet satış verileri oluşturma

Daha ilginç bir veri kümesinde sorgu çalıştırmak için bilet oluşturucusunu çalıştırarak bilet satış verileri oluşturun.

  1. PowerShell ISE'de ...\Learning Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 betiğini açın ve aşağıdaki değeri ayarlayın:
    • $DemoScenario = 1, Tüm mekanlarda etkinlikler için bilet satın alın.
  2. Betiği çalıştırmak ve bilet satışları oluşturmak için F5 tuşuna basın. Betik çalışırken bu öğreticideki adımlara devam edin. Anahtar verileri Geçici dağıtılmış sorguları çalıştır bölümünde sorgulanır, bu nedenle bilet oluşturucunun tamamlanmasını bekleyin.

Genel görünümleri keşfetme

Wingtip Biletleri Kiracı Başına SaaS Veritabanı uygulamasında her kiracıya bir veritabanı verilir. Bu nedenle, veritabanı tablolarında yer alan verilerin kapsamı tek bir kiracının perspektifine göre belirlenir. Ancak, tüm veritabanlarında sorgu yaparken, Elastik Sorgu'nun verileri kiracıya göre parçalanmış tek bir mantıksal veritabanının parçası gibi ele alabilmesi önemlidir.

Bu desenin benzetimini yapmak için, kiracı veritabanına genel olarak sorgulanan tabloların her birine bir kiracı kimliği yansıtan bir 'genel' görünüm kümesi eklenir. Örneğin VenueEvents görünümü, Olaylar tablosundan yansıtılan sütunlara hesaplanan bir VenueId ekler. Benzer şekilde, VenueTicketPurchases ve VenueTickets görünümleri de ilgili tablolarından yansıtılan hesaplanan bir VenueId sütunu ekler. Bu görünümler, Bir VenueId sütunu mevcut olduğunda sorguları paralelleştirmek ve uygun uzak kiracı veritabanına göndermek için Elastik Sorgu tarafından kullanılır. Bu, döndürülen veri miktarını önemli ölçüde azaltır ve birçok sorgunun performansında önemli bir artışa neden olur. Bu genel görünümler tüm kiracı veritabanlarında önceden oluşturulmuştur.

  1. SSMS'yi açın ve tenants1-USER< sunucusuna bağlanın>.

  2. Veritabanları'yı genişletin, contosoconcerthall öğesine sağ tıklayın ve Yeni Sorgu'yu seçin.

  3. Tek kiracılı tablolar ile genel görünümler arasındaki farkı keşfetmek için aşağıdaki sorguları çalıştırın:

    -- The base Venue table, that has no VenueId associated.
    SELECT * FROM Venue
    
    -- Notice the plural name 'Venues'. This view projects a VenueId column.
    SELECT * FROM Venues
    
    -- The base Events table, which has no VenueId column.
    SELECT * FROM Events
    
    -- This view projects the VenueId retrieved from the Venues table.
    SELECT * FROM VenueEvents
    

Bu görünümlerde VenueId, Venue adının karması olarak hesaplanır, ancak benzersiz bir değer eklemek için herhangi bir yaklaşım kullanılabilir. Bu yaklaşım, kiracı anahtarının katalogda kullanılmak üzere hesaplanmış biçimine benzer.

Venues görünümünün tanımını incelemek için:

  1. Nesne Gezgini contosoconcerthall>Görünümlerini genişletin:

    Screenshot shows the contents of the Views node, including four types of Venue d b o.

  2. Dbo'ya sağ tıklayın . Mekanlarda.

  3. Yeni Sorgu Düzenleyicisi Penceresine>OLUŞTUR olarak>Betik Görünümü'nü seçin

VenueId'yi nasıl eklediklerini görmek için diğer Mekan görünümlerinden herhangi birini betikle.

Dağıtılmış sorgular için kullanılan veritabanını dağıtma

Bu alıştırmada adhocreporting veritabanı dağıtılır . Bu, tüm kiracı veritabanlarında sorgulama için kullanılan şemayı içeren baş veritabanıdır. Veritabanı, örnek uygulamadaki yönetimle ilgili tüm veritabanları için kullanılan sunucu olan mevcut katalog sunucusuna dağıtılır.

  1. PowerShell ISE'de ...\Learning Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 dosyasını açın.

  2. $DemoScenario = 2 değerini ayarlayın, Geçici raporlama veritabanını dağıtın.

  3. Betiği çalıştırmak ve adhocreporting veritabanını oluşturmak için F5 tuşuna basın.

Sonraki bölümde, dağıtılmış sorguları çalıştırmak için kullanılabilmesi için veritabanına şema ekleyebilirsiniz.

Dağıtılmış sorguları çalıştırmak için 'head' veritabanını yapılandırma

Bu alıştırma, tüm kiracı veritabanlarında sorgulamayı etkinleştirmek için adhocreporting veritabanına şema (dış veri kaynağı ve dış tablo tanımları) ekler.

  1. SQL Server Management Studio'yu açın ve önceki adımda oluşturduğunuz Geçici Raporlama veritabanına bağlanın. Veritabanının adı adhocreporting şeklindedir.

  2. SSMS'de ...\Learning Modules\Operational Analytics\Adhoc Reporting\ Initialize-AdhocReportingDB.sql dosyasını açın.

  3. SQL betiğini gözden geçirin ve not edin:

    Elastik Sorgu, kiracı veritabanlarının her birine erişmek için veritabanı kapsamlı bir kimlik bilgisi kullanır. Bu kimlik bilgilerinin tüm veritabanlarında kullanılabilir olması ve normalde bu sorguları etkinleştirmek için gereken en düşük haklara sahip olması gerekir.

    create credential

    Dış veri kaynağı olarak katalog veritabanıyla sorgular, sorgu çalıştırıldığı sırada kataloğa kayıtlı tüm veritabanlarına dağıtılır. Her dağıtım için sunucu adları farklı olduğundan bu betik, betiğin yürütüldüğü geçerli sunucudan (@@servername) katalog veritabanının konumunu alır.

    create external data source

    Önceki bölümde açıklanan ve DISTRIBUTION = SHARDED(VenueId) ile tanımlanan genel görünümlere başvuran dış tablolar. Her VenueId tek bir veritabanına eşleştiğinden, bu durum sonraki bölümde gösterildiği gibi birçok senaryonun performansını artırır.

    create external tables

    Oluşturulan ve doldurulan yerel VenueTypes tablosu. Bu başvuru veri tablosu tüm kiracı veritabanlarında yaygındır, bu nedenle burada yerel bir tablo olarak temsil edilebilir ve ortak verilerle doldurulabilir. Bazı sorgular için bu tablonun baş veritabanında tanımlanması, baş veritabanına taşınması gereken veri miktarını azaltabilir.

    create table

    Başvuru tablolarını bu şekilde eklerseniz, kiracı veritabanlarını her güncelleştirdiğinizde tablo şemasını ve verilerini güncelleştirdiğinizden emin olun.

  4. Betiği çalıştırmak ve adhocreporting veritabanını başlatmak için F5 tuşuna basın.

Artık dağıtılmış sorgular çalıştırabilir ve tüm kiracılar genelinde içgörüler toplayabilirsiniz!

Dağıtılmış sorguları çalıştırma

Artık adhocreporting veritabanı ayarlandıktan sonra bazı dağıtılmış sorgular çalıştırın. Sorgu işlemenin nerede gerçekleştiğini daha iyi anlamak için yürütme planını ekleyin.

Yürütme planını incelerken, ayrıntılar için plan simgelerinin üzerine gelin.

Unutmayın, dış veri kaynağı tanımlandığında DISTRIBUTION = SHARDED(VenueId) ayarının birçok senaryoda performansı artırdığıdır. Her VenueId tek bir veritabanına eşlendiğinden, filtreleme yalnızca gerekli verileri döndürerek uzaktan kolayca gerçekleştirilir.

  1. SSMS'de ...\Learning Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReportingQueries.sql dosyasını açın.

  2. Adhocreporting veritabanına bağlı olduğunuzdan emin olun.

  3. Sorgu menüsünü seçin ve Gerçek Yürütme Planını Ekle'ye tıklayın

  4. Şu anda hangi mekanlar kayıtlı? sorgusunu vurgulayın ve F5 tuşuna basın.

    Sorgu, tüm kiracıları sorgulamanın ve her kiracıdan veri döndürmenin ne kadar hızlı ve kolay olduğunu gösteren tüm mekan listesini döndürür.

    Planı inceleyin ve maliyetin tamamının uzak sorguda olduğunu görün. Her kiracı veritabanı sorguyu uzaktan yürütür ve mekan bilgilerini baş veritabanına döndürür.

    SELECT * FROM dbo.Venues

  5. Sonraki sorguyu seçin ve F5 tuşuna basın.

    Bu sorgu, kiracı veritabanlarından ve yerel VenueTypes tablosundan (adhocreporting veritabanındaki bir tablo olduğu için yerel) verileri birleştirir .

    Planı inceleyin ve maliyetin büyük çoğunluğunun uzak sorgu olduğunu görün. Her kiracı veritabanı, mekan bilgilerini döndürür ve kolay adı görüntülemek için yerel VenueTypes tablosuyla yerel bir birleşim gerçekleştirir.

    Join on remote and local data

  6. Şimdi en çok bilet satılan gün hangisi? sorgusunu seçin ve F5 tuşuna basın.

    Bu sorgu biraz daha karmaşık birleştirme ve toplama işlemi yapar. İşlemin çoğu uzaktan gerçekleştirilir. Her mekanın günlük bilet satış sayısını içeren yalnızca tek satırlar baş veritabanına döndürülür.

    query

Sonraki adımlar

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

  • Tüm kiracı veritabanlarında dağıtılmış sorguları çalıştırma
  • Bir raporlama veritabanı dağıtın ve dağıtılmış sorguları çalıştırmak için gereken şemayı tanımlayın.

Şimdi daha karmaşık analiz işlemleri için verileri ayrı bir analiz veritabanına ayıklamayı keşfetmek için Kiracı Analizi öğreticisini deneyin.

Ek kaynaklar