Udostępnij za pośrednictwem


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

W poniższych sekcjach znajdziesz różne wskazówki 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 SQL Server może obejmować tymczasową bazę danych, bazę danych analizy i bazy danych mart. W tej topologii każda baza danych działa jako obciążenie i granica zabezpieczeń w architekturze.

Zamiast tego usługa Synapse SQL uruchamia całe obciążenie analityczne w ramach jednej bazy 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 analizy wykorzystujące ten wzorzec będą musiały zostać zmienione. Bezserwerowa pula SQL obsługuje zapytania między bazami 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 analizy.
  • Skonsoliduj istniejące środowisko analityczne, aby używać jednej bazy danych.
  • Użyj schematów zdefiniowanych przez użytkownika , aby zapewnić granicę wcześniej zaimplementowaną przy użyciu baz danych.

Jeśli schematy zdefiniowane przez użytkownika nie zostały wcześniej użyte, masz czysty łupek. Użyj starej nazwy bazy danych jako podstawy schematów zdefiniowanych przez użytkownika w bazie danych SQL usługi Synapse.

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

  • Usuń starsze nazwy schematów i zacznij od nowa
  • Zachowaj starsze nazwy schematów przez wstępne oczekiwanie na starszą nazwę schematu na nazwę tabeli
  • Zachowaj starsze nazwy schematów, implementując widoki w tabeli w dodatkowym schemacie, który ponownie tworzy starą strukturę schematu.

Uwaga

Podczas pierwszej inspekcji opcja 3 może wydawać się najbardziej atrakcyjnym wyborem. Widoki są tylko do odczytu w usłudze Synapse SQL. Wszelkie modyfikacje danych lub tabeli należy wykonać względem tabeli podstawowej. Opcja 3 wprowadza również warstwę widoków do systemu. Możesz podać tę dodatkową myśl, jeśli już używasz widoków w architekturze.

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, oczekując na nie wstępnie na 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.