Uživatelsky definovaná schémata pro vyhrazené fondy SQL v Azure Synapse Analytics
Tento článek se zaměřuje na poskytování několika tipů pro použití uživatelsky definovaných schémat T-SQL k vývoji řešení ve vyhrazeném fondu SQL.
Schémata pro hranice aplikací
Tradiční datové sklady často používají samostatné databáze k vytváření hranic aplikací na základě úloh, domény nebo zabezpečení.
Například tradiční SQL Server datový sklad může zahrnovat pracovní databázi, databázi datového skladu a některé databáze datového tržiště. V této topologii každá databáze funguje jako hranice úlohy a zabezpečení v architektuře.
Naproti tomu vyhrazený fond SQL spouští celou úlohu datového skladu v jedné databázi. Připojení mezi databázemi nejsou povolená. Vyhrazený fond SQL očekává, že všechny tabulky používané skladem budou uloženy v jedné databázi.
Poznámka
Fond SQL nepodporuje dotazy mezi databázemi žádného druhu. V důsledku toho bude potřeba revidovat implementace datového skladu, které tento model využívají.
Doporučení
Níže jsou uvedená doporučení pro sloučení úloh, zabezpečení, domén a funkčních hranic pomocí uživatelsky definovaných schémat:
- Ke spuštění celé úlohy datového skladu použijte jednu databázi ve vyhrazeném fondu SQL.
- Konsolidovat stávající prostředí datového skladu tak, aby používalo jednu vyhrazenou databázi fondu SQL.
- Využijte uživatelsky definovaná schémata k poskytnutí hranice dříve implementované pomocí databází.
Pokud uživatelem definovaná schémata nebyla dříve použita, máte čistou tabulku. Jako základ pro uživatelem definovaná schémata ve vyhrazené databázi fondu SQL použijte starý název databáze.
Pokud už jste schémata použili, máte několik možností:
- Odeberte starší názvy schémat a začněte znovu.
- Zachovejte názvy starších schémat tak, že předem čekáte na název starší verze schématu na název tabulky.
- Zachovejte starší názvy schématu implementací zobrazení tabulky v dodatečném schématu, abyste znovu vytvořili starou strukturu schématu.
Poznámka
Při první kontrole se možnost 3 může zdát jako nejatraktnější možnost. Nicméně, ďábel je v detailu. Zobrazení jsou ve vyhrazeném fondu SQL jen pro čtení. U základní tabulky by bylo potřeba provést jakékoli úpravy dat nebo tabulky. Možnost 3 také zavádí do systému vrstvu zobrazení. Pokud už ve své architektuře používáte zobrazení, můžete si to ještě promyslet.
Příklady:
Implementujte uživatelem definovaná schémata založená na názvech databází:
CREATE SCHEMA [stg]; -- stg previously database name for staging database
GO
CREATE SCHEMA [edw]; -- edw previously database name for the data warehouse
GO
CREATE TABLE [stg].[customer] -- create staging tables in the stg schema
( CustKey BIGINT NOT NULL
, ...
);
GO
CREATE TABLE [edw].[customer] -- create data warehouse tables in the edw schema
( CustKey BIGINT NOT NULL
, ...
);
Názvy starších schémat uchovávejte tak, že je předem čekáte na název tabulky. Pro hranici úloh použijte schémata:
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- edw defines the data warehouse 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 data warehouse boundary
( CustKey BIGINT NOT NULL
, ...
);
Zachovat starší názvy schémat pomocí zobrazení:
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- stg defines the data warehouse 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 data warehouse tables in the data warehouse 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
;
Poznámka
Jakákoli změna ve strategii schématu vyžaduje kontrolu modelu zabezpečení databáze. V mnoha případech můžete model zabezpečení zjednodušit přiřazením oprávnění na úrovni schématu. Pokud jsou vyžadována podrobnější oprávnění, můžete použít databázové role.
Další kroky
Další tipy pro vývoj najdete v přehledu vývoje.