Bérlők közötti jelentéskészítés elosztott lekérdezésekkel

A következőre vonatkozik: Azure SQL Database

Ebben az oktatóanyagban elosztott lekérdezéseket futtat a bérlői adatbázisok teljes készletében jelentéskészítés céljából. Ezek a lekérdezések kinyerhetik a Wingtip Tickets SaaS-bérlők napi működési adataiba rejtett megállapításokat. Ehhez egy további jelentéskészítő adatbázist helyez üzembe a katalóguskiszolgálón, és az Elastic Query használatával engedélyezi az elosztott lekérdezéseket.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Jelentéskészítési adatbázis üzembe helyezése
  • Elosztott lekérdezések futtatása az összes bérlői adatbázisban
  • Hogyan teszik lehetővé az egyes adatbázisok globális nézetei a bérlők közötti hatékony lekérdezést?

Az oktatóanyag teljesítéséhez a következő előfeltételeknek kell teljesülnie:

Bérlők közötti jelentéskészítési minta

cross-tenant distributed query pattern

Az SaaS-alkalmazások egyik lehetősége, hogy a felhőben tárolt bérlői adatok nagy részét felhasználva betekintést nyerhet az alkalmazás működésébe és használatába. Ezek az elemzések segíthetnek a funkciók fejlesztésében, a használhatósági fejlesztésekben és az alkalmazásokba és szolgáltatásokba történő egyéb beruházásokban.

Ezeknek az adatoknak egyetlen több bérlős adatbázisban történő elérése könnyű, de nem olyan egyszerű, ha méretezve akár több ezer adatbázis között vannak elosztva. Az egyik módszer az Elastic Query használata, amely lehetővé teszi a közös sémával rendelkező elosztott adatbázisok közötti lekérdezést. Ezek az adatbázisok különböző erőforráscsoportok és előfizetések között terjeszthetők, de közös bejelentkezést kell megosztaniuk. Az Elastic Query egyetlen adatbázist használ, amelyben külső táblák vannak definiálva, amelyek táblákat vagy nézeteket tükröznek az elosztott (bérlői) adatbázisokban. Az ebbe a központi adatbázisba küldött lekérdezések le lesznek fordítva elosztott lekérdezési terv készítéséhez, a lekérdezés részei pedig igény szerint le lesznek küldve a bérlői adatbázisokba. Az Elastic Query a katalógusadatbázis szegmenstérképét használja az összes bérlői adatbázis helyének meghatározásához. A központi adatbázis beállítása és lekérdezése egyszerű a standard Transact-SQL használatával, és támogatja az olyan eszközökről való lekérdezést, mint a Power BI és az Excel.

A lekérdezések bérlői adatbázisok közötti elosztásával az Elastic Query azonnali betekintést nyújt az élő éles adatokba. Mivel az Elastic Query potenciálisan sok adatbázisból kér le adatokat, a lekérdezések késése magasabb lehet, mint az egyetlen több-bérlős adatbázisba küldött egyenértékű lekérdezések. Tervezzen lekérdezéseket a fő adatbázisba visszaadott adatok minimalizálása érdekében. A rugalmas lekérdezés gyakran alkalmas kis mennyiségű valós idejű adat lekérdezésére, szemben a gyakran használt vagy összetett elemzési lekérdezések vagy jelentések készítésével. Ha a lekérdezések nem teljesítenek megfelelően, tekintse meg a végrehajtási tervet , és nézze meg, hogy a lekérdezés mely részét küldi le a rendszer a távoli adatbázisba, és mennyi adatot ad vissza. Az összetett összesítést vagy elemzési feldolgozást igénylő lekérdezések jobban kezelhetők a bérlői adatok elemzési lekérdezésekhez optimalizált adatbázisba vagy adattárházba való kinyerésével. Ezt a mintát a bérlőelemzési oktatóanyag ismerteti.

A Wingtip Tickets SaaS-adatbázis bérlőnkénti alkalmazásszkriptjeinek lekérése

A Wingtip Tickets SaaS Több-bérlős adatbázis szkriptjei és az alkalmazás forráskódja a WingtipTicketsSaaS-DbPerTenant GitHub adattárban érhető el. Tekintse meg a Wingtip Tickets SaaS-szkriptek letöltésének és letiltásának feloldásához szükséges általános útmutatót .

Jegyértékesítési adatok létrehozása

Ha érdekesebb adatkészleten szeretne lekérdezéseket futtatni, hozzon létre jegyértékesítési adatokat a jegygenerátor futtatásával.

  1. A PowerShell I Standard kiadás nyissa meg a ...\Tanulás Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 szkriptet, és állítsa be a következő értéket:
    • $DemoScenario = 1, Jegyek vásárlása minden helyszínen.
  2. Nyomja le az F5 billentyűt a szkript futtatásához és a jegyeladások létrehozásához. Amíg a szkript fut, folytassa az oktatóanyag lépéseit. A jegyadatok lekérdezése az alkalmi elosztott lekérdezések futtatása szakaszban történik, ezért várja meg, amíg a jegygenerátor befejeződik.

