Udostępnij przez


Schematy zdefiniowane przez użytkownika w usłudze Synapse SQL

W poniższych sekcjach znajdziesz różne porady dotyczące używania schematów zdefiniowanych przez użytkownika języka T-SQL do tworzenia rozwiązań w usłudze Synapse SQL.

Schematy granic aplikacji

Tradycyjna architektura analizy często używa oddzielnych baz danych do tworzenia granic aplikacji na podstawie obciążenia, domeny lub zabezpieczeń. Na przykład tradycyjna infrastruktura analizy programu SQL Server może obejmować tymczasową bazę danych, bazę danych analizy i bazy danych składnic danych. W tej topologii każda baza danych działa jako granica obciążenia i zabezpieczeń w architekturze.

Zamiast tego usługa Synapse SQL uruchamia całe obciążenie analityczne w jednej bazie danych. Sprzężenia między bazami danych nie są dozwolone. Usługa Synapse SQL oczekuje, że wszystkie tabele używane przez magazyn będą przechowywane w jednej bazie danych.

Uwaga

Dedykowane pule SQL nie obsługują zapytań między bazami danych jakiegokolwiek rodzaju. W związku z tym implementacje analiz wykorzystujące ten wzorzec będą musiały zostać zmienione. Bezserwerowa pula SQL obsługuje zapytania obejmujące wiele baz danych.

Zalecenia dotyczące schematu zdefiniowanego przez użytkownika

Uwzględnione są zalecenia dotyczące konsolidowania obciążeń, zabezpieczeń, domeny i granic funkcjonalnych przy użyciu schematów zdefiniowanych przez użytkownika:

  • Użyj jednej bazy danych, aby uruchomić całe obciążenie analityczne.
  • Skonsoliduj istniejące środowisko analityczne, aby używać jednej bazy danych.
  • Skorzystaj z schematów zdefiniowanych przez użytkownika, aby ustanowić granicę wcześniej zaimplementowaną przy użyciu baz danych.

Jeśli schematy zdefiniowane przez użytkownika nie zostały wcześniej użyte, możesz zacząć od nowa. Użyj starej nazwy bazy danych jako podstawy schematów zdefiniowanych przez użytkownika w bazie danych Synapse SQL Database.

Jeśli schematy zostały już użyte, masz kilka opcji:

  • Usuń starsze nazwy schematów i rozpocznij od nowa
  • Zachowaj starsze nazwy schematów, poprzedzając starszą nazwę schematu nazwą tabeli
  • Zachowaj starsze nazwy schematów, implementując widoki w tabeli w dodatkowym schemacie, który ponownie tworzy starą strukturę schematu.

Uwaga

Po pierwszej inspekcji opcja 3 może wydawać się najbardziej atrakcyjnym wyborem. W usłudze Synapse SQL widoki są dostępne tylko do odczytu. Wszelkie modyfikacje danych lub tabeli należy wykonać względem tabeli podstawowej. Opcja 3 wprowadza również warstwę widoków do systemu. Jeśli już używasz widoków w swojej architekturze, może warto to jeszcze przemyśleć.

Przykłady

Zaimplementuj schematy zdefiniowane przez użytkownika na podstawie nazw baz danych.

CREATE SCHEMA [stg]; -- stg previously database name for staging database
GO
CREATE SCHEMA [edw]; -- edw previously database name for the analytics
GO
CREATE TABLE [stg].[customer] -- create staging tables in the stg schema
(       CustKey BIGINT NOT NULL
,       ...
);
GO
CREATE TABLE [edw].[customer] -- create analytics tables in the edw schema
(       CustKey BIGINT NOT NULL
,       ...
);

Zachowaj starsze nazwy schematów, poprzedzając je nazwą tabeli. Użyj schematów dla granicy obciążenia.

CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- edw defines the analytics boundary
GO
CREATE TABLE [stg].[dim_customer] --pre-pend the old schema name to the table and create in the staging boundary
(       CustKey BIGINT NOT NULL
,       ...
);
GO
CREATE TABLE [edw].[dim_customer] --pre-pend the old schema name to the table and create in the analytics boundary
(       CustKey BIGINT NOT NULL
,       ...
);

Zachowaj starsze nazwy schematów przy użyciu widoków.

CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- stg defines the analytics boundary
GO
CREATE SCHEMA [dim]; -- edw defines the legacy schema name boundary
GO
CREATE TABLE [stg].[customer] -- create the base staging tables in the staging boundary
(       CustKey    BIGINT NOT NULL
,       ...
)
GO
CREATE TABLE [edw].[customer] -- create the base analytics tables in the analytics boundary
(       CustKey    BIGINT NOT NULL
,       ...
)
GO
CREATE VIEW [dim].[customer] -- create a view in the legacy schema name boundary for presentation consistency purposes only
AS
SELECT  CustKey
,       ...
FROM    [edw].customer
;

Uwaga

Każda zmiana strategii schematu wymaga przeglądu modelu zabezpieczeń bazy danych. W wielu przypadkach można uprościć model zabezpieczeń, przypisując uprawnienia na poziomie schematu.

Jeśli wymagane są bardziej szczegółowe uprawnienia, możesz użyć ról bazy danych. Aby uzyskać więcej informacji na temat ról bazy danych, zobacz artykuł Zarządzanie rolami bazy danych i użytkownikami.

Następne kroki

Aby uzyskać więcej porad dotyczących programowania, zobacz Omówienie programowania w usłudze Synapse SQL.