Поделиться через


Определяемые пользователем схемы в Synapse SQL

В следующих разделах вы найдете различные советы по использованию определяемых пользователем схем T-SQL для разработки решений в Synapse SQL.

Схемы для границ приложений

Традиционная архитектура аналитики часто использует отдельные базы данных для создания границ приложений на основе рабочей нагрузки, домена или безопасности. Например, традиционная инфраструктура аналитики SQL Server может включать промежуточную базу данных, аналитическую базу данных и витрины данных. В этой топологии каждая база данных работает в качестве рабочей нагрузки и границы безопасности в архитектуре.

Вместо этого Synapse SQL выполняет всю рабочую нагрузку аналитики в одной базе данных. Межбазовые соединения не разрешены. Synapse SQL ожидает, что все таблицы, используемые хранилищем, будут храниться в одной базе данных.

Примечание.

Выделенные пулы SQL не поддерживают межбазовые запросы любого типа. Следовательно, необходимо пересмотреть реализации аналитики, которые используют этот шаблон. Бессерверный пул SQL поддерживает межбазовые запросы.

Рекомендации по определяемой пользователем схеме

Включены рекомендации по консолидации рабочих нагрузок, безопасности, домена и функциональных границ с помощью определяемых пользователем схем:

  • Используйте одну базу данных для выполнения всей рабочей нагрузки аналитики.
  • Консолидация существующей среды аналитики для использования одной базы данных.
  • Используйте определяемые пользователем схемы , чтобы обозначить границу, ранее реализованную с помощью баз данных.

Если пользовательские схемы ранее не использовались, то у вас есть чистый лист. Используйте старое имя базы данных в качестве основы для пользовательских схем в базе данных Synapse SQL.

Если схемы уже использовались, у вас есть несколько вариантов:

  • Удалите устаревшие имена схем и запустите новую версию
  • Сохранение устаревших имен схем путем привязки имени устаревшей схемы к имени таблицы
  • Сохраняйте устаревшие имена схем, реализуя представления над таблицей в дополнительной схеме, которая повторно создает старую структуру схемы.

Примечание.

При первой проверке вариант 3 может показаться наиболее привлекательным выбором. Представления считываются только в Synapse SQL. Любые изменения данных или таблицы должны быть выполнены в базовой таблице. Вариант 3 также вводит слой представлений в вашу систему. Если вы уже используете представления в своей архитектуре, вам стоит дополнительно продумать это.

Примеры

Реализуйте определяемые пользователем схемы на основе имен баз данных.

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

Сохраняйте устаревшие имена схем, добавляя их в имя таблицы. Используйте схемы для границы рабочей нагрузки.

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

Сохраните исходные названия схем с помощью представлений.

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
;

Примечание.

Для любых изменений в стратегии схемы требуется проверка модели безопасности для базы данных. Во многих случаях можно упростить модель безопасности, назначив разрешения на уровне схемы.

Если требуются более подробные разрешения, можно использовать роли базы данных. Дополнительные сведения о ролях базы данных см. в статье "Управление ролями базы данных и пользователями ".

Дальнейшие действия

Дополнительные советы по разработке приведены в обзоре разработки Synapse SQL.