Freigeben über


Benutzerdefinierte Schemas in Synapse SQL

In den folgenden Abschnitten finden Sie verschiedene Tipps für die Verwendung von benutzerdefinierten T-SQL-Schemas zum Entwickeln von Lösungen in Synapse SQL.

Schemas für Anwendungsgrenzen

Herkömmliche Analysearchitektur verwendet häufig separate Datenbanken, um Anwendungsgrenzen basierend auf Workload, Domäne oder Sicherheit zu erstellen. Eine herkömmliche SQL Server-Analyseinfrastruktur kann z. B. eine Stagingdatenbank, eine Analysedatenbank und Data Mart-Datenbanken umfassen. In dieser Topologie fungiert jede Datenbank als Workload- und Sicherheitsgrenze in der Architektur.

Stattdessen führt Synapse SQL die gesamte Analysearbeitsauslastung in einer Datenbank aus. Datenbankübergreifende Verknüpfungen sind nicht zulässig. Synapse SQL erwartet, dass alle Vom Lager verwendeten Tabellen in der datenbank gespeichert werden.

Hinweis

Dedizierte SQL-Pools unterstützen keine datenbankübergreifenden Abfragen jeglicher Art. Daher müssen Analyseimplementierungen, die dieses Muster nutzen, überarbeitet werden. Serverless SQL-Pool unterstützt datenbankübergreifende Abfragen.

Benutzerdefinierte Schemaempfehlungen

Enthalten sind Empfehlungen zum Konsolidieren von Workloads, Sicherheit, Domäne und funktionalen Grenzen mithilfe von benutzerdefinierten Schemas:

  • Verwenden Sie eine Datenbank, um Ihre gesamte Analysearbeitsauslastung auszuführen.
  • Konsolidieren Sie Ihre vorhandene Analyseumgebung, um eine Datenbank zu verwenden.
  • Nutzen Sie benutzerdefinierte Schemas , um die zuvor mithilfe von Datenbanken implementierte Grenze bereitzustellen.

Wenn zuvor keine benutzerdefinierten Schemas verwendet wurden, können Sie von Grund auf neu beginnen. Verwenden Sie den alten Datenbanknamen als Grundlage für Ihre benutzerdefinierten Schemas in der Synapse SQL-Datenbank.

Wenn Schemas bereits verwendet wurden, haben Sie einige Optionen:

  • Entfernen Sie die Legacy-Schema-Namen und fangen Sie neu an
  • Behalten Sie die alten Schemanamen bei, indem Sie diese vorab an den Tabellennamen anhängen
  • Behalten Sie die älteren Schemanamen bei, indem Sie Ansichten über die Tabelle in einem zusätzlichen Schema implementieren, wodurch die alte Schemastruktur neu erstellt wird.

Hinweis

Bei der ersten Prüfung mag Option 3 wie die attraktivste Wahl erscheinen. Ansichten sind nur lesbar in Synapse SQL. Jede Daten- oder Tabellenänderung muss für die Basistabelle ausgeführt werden. Option 3 führt auch eine Ansichtsebene in Ihr System ein. Möglicherweise sollten Sie darüber noch einmal nachdenken, wenn Sie bereits Views in Ihrer Architektur verwenden.

Beispiele

Implementieren Sie benutzerdefinierte Schemas basierend auf Datenbanknamen.

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

Behalten Sie die alten Schemanamen bei, indem Sie diese vorab an den Tabellennamen anhängen. Verwenden Sie Schemas für die Workloadgrenze.

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

Behalten Sie die alten Schemanamen mithilfe von Ansichten bei.

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
;

Hinweis

Jede Änderung der Schemastrategie erfordert eine Überprüfung des Sicherheitsmodells für die Datenbank. In vielen Fällen können Sie das Sicherheitsmodell vereinfachen, indem Sie Berechtigungen auf Schemaebene zuweisen.

Wenn detailliertere Berechtigungen erforderlich sind, können Sie Datenbankrollen verwenden. Weitere Informationen zu Datenbankrollen finden Sie im Artikel " Datenbankrollen und Benutzer verwalten ".

Nächste Schritte

Weitere Tipps zur Entwicklung finden Sie in der Entwicklungsübersicht für Synapse SQL.