Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.