Compartilhar via


Esquemas definidos pelo usuário no SQL do Synapse

Nas seções a seguir, você encontrará várias dicas de como usar esquemas definidos pelo usuário do T-SQL para desenvolver soluções no SQL do Synapse.

Esquemas para limites de aplicativo

A arquitetura de análise tradicional normalmente usa bancos de dados separados para criar limites de aplicativo com base na carga de trabalho, domínio ou segurança. Por exemplo, uma infraestrutura de análise do SQL Server tradicional pode incluir um banco de dados de preparo, um banco de dados de análise e bancos de dados do data mart. Nesta topologia, cada banco de dados funciona como uma carga de trabalho e limite de segurança na arquitetura.

Em vez disso, o SQL do Synapse executa toda a carga de trabalho de análise em um banco de dados. Junções cruzadas de banco de dados não são permitidas. O SQL do Synapse dedicado espera que todas as tabelas usadas pelo warehouse sejam armazenadas em um só banco de dados.

Observação

Os pools de SQL dedicados não oferecem suporte a nenhum tipo de consulta cruzada de banco de dados. Consequentemente, implementações de análise que utilizam esse padrão precisarão ser revisadas. O pool SQL sem servidor dá suporte a consultas entre bancos de dados.

Recomendações de esquema definidas pelo usuário

Estão incluídas as recomendações para consolidar limites funcionais, de carga de trabalho, segurança e domínio usando esquemas definidos pelo usuário:

  • Use um banco de dados para executar toda a sua carga de trabalho analítica.
  • Consolide seu ambiente de análise existente para usar um banco de dados.
  • Utilize esquemas definidos pelo usuário para fornecer o limite implementado anteriormente usando bancos de dados.

Se os esquemas definidos pelo usuário não tiverem sido usados antes, você terá uma imagem fixa limpa. Use um nome antigo do banco de dados como base para os esquemas definidos pelo usuário no banco de dados do SQL do Synapse.

Se os esquemas já foram usados, então você tem algumas opções:

  • Remover os nomes de esquema herdados e começar do zero
  • Manter os nomes de esquema herdados acrescentando o nome do esquema herdado ao nome da tabela
  • Manter os nomes de esquema herdados implementando exibições sobre a tabela em um esquema extra que recria a estrutura do esquema antigo.

Observação

Na primeira inspeção, a opção 3 pode parecer a opção mais atraente. As exibições são lidas somente no SQL do Synapse. Qualquer modificação nos dados ou na tabela precisariam ser executados em relação à tabela base. A opção 3 também apresenta uma camada de modos de exibição em seu sistema. Talvez você queira pensar um pouco sobre isso se já estiver usando modos de exibição em sua arquitetura.

Exemplos

Implemente esquemas definidos pelo usuário com base em nomes de bancos de dados.

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

Manter os nomes de esquema herdados acrescentando-os ao nome da tabela. Usar esquemas para o limite de carga de trabalho.

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

Manter nomes de esquema herdados usando modos de exibição.

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
;

Observação

Qualquer alteração na estratégia de esquema requer uma revisão do modelo de segurança para o banco de dados. Em muitos casos, você poderá simplificar o modelo de segurança ao atribuir permissões no nível do esquema.

Se forem necessárias permissões mais granulares, você poderá usar funções de banco de dados. Para saber mais sobre funções de banco de dados, confira o artigo Gerenciar usuários e funções de banco de dados.

Próximas etapas

Para obter mais dicas de desenvolvimento, consulte Visão geral de desenvolvimento do SQL do Synapse.