Raportowanie między dzierżawami przy użyciu zapytań rozproszonych

Dotyczy:Azure SQL Database

W tym samouczku uruchomisz zapytania rozproszone w całym zestawie baz danych dzierżawy na potrzeby raportowania. Te zapytania mogą wyodrębniać szczegółowe informacje pochowane w codziennych danych operacyjnych dzierżaw Wingtip Tickets SaaS. W tym celu należy wdrożyć dodatkową bazę danych raportowania na serwerze wykazu i użyć elastycznego zapytania w celu włączenia zapytań rozproszonych.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Jak wdrożyć bazę danych raportowania
  • Jak uruchamiać zapytania rozproszone we wszystkich bazach danych dzierżawy
  • Jak widoki globalne w każdej bazie danych mogą umożliwić wydajne wykonywanie zapytań w różnych dzierżawach

Do wykonania kroków tego samouczka niezbędne jest spełnienie następujących wymagań wstępnych:

Wzorzec raportowania między dzierżawami

cross-tenant distributed query pattern

Jedną z szans korzystania z aplikacji SaaS jest użycie ogromnej ilości danych dzierżawy przechowywanych w chmurze w celu uzyskania wglądu w operację i użycie aplikacji. Te szczegółowe informacje mogą kierować opracowywaniem funkcji, ulepszeniami użyteczności i innymi inwestycjami w aplikacje i usługi.

Uzyskiwanie dostępu do tych danych w jednej wielodostępnej bazie danych jest łatwe, ale nie jest tak proste, gdy są one znacznie rozproszone, potencjalnie nawet na tysiące baz danych. Jednym z podejść jest użycie elastycznego zapytania, które umożliwia wykonywanie zapytań w rozproszonym zestawie baz danych z typowym schematem. Te bazy danych można rozpowszechniać w różnych grupach zasobów i subskrypcjach, ale muszą współużytkować wspólne dane logowania. Zapytanie elastyczne używa pojedynczej bazy danych, w której tabele zewnętrzne są definiowane w celu dublowania tabel lub widoków w rozproszonych bazach danych (dzierżawców). Zapytania skierowane do tej głównej bazy danych są kompilowane w celu utworzenia planu zapytania rozproszonego, gdzie części zapytania są w razie potrzeby wypychane do baz danych dzierżawy. Zapytanie elastyczne używa mapy fragmentów w bazie danych wykazu do określenia lokalizacji wszystkich baz danych dzierżawy. Konfigurowanie i wykonywanie zapytań w bazie danych głównych jest proste przy użyciu standardowego języka Transact-SQL i obsługi zapytań z narzędzi, takich jak Power BI i Excel.

Dystrybuując zapytania w bazach danych dzierżawy, funkcja Elastic Query zapewnia natychmiastowy wgląd w dane produkcyjne na żywo. Ponieważ zapytanie elastyczne ściąga dane z potencjalnie wielu baz danych, opóźnienie zapytań może być wyższe niż równoważne zapytania przesyłane do pojedynczej bazy danych z wieloma dzierżawami. Zaprojektuj zapytania, aby zminimalizować dane zwracane do bazy danych głównych. Elastyczne zapytanie jest często najlepiej dopasowane do wykonywania zapytań dotyczących małych ilości danych w czasie rzeczywistym, w przeciwieństwie do tworzenia często używanych lub złożonych zapytań analitycznych lub raportów. Jeśli zapytania nie działają prawidłowo, zapoznaj się z planem wykonywania, aby zobaczyć, która część zapytania jest wypchnięta do zdalnej bazy danych i ile danych jest zwracanych. Zapytania wymagające złożonego przetwarzania agregacji lub analitycznego mogą być lepiej obsługiwane przez wyodrębnienie danych dzierżawy do bazy danych lub magazynu danych zoptymalizowanego pod kątem zapytań analitycznych. Ten wzorzec wyjaśniono w samouczku analizy dzierżawy.

Pobieranie skryptów aplikacji Wingtip Tickets SaaS Database Per Tenant

Skrypty wielodostępnej bazy danych i kod źródłowy aplikacji Wingtip Tickets SaaS są dostępne w repozytorium GitHub WingtipTicketsSaaSaSaS-DbPerTenant GitHub. Zapoznaj się z ogólnymi wskazówkami dotyczącymi kroków pobierania i odblokowywania skryptów SaaS Wingtip Tickets.

Tworzenie danych sprzedaży biletów

Aby uruchamiać zapytania względem bardziej interesującego zestawu danych, utwórz dane sprzedaży biletów, uruchamiając generator biletów.

  1. W programie PowerShell ISE otwórz skrypt ...\Edukacja Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1 i ustaw następującą wartość:
    • $DemoScenario = 1, Kup bilety na wydarzenia we wszystkich miejscach.
  2. Naciśnij klawisz F5 , aby uruchomić skrypt i wygenerować sprzedaż biletów. Gdy skrypt jest uruchomiony, wykonaj kroki opisane w tym samouczku. Dane biletu są wykonywane w sekcji Uruchamianie zapytań rozproszonych ad hoc, więc poczekaj na ukończenie generatora biletów.

