Sdílet prostřednictvím


Uživatelsky definované schémata pro vyhrazené fondy SQL ve službě Azure Synapse Analytics

Tento článek se zaměřuje na několik tipů pro používání 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í datový sklad SQL Serveru 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 funguje každá databáze v architektuře jako hranice zátěže a zabezpečení.

Ve srovnání s tím, dedikovaný SQL pool běží celou úlohu datového skladu v rámci jednoho databázového systému. Připojení mezi databázemi nejsou povolená. Vyhrazený fond SQL očekává, že všechny tabulky používané skladem budou uloženy v rámci jedné databáze.

Poznámka:

Fond SQL nepodporuje dotazy napříč databázemi jakéhokoli druhu. V důsledku toho je potřeba revidovat implementace datového skladu, které tento model využívají.

Doporučení

Tady jsou doporučení pro konsolidaci úloh, zabezpečení, domény 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.
  • Sloučit 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, která byla dříve implementována pomocí databází.

Pokud schémata definovaná uživatelem nebyla použita dříve, začínáte s čistým štítem. Jako základ pro uživatelsky definovaná schémata ve vyhrazené databázi fondu SQL použijte starý název databáze.

Pokud už schémata byla použita, máte několik možností:

  • Odeberte starší názvy schémat a začněte znovu.
  • Zachovejte názvy staršího schématu tak, že před názvy tabulek přidáte názvy staršího schématu.
  • Zachovejte starší názvy schémat implementací zobrazení nad tabulkou v dodatečném schématu, abyste znovu vytvořili starou strukturu schématu.

Poznámka:

Při první kontrole možnost 3 se může zdát jako nejatrakvější možnost. Ale ďábel je v detailu. Zobrazení jsou pouze pro čtení ve vyhrazeném fondu SQL. Všechna data nebo úpravy tabulky by bylo potřeba provést proti základní tabulce. Možnost 3 také zavádí do systému vrstvu zobrazení. Pokud už v architektuře používáte zobrazení, možná byste o tom měli ještě přemýšlet.

Příklady:

Implementujte uživatelsky definovaná schémata na základě názvů 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
,       ...
);

Ponechte názvy starších schémat tím, že je přidáte před název tabulky. Použijte schémata pro hranici úlohy:

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
,       ...
);

Zachování starších názvů 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 strategie 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.