Architektura usługi Azure Synapse SQL

W tym artykule opisano składniki architektury usługi Synapse SQL. Wyjaśniono również, jak 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 w poziomie do dystrybucji przetwarzania obliczeniowego danych w wielu węzłach. Obliczenia są oddzielone od magazynu, co umożliwia skalowanie obliczeń niezależnie od danych w systemie.

W przypadku dedykowanej puli SQL jednostka skalowania to abstrakcja mocy obliczeniowej, która jest znana jako jednostka magazynu danych.

W przypadku bezserwerowej puli SQL skalowanie odbywa się automatycznie, aby uwzględnić wymagania dotyczące zasobów zapytań. Ponieważ topologia zmienia się wraz z upływem czasu, dodając, usuwając węzły lub tryb failover, dostosowuje się do zmian i upewnia się, że zapytanie ma wystarczającą ilość zasobów i kończy się pomyślnie. Na przykład na poniższej ilustracji przedstawiono bezserwerową pulę SQL przy użyciu czterech węzłów obliczeniowych do wykonania zapytania.

Zrzut ekranu przedstawiający architekturę usługi Synapse SQL.

Usługa Synapse SQL używa architektury opartej na węźle. Aplikacje łączą się i wydają polecenia języka T-SQL z węzłem sterowania, który jest pojedynczym punktem wejścia dla usługi Synapse SQL.

Węzeł Azure Synapse kontrolki SQL wykorzystuje rozproszony aparat zapytań w celu zoptymalizowania zapytań na potrzeby przetwarzania równoległego, a następnie przekazuje operacje do węzłów obliczeniowych, aby wykonać swoją pracę równolegle.

Bezserwerowy węzeł sterowania pulą SQL korzysta z aparatu rozproszonego przetwarzania zapytań (DQP), aby zoptymalizować i zorganizować rozproszone wykonywanie zapytań 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ń, grup lub zamówień danych pobranych 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 odłączonego magazynu i zasobów obliczeniowych w przypadku korzystania z usługi Synapse SQL można korzystać z niezależnego rozmiaru mocy obliczeniowej niezależnie od potrzeb magazynu. Skalowanie bezserwerowej puli SQL odbywa się automatycznie, natomiast w przypadku dedykowanej puli SQL można wykonać następujące czynności:

  • Zwiększ lub zmniejsz moc obliczeniową w dedykowanej puli SQL bez przenoszenia danych.
  • Wstrzymywać zasoby obliczeniowe bez wpływu na dane, płacąc tylko za przestrzeń dyskową.
  • Wznawiać zasoby obliczeniowe w godzinach pracy.

Azure Storage

Usługa Synapse SQL korzysta z usługi Azure Storage, aby zapewnić bezpieczeństwo danych użytkownika. Ponieważ dane są przechowywane i zarządzane przez usługę Azure Storage, naliczana jest oddzielna opłata za użycie magazynu.

Bezserwerowa pula SQL umożliwia wykonywanie zapytań dotyczących plików data lake, a 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:

  • Skrót
  • 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 Sterowania, 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 zostaną wykonane 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 rozproszoną jednostką wykonywania zapytań, która jest faktycznie częścią przesłanego użytkownika zapytania. 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 ruch danych jest wymagany, usługa DMS zapewnia, że odpowiednie dane są przesyłane do właściwej lokalizacji.

Dystrybucji

Dystrybucja to podstawowa jednostka magazynu i przetwarzania zapytań równoległych uruchamianych na rozproszonych danych w dedykowanej puli SQL. Gdy dedykowana pula SQL uruchamia zapytanie, praca jest podzielona na 60 mniejszych zapytań uruchamianych 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 dystrybuowana przy użyciu skrótu może zapewniać najwyższą wydajność zapytań w przypadku sprzężeń 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 (tabela nieprostrybuowana) jest przechowywana jako tabela rozproszona skrótem.

Zrzut ekranu przedstawiający tabelę przechowywaną jako dystrybucja skrótów.

  • Każdy wiersz należy do jednej dystrybucji.
  • Deterministyczny algorytm wyznaczania wartości skrótu przypisuje każdy wiersz do jednej dystrybucji.
  • Liczba wierszy tabeli na rozkład różni się w zależności od różnych rozmiarów tabel.

Istnieją zagadnienia dotyczące wydajności wyboru kolumny dystrybucji, takie jak odrębność, niesymetryczność danych i typy zapytań uruchamianych w systemie.

Tabele dystrybuowane przy użyciu działania okrężnego

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 dystrybuowanej przy użyciu działania okrężnego dane są dystrybuowane równomiernie w całej tabeli, bez dodatkowej optymalizacji. Rozkład jest najpierw wybierany losowo, a następnie bufory wierszy są przypisywane do dystrybucji sekwencyjnie. Szybkie ładowanie danych do tabeli działania okrężnego, ale wydajność zapytań może być często lepsza w przypadku tabel rozproszonych skrótów. Sprzężenia w tabelach działania okrężnego wymagają przetasowania danych, co zajmuje dodatkowy czas.

Zreplikowane tabele

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ą. Replikacja sprawdza się najlepiej w przypadku małych tabel. Wymagany jest dodatkowy magazyn i istnieje dodatkowe obciążenie związane z zapisywaniem danych, co sprawia, że duże tabele są niepraktyczne.

Na poniższym diagramie przedstawiono zreplikowana tabela, która jest buforowana w pierwszej dystrybucji w każdym węźle obliczeniowym.

Zrzut ekranu przedstawiający replikowana tabelę buforowana w pierwszej dystrybucji w każdym węźle obliczeniowym.

Następne kroki

Teraz, gdy już wiesz już trochę o usłudze 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źć słownik platformy Azure przydatny, gdy napotkasz nową terminologię.