Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматриваются несколько советов по использованию определяемых пользователем схем T-SQL для разработки решений в выделенном пуле SQL.
Схемы для границ приложений
Традиционные хранилища данных часто используют отдельные базы данных для создания границ приложений на основе рабочей нагрузки, домена или безопасности.
Например, традиционное хранилище данных на SQL Server может включать стадию промежуточной базы данных, базу данных хранилища данных и некоторые базы данных витрин данных. В этой топологии каждая база данных работает в качестве рабочей нагрузки и границы безопасности в архитектуре.
Напротив, выделенный пул SQL выполняет всю рабочую нагрузку хранилища данных в одной базе данных. Межбазовые соединения не разрешены. Выделенный пул SQL ожидает, что все таблицы, используемые хранилищем, будут храниться в одной базе данных.
Примечание.
Пул SQL не поддерживает запросы между базами данных любого типа. Следовательно, необходимо пересмотреть реализации хранилища данных, которые используют этот шаблон.
Рекомендации
Ниже приведены рекомендации по консолидации рабочих нагрузок, безопасности, домена и функциональных границ с помощью определяемых пользователем схем:
- Используйте одну базу данных в выделенном пуле SQL для выполнения всей рабочей нагрузки хранилища данных.
- Объедините существующую среду хранилища данных для использования выделенной базы данных пула SQL.
- Используйте определяемые пользователем схемы , чтобы обозначить границу, ранее реализованную с помощью баз данных.
Если определяемые пользователем схемы ранее не использовались, у вас есть чистый лист. Используйте старое имя базы данных в качестве основы для пользовательских схем в выделенной базе данных пула SQL.
Если схемы уже использовались, у вас есть несколько вариантов:
- Удалите устаревшие имена схем и запустите новую версию.
- Сохраните устаревшие имена схем, присвоив устаревшее имя схемы имени таблицы.
- Сохраните устаревшие имена схем, создавая представления над таблицей в отдельной схеме для воссоздания старой структуры схемы.
Примечание.
На первом варианте проверки 3 может показаться наиболее привлекательным вариантом. Тем не менее, дьявол кроется в деталях. Представления считываются только в выделенном пуле SQL. Любые изменения данных или таблицы должны быть выполнены в базовой таблице. Вариант 3 также вводит слой представлений в вашу систему. Если вы уже используете представления в вашей архитектуре, вам может понадобиться обдумать это дополнительно.
Примеры:
Реализуйте определяемые пользователем схемы на основе имен баз данных:
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
, ...
);
Сохраняйте устаревшие имена схем, добавляя их к имени таблицы. Используйте схемы для границы рабочей нагрузки:
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
, ...
);
Сохраняйте устаревшие имена схем с помощью представлений:
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
;
Примечание.
Любые изменения в стратегии схемы требуют проверки модели безопасности для базы данных. Во многих случаях можно упростить модель безопасности, назначив разрешения на уровне схемы. Если требуются более подробные разрешения, можно использовать роли базы данных.
Дальнейшие действия
Дополнительные советы по разработке приведены в обзоре разработки.