Delen via


Door de gebruiker gedefinieerde schema's in Synapse SQL

In de onderstaande secties vindt u verschillende tips voor het gebruik van door de gebruiker gedefinieerde T-SQL-schema's om oplossingen te ontwikkelen binnen Synapse SQL.

Schema's voor toepassingsgrenzen

Traditionele analysearchitectuur maakt vaak gebruik van afzonderlijke databases om toepassingsgrenzen te maken op basis van workload, domein of beveiliging. Een traditionele SQL Server analyse-infrastructuur kan bijvoorbeeld een faseringsdatabase, een analysedatabase en datamart-databases bevatten. In deze topologie werkt elke database als een workload- en beveiligingsgrens in de architectuur.

In plaats daarvan voert Synapse SQL de volledige analyseworkload uit binnen één database. Databaseoverschrijdende joins zijn niet toegestaan. Synapse SQL verwacht dat alle tabellen die door het magazijn worden gebruikt, worden opgeslagen in één database.

Notitie

Toegewezen SQL-pools bieden geen ondersteuning voor query's tussen databases. Daarom moeten analyse-implementaties die gebruikmaken van dit patroon worden herzien. Serverloze SQL-pool ondersteunt query's tussen databases.

Aanbevelingen voor door de gebruiker gedefinieerde schema's

Inbegrepen zijn aanbevelingen voor het consolideren van workloads, beveiliging, domein en functionele grenzen met behulp van door de gebruiker gedefinieerde schema's:

  • Gebruik één database om uw volledige analyseworkload uit te voeren.
  • Consolideer uw bestaande analyseomgeving om één database te gebruiken.
  • Gebruik door de gebruiker gedefinieerde schema's om de grens te bieden die eerder is geïmplementeerd met behulp van databases.

Als er nog geen door de gebruiker gedefinieerde schema's zijn gebruikt, hebt u een schone lei. Gebruik de oude databasenaam als basis voor uw door de gebruiker gedefinieerde schema's in de Synapse SQL-database.

Als er al schema's zijn gebruikt, hebt u een aantal opties:

  • Verwijder de verouderde schemanamen en begin opnieuw
  • Behoud de namen van verouderde schema's door de naam van het verouderde schema in afwachting van de naam van de tabel
  • Behoud de verouderde schemanamen door weergaven over de tabel te implementeren in een extra schema, waardoor de oude schemastructuur opnieuw wordt gemaakt.

Notitie

Bij eerste inspectie lijkt optie 3 misschien de meest aantrekkelijke keuze. Weergaven zijn alleen-lezen in Synapse SQL. Elke wijziging van gegevens of tabellen moet worden uitgevoerd op basis van de basistabel. Optie 3 introduceert ook een laag van weergaven in uw systeem. U kunt hierover nadenken als u al weergaven in uw architectuur gebruikt.

Voorbeelden

Implementeer door de gebruiker gedefinieerde schema's op basis van databasenamen.

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

Behoud de verouderde schemanamen door ze vooraf in behandeling te laten op de naam van de tabel. Gebruik schema's voor de grens van de workload.

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

Behoud de verouderde schemanamen met behulp van weergaven.

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
;

Notitie

Elke wijziging in de schemastrategie vereist een beoordeling van het beveiligingsmodel voor de database. In veel gevallen kunt u het beveiligingsmodel mogelijk vereenvoudigen door machtigingen toe te wijzen op schemaniveau.

Als er meer gedetailleerde machtigingen zijn vereist, kunt u databaserollen gebruiken. Zie het artikel Databaserollen en gebruikers beheren voor meer informatie over databaserollen.

Volgende stappen

Zie Overzicht van Synapse SQL-ontwikkeling voor meer tips voor ontwikkeling.