A globális nézetek megismerése

A Wingtip Tickets SaaS-adatbázis bérlőnkénti alkalmazásában minden bérlő kap egy adatbázist. Így az adatbázistáblákban található adatok egyetlen bérlő szempontjából hatókörbe tartoznak. Az összes adatbázis lekérdezésekor azonban fontos, hogy az Elastic Query úgy kezelje az adatokat, mintha egy bérlő által skálázott logikai adatbázis része lenne.

A minta szimulálásához a rendszer hozzáad egy "globális" nézetet a bérlői adatbázishoz, amely egy bérlőazonosítót vetít ki a globálisan lekérdezett táblákba. Az VenueEvents nézet például hozzáad egy számított VenueId azonosítót az Események táblából vetített oszlopokhoz. Hasonlóképpen, az VenueTicketPurchases és az VenueTickets nézetek hozzáadnak egy számított VenueId oszlopot, amelyet a megfelelő táblákból vetítettek ki. Ezeket a nézeteket az Elastic Query a lekérdezések párhuzamosítására és a megfelelő távoli bérlői adatbázisba való leküldésére használja, ha egy VenueId oszlop jelenik meg. Ez jelentősen csökkenti a visszaadott adatok mennyiségét, és jelentős teljesítménynövekedést eredményez számos lekérdezés esetében. Ezek a globális nézetek előre lettek létrehozva az összes bérlői adatbázisban.

  1. Nyissa meg az SSMS-t, és csatlakozzon a bérlők1-U< Standard kiadás R-kiszolgálóhoz>.

  2. Bontsa ki az Adatbázisok elemet, kattintson a jobb gombbal a contosoconcerthallra, és válassza az Új lekérdezés lehetőséget.

  3. Futtassa az alábbi lekérdezéseket az egybérlős táblák és a globális nézetek közötti különbség feltárásához:

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

Ezekben a nézetekben az VenueId a Helyszín név kivonataként van kiszámítva, de bármilyen megközelítéssel bevezethető egy egyedi érték. Ez a megközelítés hasonló ahhoz, ahogyan a bérlőkulcsot a katalógusban való használatra számítják ki.

A Helyszín nézet definíciójának vizsgálata:

  1. Az Object Explorerben bontsa ki a contosoconcerthall>nézeteit:

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

  2. Kattintson a jobb gombbal a dbo elemre. Helyszínek.

  3. Válassza a Szkript nézetet CREATE to>New Lekérdezésszerkesztő Window (Szkriptnézet létrehozása új Lekérdezésszerkesztő ablakként>) lehetőséget

A Többi Helyszín nézet bármelyikének szkriptje, hogy lássa, hogyan adhatja hozzá az VenueId azonosítót.

Elosztott lekérdezésekhez használt adatbázis üzembe helyezése

Ez a gyakorlat üzembe helyezi az adhocreporting adatbázist . Ez a fő adatbázis tartalmazza az összes bérlői adatbázis lekérdezéséhez használt sémát. Az adatbázis a meglévő katalóguskiszolgálón van üzembe helyezve, amely a mintaalkalmazás összes felügyeleti adatbázisához használt kiszolgáló.

  1. a PowerShell I Standard kiadás-ban nyissa meg a ...\Tanulás Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 fájlt.

  2. Állítsa be $DemoScenario = 2, az alkalmi jelentéskészítési adatbázis üzembe helyezését.

  3. Nyomja le az F5 billentyűt a szkript futtatásához és az adhocreporting adatbázis létrehozásához.

A következő szakaszban sémát ad hozzá az adatbázishoz, hogy az elosztott lekérdezések futtatására használható legyen.

A "head" adatbázis konfigurálása elosztott lekérdezések futtatásához

