Udostępnij za pośrednictwem


Co to jest architektura usługi Azure Synapse SQL?

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 skalowalnej w poziomie do dystrybucji obliczeniowego przetwarzania danych mię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 jednostka skalowania to 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ę 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 używającą 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 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ł sterowania sql usługi Azure Synapse korzysta z aparatu zapytań rozproszonych w celu zoptymalizowania zapytań pod kątem przetwarzania równoległego, a następnie przekazuje operacje do węzłów obliczeniowych w celu równoległego wykonywania pracy.

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ń, 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 oddzielenia magazynu i obliczeń w przypadku korzystania z usługi Synapse SQL można korzystać z niezależnego rozmiaru mocy obliczeniowej niezależnie od potrzeb magazynu. 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.
  • Wstrzymywać zasoby obliczeniowe bez wpływu na dane, płacąc tylko za przestrzeń dyskową.
  • 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:

  • 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 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ą 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 wymagane jest przenoszenie danych, 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 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 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 nieproszona) jest przechowywana jako tabela rozproszona przy użyciu skrótu.

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 wierszy są przypisywane do dystrybucji sekwencyjnie. Ładowanie danych do tabeli okrężnej jest szybkie, 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.

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ą. Replikacja sprawdza się najlepiej w przypadku małych tabel. 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.

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

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, słownik platformy Azure może być pomocny podczas napotykania nowej terminologii.