Udostępnij za pośrednictwem


Omówienie zapytań elastycznych usługi Azure SQL Database (wersja zapoznawcza)

Dotyczy:Azure SQL Database

Funkcja zapytań elastycznych (w wersji zapoznawczej) umożliwia uruchamianie zapytania Transact-SQL (T-SQL), które obejmuje wiele baz danych w usłudze Azure SQL Database. Pozwala na wykonywanie zapytań między bazami danych w celu uzyskiwania dostępu do tabel zdalnych oraz łączenie narzędzi firmy Microsoft i innych firm (Excel, Power BI, Tableau itd.) w celu wykonywania zapytań dotyczących warstw danych z wieloma bazami danych. Korzystając z tej funkcji, można skalować zapytania w poziomie do dużych warstw danych i wizualizować wyniki w raportach analizy biznesowej (BI).

Dlaczego warto używać zapytań elastycznych

Azure SQL Database

Wykonywanie zapytań dotyczących baz danych w usłudze Azure SQL Database całkowicie w języku T-SQL. Umożliwia to wykonywanie zapytań tylko do odczytu zdalnych baz danych i zapewnia klientom programu SQL Server możliwość migrowania aplikacji przy użyciu trzech i czterech części nazw lub serwera połączonego z usługą SQL Database.

Dostępne we wszystkich warstwach usług

Elastyczne zapytanie jest obsługiwane we wszystkich warstwach usług usługi Azure SQL Database. Zobacz sekcję Dotyczącą ograniczeń wersji zapoznawczej poniżej na temat ograniczeń wydajności dla niższych warstw usług.

Wypychanie parametrów do zdalnych baz danych

Zapytania elastyczne mogą teraz wypychać parametry SQL do zdalnych baz danych na potrzeby wykonywania.

Wykonywanie procedury składowanej

Wykonaj zdalne wywołania procedury składowanej lub funkcje zdalne przy użyciu sp_execute _remote.

Elastyczność

Tabele zewnętrzne z elastycznym zapytaniem mogą odwoływać się do tabel zdalnych z inną nazwą schematu lub tabeli.

Scenariusze zapytań elastycznych

Celem jest ułatwienie wykonywania zapytań w scenariuszach, w których wiele baz danych współtworzy wiersze w jeden ogólny wynik. Zapytanie może składać się bezpośrednio z użytkownika lub aplikacji albo pośrednio za pośrednictwem narzędzi połączonych z bazą danych. Jest to szczególnie przydatne podczas tworzenia raportów przy użyciu komercyjnych narzędzi do analizy biznesowej lub integracji danych lub dowolnej aplikacji, których nie można zmienić. Za pomocą zapytania elastycznego można wykonywać zapytania w kilku bazach danych przy użyciu znanego środowiska łączności z programem SQL Server w narzędziach takich jak Excel, Power BI, Tableau lub Cognos. Elastyczne zapytanie umożliwia łatwy dostęp do całej kolekcji baz danych za pośrednictwem zapytań wystawionych przez program SQL Server Management Studio lub Visual Studio oraz ułatwia wykonywanie zapytań między bazami danych z programu Entity Framework lub innych środowisk ORM. Rysunek 1 przedstawia scenariusz, w którym istniejąca aplikacja w chmurze (która korzysta z elastycznej biblioteki klienta bazy danych) jest oparta na skalowanej w poziomie warstwie danych, a elastyczne zapytanie jest używane do raportowania między bazami danych.

Rysunek 1 Zapytanie elastyczne używane w warstwie danych skalowanej w poziomie

Zrzut ekranu przedstawiający zapytanie elastyczne używane w warstwie danych skalowanej w poziomie.

Scenariusze klientów dotyczące zapytań elastycznych charakteryzuje się następującymi topologiami:

  • partycjonowanie pionowe — zapytania między bazami danych (Topologia 1): dane są partycjonowane w pionie między kilkoma bazami danych w warstwie danych. Zazwyczaj różne zestawy tabel znajdują się w różnych bazach danych. Oznacza to, że schemat różni się w różnych bazach danych. Na przykład wszystkie tabele spisu znajdują się w jednej bazie danych, podczas gdy wszystkie tabele związane z księgowością znajdują się w drugiej bazie danych. Typowe przypadki użycia z tą topologią wymagają wykonywania zapytań dotyczących różnych tabel lub kompilowania raportów w kilku bazach danych.

  • Partycjonowanie poziome — dzielenie na fragmenty (topologia 2): dane są partycjonowane w poziomie w celu rozłożenia wierszy w warstwie danych skalowanej w poziomie. W przypadku tego podejścia schemat jest identyczny we wszystkich uczestniczących bazach danych. Takie podejście jest również nazywane fragmentowaniem . Fragmentowanie można wykonywać i zarządzać przy użyciu (1) elastycznych bibliotek narzędzi bazy danych lub (2) samodzielnego fragmentowania. Zapytanie elastyczne służy do wykonywania zapytań lub kompilowania raportów w wielu fragmentach. Fragmenty są zwykle bazami danych w elastycznej puli. Elastyczne zapytanie można traktować jako wydajny sposób wykonywania zapytań względem wszystkich baz danych elastycznej puli jednocześnie, o ile bazy danych współdzielą wspólny schemat.

