Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo se concentra em fornecer várias dicas para usar esquemas definidos pelo usuário T-SQL para desenvolver soluções em pool SQL dedicado.
Esquemas para limites de aplicativos
Os armazéns de dados tradicionais geralmente usam bancos de dados separados para criar limites de aplicativos com base na carga de trabalho, domínio ou segurança.
Por exemplo, um data warehouse tradicional do SQL Server pode incluir um banco de dados de preparo, um banco de dados de data warehouse e alguns bancos de dados de data mart. Nessa topologia, cada banco de dados opera como um limite de carga de trabalho e segurança na arquitetura.
Por outro lado, um pool SQL dedicado executa toda a carga de trabalho do data warehouse em um banco de dados. Não são permitidas junções entre bancos de dados. O pool SQL dedicado espera que todas as tabelas usadas pelo depósito sejam armazenadas em um banco de dados.
Observação
O pool SQL não oferece suporte a consultas entre bancos de dados de qualquer tipo. Consequentemente, as implementações de data warehouse que aproveitam esse padrão precisarão ser revistas.
Recomendações
A seguir estão recomendações para consolidar cargas de trabalho, segurança, domínio e limites funcionais usando esquemas definidos pelo usuário:
- Use um banco de dados em um pool SQL dedicado para executar toda a carga de trabalho do data warehouse.
- Consolide seu ambiente de data warehouse existente para usar um banco de dados de pool SQL dedicado.
- Tire partido de esquemas definidos pelo utilizador para fornecer a fronteira anteriormente implementada utilizando bases de dados.
Se esquemas definidos pelo usuário não tiverem sido usados anteriormente, você terá uma lista limpa. Use o nome do banco de dados antigo como base para seus esquemas definidos pelo usuário no banco de dados dedicado do pool SQL.
Se os esquemas já tiverem sido usados, então você tem algumas opções:
- Remova os nomes de esquema herdados e comece de novo.
- Mantenha os nomes de esquema herdados precedendo o nome do esquema herdado ao nome da tabela.
- Mantenha os nomes de esquema herdados implementando exibições sobre a tabela em um esquema extra para recriar a estrutura de esquema antiga.
Observação
Na primeira inspeção, a opção 3 pode parecer a opção mais apelativa. No entanto, o diabo está nos detalhes. As exibições são somente leitura no pool SQL dedicado. Qualquer modificação de dados ou tabela precisaria ser executada em relação à tabela base. A opção 3 também introduz uma camada de vistas no seu sistema. Você pode querer pensar nisso um pouco mais se já estiver usando visualizações em sua arquitetura.
Exemplos:
Implemente esquemas definidos pelo usuário com base em nomes de banco de dados:
CREATE SCHEMA [stg]; -- stg previously database name for staging database
GO
CREATE SCHEMA [edw]; -- edw previously database name for the data warehouse
GO
CREATE TABLE [stg].[customer] -- create staging tables in the stg schema
( CustKey BIGINT NOT NULL
, ...
);
GO
CREATE TABLE [edw].[customer] -- create data warehouse tables in the edw schema
( CustKey BIGINT NOT NULL
, ...
);
Mantenha os nomes de esquemas herdados antecipando-os ao nome da tabela. Use esquemas para o limite da carga de trabalho:
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- edw defines the data warehouse 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 data warehouse boundary
( CustKey BIGINT NOT NULL
, ...
);
Mantenha os nomes de esquema herdados usando modos de exibição:
CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- stg defines the data warehouse 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 data warehouse tables in the data warehouse 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 precisa de uma revisão do modelo de segurança para o banco de dados. Em muitos casos, você poderá simplificar o modelo de segurança atribuindo permissões no nível do esquema. Se forem necessárias permissões mais granulares, você poderá usar funções de banco de dados.
Próximos passos
Para obter mais dicas de desenvolvimento, consulte Visão geral do desenvolvimento.