Eksplorowanie widoków globalnych

W aplikacji Wingtip Tickets SaaS Database Per Tenant każda dzierżawa otrzymuje bazę danych. W związku z tym dane zawarte w tabelach baz danych są ograniczone do perspektywy pojedynczej dzierżawy. Jednak podczas wykonywania zapytań we wszystkich bazach danych ważne jest, aby zapytanie elastic query może traktować dane tak, jakby była częścią pojedynczej logicznej bazy danych podzielonej na fragmenty według dzierżawy.

Aby zasymulować ten wzorzec, do bazy danych dzierżawy jest dodawany zestaw widoków "globalnych", które projektują identyfikator dzierżawy do każdej z tabel, które są analizowane globalnie. Na przykład widok VenueEvents dodaje obliczony identyfikator VenueId do kolumn przewidywanych z tabeli Zdarzenia. Podobnie widoki VenueTicketPurchases i VenueTickets dodają obliczoną kolumnę VenueId rzutowaną z odpowiednich tabel. Te widoki są używane przez zapytanie elastyczne do równoległości zapytań i wypychania ich do odpowiedniej zdalnej bazy danych dzierżawy, gdy kolumna VenueId jest obecna. Znacznie zmniejsza to ilość zwracanych danych i powoduje znaczny wzrost wydajności wielu zapytań. Te widoki globalne zostały wstępnie utworzone we wszystkich bazach danych dzierżaw.

  1. Otwórz program SSMS i połącz się z serwerem tenants1-USER<>.

  2. Rozwiń węzeł Bazy danych, kliknij prawym przyciskiem myszy pozycję contosoconcerthall i wybierz pozycję Nowe zapytanie.

  3. Uruchom następujące zapytania, aby zbadać różnicę między tabelami z jedną dzierżawą a widokami globalnymi:

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

W tych widokach identyfikator VenueId jest obliczany jako skrót nazwy miejsca, ale każde podejście może służyć do wprowadzenia unikatowej wartości. Takie podejście jest podobne do sposobu, w jaki klucz dzierżawy jest obliczany do użycia w wykazie.

Aby sprawdzić definicję widoku Miejsca :

  1. W Eksplorator obiektów rozwiń węzeł contosoconcerthall>Views:

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

  2. Kliknij prawym przyciskiem myszy pozycję dbo. Miejsca.

  3. Wybierz pozycję Widok skryptu jako>UTWÓRZ do>nowego okna Edytor Power Query

Użyj skryptu dowolnego z innych widoków Miejsca , aby zobaczyć, jak dodają identyfikator VenueId.

Wdrażanie bazy danych używanej na potrzeby zapytań rozproszonych

W tym ćwiczeniu wdrożono bazę danych adhocreporting . Jest to główna baza danych zawierająca schemat używany do wykonywania zapytań we wszystkich bazach danych dzierżawy. Baza danych jest wdrażana na istniejącym serwerze wykazu, który jest serwerem używanym dla wszystkich baz danych związanych z zarządzaniem w przykładowej aplikacji.

  1. W programie PowerShell ISE otwórz plik ...\Edukacja Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReporting.ps1.

  2. Ustaw $DemoScenario = 2, Wdróż bazę danych raportowania ad hoc.

  3. Naciśnij klawisz F5 , aby uruchomić skrypt i utworzyć bazę danych adhocreporting .

W następnej sekcji dodasz schemat do bazy danych, aby można było użyć go do uruchamiania zapytań rozproszonych.

Konfigurowanie bazy danych "head" na potrzeby uruchamiania zapytań rozproszonych