Uwaga

Zapytanie elastyczne działa najlepiej w przypadku scenariuszy raportowania, w których większość przetwarzania (filtrowanie, agregacja) może być wykonywana po stronie zewnętrznej źródła. Nie jest odpowiednia dla operacji ETL, w których duża ilość danych jest przesyłana ze zdalnych baz danych. W przypadku dużych obciążeń raportowania lub scenariuszy magazynowania danych z bardziej złożonymi zapytaniami rozważ również użycie usługi Azure Synapse Analytics.

Partycjonowanie pionowe — zapytania obejmujące wiele baz danych

Aby rozpocząć kodowanie, zobacz Wprowadzenie do zapytań między bazami danych (partycjonowanie pionowe).

Zapytanie elastyczne może służyć do udostępniania danych w bazie danych w usłudze SQL Database innym bazom danych w usłudze SQL Database. Umożliwia to wykonywanie zapytań z jednej bazy danych w celu odwoływania się do tabel w dowolnej innej zdalnej bazie danych w usłudze SQL Database. Pierwszym krokiem jest zdefiniowanie zewnętrznego źródła danych dla każdej zdalnej bazy danych. Zewnętrzne źródło danych jest definiowane w lokalnej bazie danych, z której chcesz uzyskać dostęp do tabel znajdujących się w zdalnej bazie danych. W zdalnej bazie danych nie są wymagane żadne zmiany. W przypadku typowych scenariuszy partycjonowania pionowego, w których różne bazy danych mają różne schematy, zapytania elastyczne mogą służyć do implementowania typowych przypadków użycia, takich jak dostęp do danych referencyjnych i wykonywanie zapytań między bazami danych.

Ważne

Musisz posiadać uprawnienia ALTER ANY EXTERNAL DATA SOURCE. To uprawnienie jest dołączone do uprawnienia ALTER DATABASE. ALTER ANY EXTERNAL DATA SOURCE uprawnienia są potrzebne do odwoływania się do bazowego źródła danych.

Dane referencyjne: Topologia jest używana do zarządzania danymi referencyjnymi. Na poniższym rysunku dwie tabele (T1 i T2) z danymi referencyjnymi są przechowywane w dedykowanej bazie danych. Za pomocą zapytania elastycznego można teraz uzyskiwać dostęp do tabel T1 i T2 zdalnie z innych baz danych, jak pokazano na rysunku. Użyj topologii 1, jeśli tabele odwołań są małymi lub zdalnymi zapytaniami do tabeli referencyjnej mają predykaty selektywne.

Rysunek 2 Partycjonowanie pionowe — używanie elastycznego zapytania do wykonywania zapytań dotyczących danych referencyjnych

Zrzut ekranu przedstawiający partycjonowanie pionowe — używanie elastycznego zapytania do wykonywania zapytań dotyczących danych referencyjnych.

Wykonywanie zapytań między bazami danych: Zapytania elastyczne umożliwiają wykonywanie zapytań w kilku bazach danych w usłudze SQL Database. Rysunek 3 przedstawia cztery różne bazy danych: CRM, Inventory, HR i Products. Zapytania wykonywane w jednej z baz danych również muszą mieć dostęp do jednej lub wszystkich pozostałych baz danych. Korzystając z elastycznego zapytania, możesz skonfigurować bazę danych dla tego przypadku, uruchamiając kilka prostych instrukcji DDL w każdej z czterech baz danych. Po tej jednorazowej konfiguracji dostęp do tabeli zdalnej jest tak prosty, jak odwoływania się do tabeli lokalnej z zapytań T-SQL lub narzędzi analizy biznesowej. Takie podejście jest zalecane, jeśli zapytania zdalne nie zwracają dużych wyników.