Ez a gyakorlat sémát (külső adatforrást és külső tábladefiníciókat) ad hozzá az adhocreporting adatbázishoz, hogy az összes bérlői adatbázis lekérdezését lehetővé tegye.

  1. Nyissa meg az SQL Server Management Studiót, és csatlakozzon az előző lépésben létrehozott Adhoc Reporting-adatbázishoz. Az adatbázis neve adhocreporting.

  2. Nyissa meg a ...\Tanulás Modules\Operational Analytics\Adhoc Reporting\ Initialize-AdhocReportingDB.sql fájlt az SSMS-ben.

  3. Tekintse át az SQL-szkriptet, és jegyezze fel:

    Az Elastic Query adatbázis-hatókörű hitelesítő adatokat használ az egyes bérlői adatbázisok eléréséhez. Ennek a hitelesítő adatnak minden adatbázisban elérhetőnek kell lennie, és általában meg kell adni a lekérdezések engedélyezéséhez szükséges minimális jogosultságokat.

    create credential

    Mivel a katalógusadatbázis külső adatforrásként szolgál, a lekérdezések a lekérdezés futtatásakor a katalógusban regisztrált összes adatbázisra el lesznek terjesztve. Mivel a kiszolgálónevek minden üzemelő példány esetében eltérőek, ez a szkript lekéri a katalógusadatbázis helyét az aktuális kiszolgálóról (@@servername), ahol a szkriptet végrehajtják.

    create external data source

    Az előző szakaszban leírt globális nézetekre hivatkozó és a DISTRIBUTION = SHARDED(VenueId) kifejezéssel definiált külső táblák. Mivel minden VenueId egy adott adatbázisra van leképezve, ez számos forgatókönyv esetében javítja a teljesítményt a következő szakaszban látható módon.

    create external tables

    A létrehozott és kitöltött Local Table VenueTypes tábla. Ez a referenciaadattábla minden bérlői adatbázisban gyakori, ezért itt helyi táblaként jelenik meg, és a közös adatokkal van feltöltve. Egyes lekérdezések esetében, ha ezt a táblát a központi adatbázisban definiálják, csökkentheti a fő adatbázisba áthelyezendő adatok mennyiségét.

    create table

    Ha ilyen módon tartalmaz referenciatáblákat, mindenképpen frissítse a táblasémát és az adatokat a bérlői adatbázisok frissítésekor.

  4. Nyomja le az F5 billentyűt a szkript futtatásához és az adhocreporting adatbázis inicializálásához .

Most már futtathat elosztott lekérdezéseket, és elemzéseket gyűjthet az összes bérlőben!

Elosztott lekérdezések futtatása

Most, hogy az adhocreporting adatbázis be van állítva, futtasson néhány elosztott lekérdezést. Adja meg a végrehajtási tervet, hogy jobban megértse, hol történik a lekérdezésfeldolgozás.

A végrehajtási terv vizsgálatakor mutasson a tervikonokra a részletekért.

Fontos megjegyezni, hogy a DISTRIBUTION = SHARDED(VenueId) beállítás, amikor a külső adatforrás definiálva van, számos forgatókönyv esetében javítja a teljesítményt. Mivel minden VenueId egy adott adatbázisra van leképezve, a szűrés egyszerűen elvégezhető távolról, és csak a szükséges adatokat adja vissza.

  1. Nyissa meg a ...\Tanulás Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReportingQueries.sql fájlt az SSMS-ben.

  2. Győződjön meg arról, hogy csatlakozik az adhocreporting adatbázishoz .

  3. Válassza a Lekérdezés menüt, és kattintson a Tényleges végrehajtási terv belefoglalása elemre

  4. Jelölje ki a jelenleg regisztrált helyszíneket? lekérdezést, és nyomja le az F5 billentyűt.

    A lekérdezés a teljes helyszínlistát adja vissza, amely azt szemlélteti, hogy milyen gyorsan és egyszerűen kérdezhetők le az összes bérlőben, és hogyan lehet adatokat visszaadni az egyes bérlőktől.

    Vizsgálja meg a tervet, és ellenőrizze, hogy a teljes költség a távoli lekérdezésben van-e. Minden bérlői adatbázis távolról hajtja végre a lekérdezést, és visszaadja a helyszín adatait a központi adatbázisnak.

    SELECT * FROM dbo.Venues

  5. Válassza ki a következő lekérdezést, és nyomja le az F5 billentyűt.

    Ez a lekérdezés összekapcsolja a bérlői adatbázisok és a helyi VenueTypes tábla adatait (helyi, mivel az adhocreporting adatbázis táblája).

    Vizsgálja meg a tervet, és ellenőrizze, hogy a költségek nagy része a távoli lekérdezés. Minden bérlői adatbázis visszaadja a helyszín adatait, és helyi csatlakozást hajt végre a helyi VenueTypes táblával a felhasználóbarát név megjelenítéséhez.

    Join on remote and local data

  6. Most válassza ki azt a napot, amelyen a legtöbb jegyet értékesítették? lekérdezést, és nyomja le az F5 billentyűt.

    Ez a lekérdezés egy kicsit összetettebb illesztést és összesítést végez. A feldolgozás nagy része távolról történik. Csak az egyes helyszínek napi jegyértékesítési számát tartalmazó sorok kerülnek vissza a központi adatbázisba.

    query

További lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • Elosztott lekérdezések futtatása az összes bérlői adatbázison
  • Helyezzen üzembe egy jelentéskészítő adatbázist, és határozza meg az elosztott lekérdezések futtatásához szükséges sémát.

Most próbálja ki a Tenant Analytics-oktatóanyagot , amely egy külön elemzési adatbázisból származó adatok kinyerését mutatja be összetettebb elemzési feldolgozás céljából.

Additional resources