To ćwiczenie dodaje schemat (zewnętrzne źródło danych i definicje tabel zewnętrznych) do bazy danych adhocreporting w celu umożliwienia wykonywania zapytań we wszystkich bazach danych dzierżawy.

  1. Otwórz program SQL Server Management Studio i połącz się z bazą danych raportowania adhoc utworzoną w poprzednim kroku. Nazwa bazy danych to adhocreporting.

  2. Otwórz plik ...\Edukacja Modules\Operational Analytics\Adhoc Reporting\ Initialize-AdhocReportingDB.sql w programie SSMS.

  3. Przejrzyj skrypt SQL i zanotuj:

    Funkcja Elastic Query używa poświadczeń o zakresie bazy danych w celu uzyskania dostępu do każdej z baz danych dzierżawy. To poświadczenie musi być dostępne we wszystkich bazach danych i zwykle powinno zostać przyznane minimalne prawa wymagane do włączenia tych zapytań.

    create credential

    W przypadku bazy danych wykazu jako zewnętrznego źródła danych zapytania są dystrybuowane do wszystkich baz danych zarejestrowanych w wykazie w momencie uruchomienia zapytania. Ponieważ nazwy serwerów są różne dla każdego wdrożenia, ten skrypt pobiera lokalizację bazy danych katalogu z bieżącego serwera (@@servername), na którym jest wykonywany skrypt.

    create external data source

    Tabele zewnętrzne odwołujące się do widoków globalnych opisanych w poprzedniej sekcji i zdefiniowane za pomocą funkcji DISTRIBUTION = SHARDED(VenueId). Ponieważ każdy identyfikator VenueId jest mapowy na pojedynczą bazę danych, zwiększa to wydajność w wielu scenariuszach, jak pokazano w następnej sekcji.

    create external tables

    Lokalna tabela VenueTypes , która jest tworzona i wypełniana. Ta tabela danych referencyjnych jest powszechna we wszystkich bazach danych dzierżawy, więc można ją przedstawić tutaj jako tabelę lokalną i wypełnić wspólnymi danymi. W przypadku niektórych zapytań posiadanie tej tabeli zdefiniowanej w bazie danych głównych może zmniejszyć ilość danych, które należy przenieść do bazy danych głównych.

    create table

    Jeśli w ten sposób dołączysz tabele referencyjne, pamiętaj o zaktualizowaniu schematu i danych tabeli przy każdej aktualizacji baz danych dzierżawy.

  4. Naciśnij klawisz F5 , aby uruchomić skrypt i zainicjować bazę danych adhocreporting .

Teraz możesz uruchamiać zapytania rozproszone i zbierać szczegółowe informacje we wszystkich dzierżawach.

Uruchamianie zapytań rozproszonych

Teraz, gdy baza danych adhocreporting została skonfigurowana, uruchom kilka zapytań rozproszonych. Uwzględnij plan wykonywania, aby lepiej zrozumieć, gdzie odbywa się przetwarzanie zapytań.

Podczas inspekcji planu wykonania umieść kursor na ikonach planu, aby uzyskać szczegółowe informacje.

Należy pamiętać, że ustawienie DISTRIBUTION = SHARDED(VenueId), gdy zdefiniowane zewnętrzne źródło danych poprawia wydajność w wielu scenariuszach. Ponieważ każdy identyfikator VenueId jest mapowy na pojedynczą bazę danych, filtrowanie jest łatwo wykonywane zdalnie, zwracając tylko potrzebne dane.

  1. Otwórz plik ...\Edukacja Modules\Operational Analytics\Adhoc Reporting\Demo-AdhocReportingQueries.sql w programie SSMS.

  2. Upewnij się, że masz połączenie z bazą danych adhocreporting .

  3. Wybierz menu Zapytanie i kliknij pozycję Uwzględnij rzeczywisty plan wykonania

  4. Zaznacz zapytanie Które miejsca są obecnie zarejestrowane? i naciśnij klawisz F5.

    Zapytanie zwraca całą listę miejsc, ilustrując, jak szybkie i łatwe jest wykonywanie zapytań we wszystkich dzierżawach i zwracanie danych z każdej dzierżawy.

    Sprawdź plan i sprawdź, czy cały koszt znajduje się w zapytaniu zdalnym. Każda baza danych dzierżawy wykonuje zapytanie zdalnie i zwraca informacje o miejscu do bazy danych głównych.

    SELECT * FROM dbo.Venues

  5. Wybierz następne zapytanie i naciśnij klawisz F5.

    To zapytanie łączy dane z baz danych dzierżawy i lokalnej tabeli VenueTypes (lokalnie, ponieważ jest to tabela w bazie danych adhocreporting ).

    Sprawdź plan i sprawdź, czy większość kosztów jest zapytaniem zdalnym. Każda baza danych dzierżawy zwraca informacje o miejscu i wykonuje sprzężenie lokalne z lokalną tabelą VenueTypes , aby wyświetlić przyjazną nazwę.

    Join on remote and local data

  6. Teraz wybierz zapytanie W którym dniu były najwięcej sprzedanych biletów? i naciśnij klawisz F5.

    To zapytanie wykonuje nieco bardziej złożone łączenie i agregację. Większość przetwarzania odbywa się zdalnie. Tylko pojedyncze wiersze, zawierające liczbę dziennych sprzedaży biletów każdego miejsca dziennie, są zwracane do bazy danych head.

    query

Następne kroki

W tym samouczku zawarto informacje na temat wykonywania następujących czynności:

  • Uruchamiania rozproszonych zapytań dla wszystkich baz danych dzierżawy
  • Wdróż bazę danych raportowania i zdefiniuj schemat wymagany do uruchamiania zapytań rozproszonych.

Teraz wypróbuj samouczek analizy dzierżawy, aby eksplorować wyodrębnianie danych do oddzielnej bazy danych analitycznych w celu bardziej złożonego przetwarzania analiz.

Dodatkowe zasoby