Rysunek 3 Partycjonowanie pionowe — używanie elastycznego zapytania do wykonywania zapytań w różnych bazach danych

zrzut ekranu przedstawiający partycjonowanie pionowe — używanie elastycznego zapytania do wykonywania zapytań w różnych bazach danych.

Poniższe kroki umożliwiają skonfigurowanie elastycznych zapytań bazy danych dla scenariuszy partycjonowania pionowego, które wymagają dostępu do tabeli znajdującej się w zdalnych bazach danych w usłudze SQL Database przy użyciu tego samego schematu:

Po uruchomieniu instrukcji DDL można uzyskać dostęp do tabeli zdalnej mytable tak, jakby była to tabela lokalna. Usługa Azure SQL Database automatycznie otwiera połączenie ze zdalną bazą danych, przetwarza żądanie w zdalnej bazie danych i zwraca wyniki.

Partycjonowanie poziome — dzielenie na fragmenty

Użycie elastycznego zapytania do wykonywania zadań raportowania za pośrednictwem fragmentowanego, czyli partycjonowanego w poziomie, warstwa danych wymaga elastycznej mapy fragmentów bazy danych do reprezentowania baz danych warstwy danych. Zazwyczaj w tym scenariuszu jest używana tylko jedna mapa fragmentów, a dedykowana baza danych z funkcjami zapytań elastycznych (węzła głównego) służy jako punkt wejścia do zapytań raportowania. Tylko ta dedykowana baza danych wymaga dostępu do mapy fragmentów. Rysunek 4 ilustruje tę topologię i jej konfigurację z elastyczną bazą danych zapytań i mapą fragmentów. Aby uzyskać więcej informacji na temat elastycznej biblioteki klienta bazy danych i tworzenia map fragmentów, zobacz Zarządzanie mapami fragmentów.

Rysunek 4 Partycjonowanie w poziomie — używanie elastycznego zapytania do raportowania w warstwach danych podzielonych na fragmenty

Zrzut ekranu przedstawiający partycjonowanie poziome — używanie elastycznego zapytania do raportowania za pomocą warstw danych zfragmentowanych.

Uwaga

Elastyczna baza danych zapytań (węzeł główny) może być oddzielną bazą danych lub może być tą samą bazą danych, która hostuje mapę fragmentów. Niezależnie od wybranej konfiguracji upewnij się, że warstwa usługi i rozmiar obliczeniowy tej bazy danych są wystarczająco wysokie, aby obsłużyć oczekiwaną liczbę żądań logowania/zapytań.

Poniższe kroki umożliwiają skonfigurowanie elastycznych zapytań bazy danych dla scenariuszy partycjonowania poziomego, które wymagają dostępu do zestawu tabel znajdujących się w kilku zdalnych bazach danych w usłudze SQL Database:

Po wykonaniu tych kroków możesz uzyskać dostęp do tabeli partycjonowanej poziomo mytable tak, jakby była to tabela lokalna. Usługa Azure SQL Database automatycznie otwiera wiele równoległych połączeń ze zdalnymi bazami danych, w których tabele są fizycznie przechowywane, przetwarza żądania w zdalnych bazach danych i zwraca wyniki. Więcej informacji na temat kroków wymaganych w scenariuszu partycjonowania poziomego można znaleźć w zapytaniu elastycznym na potrzeby partycjonowania poziomego.

Aby rozpocząć kodowanie, zobacz Wprowadzenie do zapytań elastycznych na potrzeby partycjonowania poziomego (fragmentowania).

Ważne

Pomyślne wykonanie zapytań elastycznych w dużym zestawie baz danych w dużym stopniu zależy od dostępności poszczególnych baz danych podczas wykonywania zapytania. Jeśli jedna z baz danych nie jest dostępna, całe zapytanie kończy się niepowodzeniem. Jeśli planujesz wykonywać zapytania dotyczące setek lub tysięcy baz danych jednocześnie, upewnij się, że aplikacja kliencka ma osadzoną logikę ponawiania prób lub rozważyć wykorzystanie zadań elastycznych i wykonywanie zapytań dotyczących mniejszych podzestawów baz danych, konsolidując wyniki każdego zapytania w jedno miejsce docelowe.

Wykonywanie zapytań T-SQL

