Compartir a través de


Esquemas definidos por el usuario en Synapse SQL

En las secciones siguientes, encontrará varias sugerencias para usar esquemas definidos por el usuario de T-SQL para desarrollar soluciones en Synapse SQL.

Esquemas para los límites de la aplicación

La arquitectura de análisis tradicional suele usar bases de datos independientes para crear límites de aplicación en función de la carga de trabajo, el dominio o la seguridad. Por ejemplo, una infraestructura de análisis tradicional de SQL Server podría incluir una base de datos de almacenamiento provisional, una base de datos de análisis y almacenes de datos. En esta topología, cada base de datos funciona como un límite de carga de trabajo y seguridad en la arquitectura.

En su lugar, Synapse SQL ejecuta toda la carga de trabajo de análisis dentro de una base de datos. No se permiten combinaciones entre bases de datos. Synapse SQL espera que todas las tablas usadas por el almacenamiento se almacenen en una base de datos.

Nota:

Los grupos de SQL dedicados no admiten consultas entre bases de datos de ningún tipo. Por lo tanto, las implementaciones de análisis que aprovechan este patrón deberán revisarse. El grupo de SQL sin servidor admite consultas entre bases de datos.

Recomendaciones de esquema definidas por el usuario

Se incluyen recomendaciones para consolidar cargas de trabajo, seguridad, dominio y límites funcionales mediante esquemas definidos por el usuario:

  • Use una base de datos para ejecutar toda la carga de trabajo de análisis.
  • Consolide el entorno de análisis existente para usar una base de datos.
  • Aproveche los esquemas definidos por el usuario para proporcionar el límite implementado previamente mediante bases de datos.

Si los esquemas definidos por el usuario no se han usado anteriormente, tiene un nuevo comienzo. Use el nombre de la base de datos anterior como base para los esquemas definidos por el usuario en la base de datos SQL de Synapse.

Si ya se han usado esquemas, tiene algunas opciones:

  • Eliminación de los nombres de esquema heredados e inicio nuevo
  • Mantenga los nombres de esquema heredados anteponiendo el nombre del esquema heredado al nombre de la tabla.
  • Conserve los nombres de esquema heredados mediante la implementación de vistas sobre la tabla en un esquema adicional, que vuelve a crear la estructura de esquema anterior.

Nota:

En la primera inspección, la opción 3 puede parecer la opción más atractiva. Las vistas son de solo lectura en SQL de Synapse. Cualquier modificación de datos o tabla tendría que realizarse en la tabla base. La opción 3 también introduce una capa de vistas en tu sistema. Es posible que quiera darle un pensamiento adicional si ya usa vistas en la arquitectura.

Ejemplos

Implemente esquemas definidos por el usuario en función de los nombres de base de datos.

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

Mantenga los nombres de esquema heredados anteponiendolos al nombre de la tabla. Use esquemas para el límite de la carga de trabajo.

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

Conservar los nombres de esquema heredados mediante vistas.

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
;

Nota:

Cualquier cambio en la estrategia de esquema requiere una revisión del modelo de seguridad de la base de datos. En muchos casos, es posible que pueda simplificar el modelo de seguridad asignando permisos en el nivel de esquema.

Si se requieren permisos más pormenorizados, puede usar roles de base de datos. Para más información sobre los roles de base de datos, consulte el artículo Administración de roles y usuarios de base de datos .

Pasos siguientes

Para obtener más sugerencias sobre desarrollo, consulte la información general sobre desarrollo de SQL de Synapse.