Share via


Synapse SQL 內的使用者定義結構描述

在下列各節中,您會找到各種秘訣,以了解如何使用 T-SQL 使用者定義的結構描述,在 Synapse SQL 內開發解決方案。

應用程式界限的結構描述

傳統分析架構通常使用不同的資料庫,根據工作負載、網域或安全性來建立應用程式界限。 例如,傳統的 SQL Server 分析基礎結構可能包含臨時資料庫、分析資料庫和資料超市資料庫。 在此拓撲中,每個資料庫均當作架構中的工作負載和安全性界限運作。

相反地,Synapse SQL 則會在一個資料庫內執行整個分析工作負載。 不允許跨資料庫聯結。 Synapse SQL 預期倉儲使用的所有資料表都會儲存在一個資料庫內。

注意

專用 SQL 集區不支援任何種類的跨資料庫查詢。 因此,需要修改運用此模式的分析實作。 無伺服器 SQL 集區支援跨資料庫查詢。

使用者定義的結構描述建議

下面包含的內容是使用使用者定義的結構描述合併工作負載、安全性、網域和功能界限時的一些建議:

  • 請使用一個資料庫來執行整個分析工作負載。
  • 請將現有的分析環境合併為使用一個資料庫。
  • 運用 使用者定義的結構描述 來提供先前使用資料庫實作的界限。

如果先前尚未使用使用者定義的結構描述,您就沒有任何記錄。 使用舊資料庫名稱作為 Synapse SQL 資料庫中使用者定義之結構描述的基礎。

如果已經使用結構描述,您有下列幾個選項可用:

  • 移除舊版結構描述名稱並重新開始
  • 在資料表名稱前面附加舊版結構描述名稱,以保留舊版結構描述名稱
  • 在額外結構描述中的資料表上實作檢視來重建舊的結構描述結構,以保留舊版結構描述名稱。

注意

在第一次檢查時,選項 3 似乎像是最吸引人的選項。 在 Synapse SQL 中,檢視是唯讀狀態。 必須對基底資料表執行任何的資料表或資料修改。 選項 3 還在您的系統中引進了一個檢視層。 如果您已在架構中使用檢視,您可以再仔細思考一下這個選項。

範例

根據資料庫名稱,實作使用者定義的結構描述。

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

在資料表名稱前面附加舊版結構描述名稱,以保留舊版結構描述名稱。 使用工作負載界限的結構描述。

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

使用檢視保留舊版結構描述名稱。

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
;

注意

結構描述策略如有任何變更,則需要檢閱資料庫的資訊安全模型。 在許多情況下,您可以在結構描述層級指派權限,以簡化安全性模型。

如果需要更細微的權限,您可以使用資料庫角色。 如需資料庫角色的詳細資訊,請參閱管理資料庫角色和使用者一文。

下一步

如需更多開發秘訣,請參閱 Synapse SQL 開發概觀