Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano składniki architektury usługi Synapse SQL. Wyjaśniono również, w jaki sposób usługa Azure Synapse SQL łączy rozproszone możliwości przetwarzania zapytań z usługą Azure Storage w celu osiągnięcia wysokiej wydajności i skalowalności.
Składniki architektury usługi Synapse SQL
Usługa Synapse SQL używa architektury skalowania poziomego, aby rozkładać przetwarzanie obliczeniowe danych pomiędzy wieloma węzłami. Zasoby obliczeniowe są niezależne od magazynu, co umożliwia ich skalowanie niezależnie od danych w systemie.
W przypadku dedykowanej puli SQL jednostką skalowania jest abstrakcja mocy obliczeniowej, która jest nazywana jednostką magazynu danych.
W przypadku bezserwerowej puli SQL skalowanie odbywa się automatycznie w celu uwzględnienia wymagań dotyczących zasobów zapytań. Gdy topologia zmienia się z upływem czasu, poprzez dodawanie, usuwanie węzłów lub przełączanie awaryjne, dostosowuje się do tych zmian i zapewnia, że zapytanie ma wystarczające zasoby i kończy się pomyślnie. Na przykład na poniższej ilustracji przedstawiono bezserwerową pulę SQL używającą czterech węzłów obliczeniowych do wykonania zapytania.
Usługa Synapse SQL używa architektury opartej na węźle. Aplikacje łączą się i wystawiają polecenia języka T-SQL z węzłem kontrolnym, który jest pojedynczym punktem wejścia dla usługi Synapse SQL.
Węzeł kontrolny SQL usługi Azure Synapse korzysta z rozproszonego aparatu zapytań, aby zoptymalizować zapytania pod kątem przetwarzania równoległego, a następnie przekazuje operacje do węzłów obliczeniowych, aby wykonywały swoją pracę równolegle.
Bezserwerowy węzeł sterowania pulą SQL korzysta z aparatu rozproszonego przetwarzania zapytań (DQP), aby zoptymalizować i zorganizować rozproszone wykonywanie zapytania użytkownika przez podzielenie go na mniejsze zapytania, które będą wykonywane w węzłach obliczeniowych. Każde małe zapytanie jest nazywane zadaniem i reprezentuje rozproszoną jednostkę wykonywania. Odczytuje pliki z magazynu, łączy wyniki z innych zadań, grupuje lub porządkuje dane pobrane z innych zadań.
Węzły obliczeniowe przechowują wszystkie dane użytkowników w usłudze Azure Storage i wykonują zapytania równoległe. Usługa przenoszenia danych (ang. Data Movement Service, DMS) to wewnętrzna usługa działająca na poziomie systemu, która przenosi dane pomiędzy węzłami w sposób wymagany do równoległego wykonywania zapytań i zwracania prawidłowych wyników.
W przypadku oddzielenia magazynu od obliczeń, korzystając z usługi Synapse SQL, można czerpać korzyści z niezależnego skalowania mocy obliczeniowej, niezależnie od potrzeb magazynowych. W przypadku bezserwerowego skalowania puli SQL odbywa się automatycznie, natomiast w przypadku dedykowanej puli SQL można wykonać następujące czynności:
- Zwiększanie lub zmniejszanie mocy obliczeniowej w ramach dedykowanej puli SQL bez przenoszenia danych.
- Wstrzymaj moce obliczeniowe, pozostawiając dane nienaruszone, więc płacisz tylko za przechowywanie.
- Wznawianie zasobów obliczeniowych w godzinach pracy.
Azure Storage
Usługa Synapse SQL używa usługi Azure Storage do zapewnienia bezpieczeństwa danych użytkownika. Ponieważ dane są przechowywane i zarządzane przez usługę Azure Storage, są naliczane oddzielne opłaty za użycie magazynu.
Bezserwerowa pula SQL umożliwia wykonywanie zapytań dotyczących plików usługi Data Lake, natomiast dedykowana pula SQL umożliwia wykonywanie zapytań i pozyskiwanie danych z plików data lake. Gdy dane są pozyskiwane do dedykowanej puli SQL, dane są podzielone na dystrybucje w celu zoptymalizowania wydajności systemu. Podczas definiowania tabeli możesz wybrać wzorzec dzielenia na fragmenty używany do dystrybucji danych. Te wzorce fragmentowania są obsługiwane:
- Hasz
- Działanie okrężne
- Replikowanie
Węzeł kontrolny
Węzeł kontrolny to mózg całej architektury. Jest to fronton współdziałający ze wszystkimi aplikacjami i połączeniami.
W usłudze Synapse SQL aparat zapytań rozproszonych działa w węźle Kontrolnym, aby zoptymalizować i koordynować zapytania równoległe. Po przesłaniu zapytania T-SQL do dedykowanej puli SQL węzeł kontrolny przekształca je w zapytania uruchamiane równolegle dla każdej dystrybucji.
W bezserwerowej puli SQL aparat DQP działa w węźle kontrolnym, aby zoptymalizować i koordynować rozproszone wykonywanie zapytania użytkownika przez podzielenie go na mniejsze zapytania, które będą wykonywane w węzłach obliczeniowych. Przypisuje również zestawy plików do przetworzenia przez każdy węzeł.
Węzły obliczeniowe
Węzły obliczeniowe zapewniają moc obliczeniową.
W dedykowanej puli SQL dystrybucje mapuje na węzły obliczeniowe na potrzeby przetwarzania. W miarę płacenia za więcej zasobów obliczeniowych pula ponownie mapuje dystrybucje na dostępne węzły obliczeniowe. Liczba węzłów obliczeniowych waha się od 1 do 60 i jest określana przez poziom usługi dla dedykowanej puli SQL. Każdy węzeł obliczeniowy ma identyfikator węzła widoczny w widokach systemowych. Identyfikator węzła obliczeniowego można wyświetlić, wyszukując kolumnę node_id w widokach systemowych, których nazwy zaczynają się od sys.pdw_nodes. Aby uzyskać listę tych widoków systemowych, zobacz Widoki systemowe usługi Synapse SQL.
W bezserwerowej puli SQL każdy węzeł obliczeniowy ma przydzielone zadanie i zestaw plików do wykonania zadania. Zadanie jest jednostką wykonywania zapytań rozproszonych, która jest faktycznie częścią zapytania przesłanego przez użytkownika. Automatyczne skalowanie działa, aby upewnić się, że do wykonywania zapytania użytkownika jest używana wystarczająca liczba węzłów obliczeniowych.
Usługa przenoszenia danych
Usługa przenoszenia danych (DMS) to technologia transportu danych w dedykowanej puli SQL, która koordynuje przenoszenie danych między węzłami obliczeniowymi. Niektóre zapytania wymagają przenoszenia danych, aby zapewnić, że zapytania równoległe zwracają dokładne wyniki. Gdy wymagane jest przenoszenie danych, usługa DMS zapewnia, że odpowiednie dane są przesyłane do właściwej lokalizacji.
Dystrybucje
Dystrybucja to podstawowa jednostka magazynu i przetwarzania zapytań równoległych uruchamianych na danych rozproszonych w dedykowanej puli SQL. Gdy dedykowana pula SQL uruchamia zapytanie, praca jest podzielona na 60 mniejszych zapytań, które są uruchamiane równolegle.
Każde z 60 mniejszych zapytań jest uruchamianych w jednej z dystrybucji danych. Każdy węzeł obliczeniowy zarządza co najmniej jedną z 60 dystrybucji. Dedykowana pula SQL z maksymalnymi zasobami obliczeniowymi ma jedną dystrybucję na węzeł obliczeniowy. Dedykowana pula SQL z minimalnymi zasobami obliczeniowymi ma wszystkie dystrybucje w jednym węźle obliczeniowym.
Tabele dystrybuowane przy użyciu skrótu
Tabela rozproszona za pomocą haszowania może oferować najwyższą efektywność zapytań w przypadku łączeń i agregacji w dużych tabelach.
Aby podzielić dane na tabelę rozproszoną przy użyciu skrótu, dedykowana pula SQL używa funkcji skrótu do deterministycznego przypisywania każdego wiersza do jednej dystrybucji. W definicji tabeli jedna kolumna zostaje wyznaczona jako kolumna dystrybucji. Funkcja skrótu używa wartości z kolumny dystrybucji, aby przypisać każdy wiersz do określonej dystrybucji.
Na poniższym diagramie pokazano, jak pełna (niedystrybuowana) tabela zostaje przechowywana w postaci tabeli rozproszonej przy użyciu skrótu.
- Każdy wiersz należy do jednej dystrybucji.
- Deterministyczny algorytm wyznaczania wartości skrótu przypisuje każdy wiersz do jednej dystrybucji.
- Liczba wierszy w tabeli różni się w zależności od rozmiarów tabel dla każdego rozkładu.
Istnieją zagadnienia dotyczące wydajności wyboru kolumny dystrybucji, takie jak odrębność, niesymetryczność danych i typy zapytań uruchamianych w systemie.
Tabele dystrybuowane metodą cykliczną
Tabela okrężna to najprostsza tabela do utworzenia i zapewnia szybką wydajność w przypadku użycia jako tabeli przejściowej na potrzeby obciążeń.
W tabeli rozproszonej dane są równomiernie rozmieszczane w całej tabeli, ale bez dodatkowej optymalizacji. Rozkład jest najpierw wybierany losowo, a następnie wierszy są przypisywane do dystrybucji sekwencyjnie. Ładowanie danych do tabeli typu round-robin jest szybkie, ale wydajność zapytań może być często lepsza w przypadku tabel z rozprowadzaniem skrótów. Łączenia w tabelach round-robin wymagają przetasowania danych, co zajmuje dodatkowy czas.
Tabele replikowane
Tabela replikowana zapewnia najszybsze wykonywanie zapytań w przypadku niewielkich tabel.
Tabela replikowana buforuje pełną kopię tabeli w każdym węźle obliczeniowym. Dlatego replikowanie tabeli eliminuje konieczność transferu danych między węzłami obliczeniowymi przed sprzężeniem lub agregacją. Replikowane tabele najlepiej sprawdzają się przy małych tabelach. Wymagana jest dodatkowa ilość miejsca do magazynowania, co wiąże się z dodatkowym obciążeniem podczas zapisywania danych, co sprawia, że duże tabele są niepraktyczne.
Na poniższym diagramie przedstawiono zreplikowana tabelę, która jest buforowana w pierwszej dystrybucji w każdym węźle obliczeniowym.
Powiązana zawartość
Teraz, gdy znasz już nieco usługę Synapse SQL, dowiedz się, jak szybko utworzyć dedykowaną pulę SQL i załadować przykładowe dane. Możesz też zacząć korzystać z bezserwerowej puli SQL. Jeśli dopiero zaczynasz korzystać z platformy Azure, możesz znaleźć podstawowe pojęcia dotyczące platformy Azure, które przydają się podczas napotykania nowej terminologii.