Po zdefiniowaniu zewnętrznych źródeł danych i tabel zewnętrznych można używać zwykłych parametry połączenia programu SQL Server do łączenia się z bazami danych, w których zdefiniowano tabele zewnętrzne. Następnie możesz uruchomić instrukcje języka T-SQL na tabelach zewnętrznych na tym połączeniu z ograniczeniami opisanymi w dalszej części tego artykułu. Więcej informacji i przykładów zapytań języka T-SQL można znaleźć w artykułach dokumentacji dotyczących partycjonowania poziomego i partycjonowania pionowego.

Łączność dla narzędzi

Zwykłe parametry połączenia programu SQL Server umożliwiają łączenie aplikacji i narzędzi do analizy biznesowej lub narzędzi do integracji danych z bazami danych, które mają tabele zewnętrzne. Upewnij się, że program SQL Server jest obsługiwany jako źródło danych dla narzędzia. Po nawiązaniu połączenia zapoznaj się z bazą danych zapytań elastycznych i tabelami zewnętrznymi w tej bazie danych, podobnie jak w przypadku każdej innej bazy danych programu SQL Server, z którą nawiązujesz połączenie za pomocą narzędzia.

Ważne

Zapytania elastyczne są obsługiwane tylko podczas nawiązywania połączenia z uwierzytelnianiem programu SQL Server.

Koszt

Zapytanie elastyczne jest uwzględniane w kosztach usługi Azure SQL Database. Topologie, w których zdalne bazy danych znajdują się w innym centrum danych niż punkt końcowy elastycznego zapytania, są obsługiwane, ale opłaty za ruch wychodzący ze zdalnych baz danych są regularnie naliczane stawki platformy Azure.

Ograniczenia wersji zapoznawczej

  • Uruchomienie pierwszego elastycznego zapytania może potrwać do kilku minut w przypadku mniejszych zasobów oraz warstwy usługi Standardowa i Ogólnego przeznaczenia. Tym razem konieczne jest załadowanie funkcji zapytań elastycznych; wydajność ładowania zwiększa się dzięki wyższym warstwom usług i rozmiarom obliczeniowym.

  • Skrypty zewnętrznych źródeł danych lub tabel zewnętrznych z programu SSMS lub SSDT nie są jeszcze obsługiwane.

  • Importowanie/eksportowanie dla usługi SQL Database nie obsługuje jeszcze zewnętrznych źródeł danych i tabel zewnętrznych. Jeśli musisz użyć opcji Importuj/Eksportuj, upuść te obiekty przed wyeksportowaniem, a następnie utwórz je ponownie po zaimportowaniu.

  • Zapytanie elastyczne obecnie obsługuje tylko dostęp tylko do odczytu do tabel zewnętrznych. Można jednak użyć pełnej funkcjonalności języka Transact-SQL w bazie danych, w której zdefiniowano tabelę zewnętrzną. Może to być przydatne, na przykład do zapisywania wyników tymczasowych przy użyciu SELECT <column_list> INTO <local_table>, lub do definiowania procedur składowanych w elastycznej bazie danych zapytań, które odnoszą się do tabel zewnętrznych.

  • Z wyjątkiem nvarchar(max), typy LOB (w tym typy przestrzenne) nie są obsługiwane w definicjach tabeli zewnętrznej. Aby zastosować obejście, można utworzyć widok w zdalnej bazie danych, który przekształca typ LOB na nvarchar(max), zdefiniuj tabelę zewnętrzną na podstawie tego widoku zamiast tabeli bazowej, a następnie przekształcić go z powrotem do oryginalnego typu LOB w zapytaniach.

  • Kolumny nvarchar(max) typu danych w zestawie wyników wyłączają zaawansowane techniki dzielenia na partie używane w implementacji elastycznego zapytania i mogą mieć wpływ na wydajność zapytania o kolejność wielkości, a nawet dwa rzędy wielkości w przypadkach użycia innych niż kanoniczne, w których duża ilość niegregowanych danych jest przesyłana w wyniku zapytania.

  • Statystyki kolumn w tabelach zewnętrznych nie są obecnie obsługiwane. Obsługiwane są statystyki tabel, ale należy je utworzyć ręcznie.

  • Kursory nie są obsługiwane w przypadku tabel zewnętrznych w usłudze Azure SQL Database.

  • Zapytanie elastyczne działa tylko z usługą Azure SQL Database. Nie można go używać do wykonywania zapytań dotyczących instancji SQL Server.

  • Linki prywatne nie są obecnie obsługiwane w przypadku zapytań elastycznych dla tych baz danych, które są obiektami docelowymi zewnętrznych źródeł danych.