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


Обзор эластичных запросов к базе данных SQL Azure (предварительная версия)

Применимо к: База данных SQL Azure

Функция эластичного запроса (в предварительной версии) позволяет выполнять запрос Transact-SQL (T-SQL), охватывающий несколько баз данных в базе данных SQL Azure. Эта возможность позволяет создавать межбазовые запросы для доступа к удаленным таблицам. Также вы можете подключать средства Майкрософт и сторонних производителей (Excel, PowerBI, Tableau и т. д.) для выполнения запросов на разных уровнях данных со множеством баз данных. С помощью этой функции можно горизонтально увеличивать масштаб запросов до уровней большого объема данных и визуализировать результаты в отчетах по бизнес-аналитике (BI).

Почему рекомендуется использовать эластичные запросы

База данных SQL Azure

В службе "База данных SQL Azure" можно выполнять запросы к базам данных полностью на языке T-SQ. Это позволяет выполнять запросы к удаленным базам данных в режиме только для чтения, а также дает возможность текущим пользователям сервера SQL Server перемещать приложения в Базу данных SQL, применяя имена, состоящие из трех или четырех частей, либо связанный сервер.

Доступно на всех уровнях служб

Эластичный запрос поддерживается на всех уровнях служб Базы данных SQL Azure. Сведения об ограничениях производительности для нижних уровней служб см. в разделе "Ограничения предварительной версии" ниже.

Отправка параметров в удаленные базы данных

Эластичные запросы к удаленным базам данных теперь могут отправлять параметры SQL для выполнения.

Выполнение хранимой процедуры

Выполнить вызовы удаленных хранимых процедур или удаленных функций можно с помощью процедуры sp_execute _remote.

Гибкость

Функция эластичных запросов позволяет внешним таблицам ссылаться на удаленные таблицы с разными именами схем или таблиц.

Сценарии применения эластичных запросов

Основная задача лежит в области упрощения сценариев запросов, когда строки, предоставленные несколькими базами данных, объединяются в один общий набор результатов. Запрос может быть создан либо напрямую пользователем или приложением, либо косвенно — с помощью средств, которые подключены к базе данных. Это особенно полезно при создании отчетов с помощью коммерческих средств бизнес-аналитики или интеграции данных или любого приложения, которое нельзя изменить. Функция эластичных запросов позволяет выполнять межбазовые запросы с использованием уже знакомой процедуры подключения к SQL Server в таких средствах, как Excel, Power BI, Tableau или Cognos. Кроме того, эластичный запрос не только обеспечивает доступ ко всей коллекции баз данных через запросы, выданные SQL Server Management Studio или Visual Studio, но и упрощает обработку межбазовых запросов из Entity Framework или других сред ORM. На рисунке 1 показан сценарий, в котором существующее облачное приложение (использующее клиентскую библиотеку эластичной базы данных) основывается на уровне масштабируемых данных, а функция эластичных запросов используется для создания межбазовых отчетов.

Рисунок 1. Эластичный запрос на уровне масштабируемых данных

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

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

  • вертикальное секционирование — запросы между базами данных (топология 1). Данные секционируются вертикально между несколькими базами данных на слое данных. Как правило, разные наборы таблиц расположены в разных базах данных. Это означает, что схемы разных баз данных различаются. Например, все таблицы, связанные с данными инвентаризации, хранятся в одной базе данных, а таблицы, связанные с учетом, — в другой. Использование подобной топологии предполагает использование первой базы данных для выполнения запросов или создания отчетов по таблицам в нескольких базах данных.

  • Горизонтальное секционирование — сегментирование (топология 2): горизонтальное разделение данных для распределения строк в рамках масштабируемого уровня данных. При таком подходе схемы всех включенных баз данных являются идентичными. Этот подход также называется сегментирования. Сегментирование может выполняться с помощью (1) библиотеки средств эластичной базы данных или (2) как самостоятельное сегментирование. Эластичные запросы используются для создания запросов или построения отчетов на основе нескольких сегментов. Сегменты обычно являются базами данных в эластичном пуле. Эластичные запросы предлагают эффективный способ одновременного обращения ко всем базам данных эластичного пула, если они совместно используют общую схему.

Примечание.

Эластичные запросы лучше всего подходят для создания отчетов, где большую часть обработки (фильтрацию, агрегирование) можно выполнить на стороне внешнего источника. Он не подходит для операций ETL, в которых большое количество данных передается из удаленных баз данных. Для сценариев, предусматривающих значительные рабочие нагрузки для подготовки отчетности или хранения данных с выполнением более сложных запросов, вы можете использовать Azure Synapse Analytics.

Вертикальное секционирование — межбазовые запросы

Сведения о том, как начать писать код, см. в статье Приступая к работе с межбазовыми запросами (вертикальное секционирование) (предварительная версия).

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

Внимание

Вы должны иметь разрешение ALTER ANY EXTERNAL DATA SOURCE. Это разрешение включено в разрешение ALTER DATABASE. ALTER ANY EXTERNAL DATA SOURCE разрешения необходимы для ссылки на базовый источник данных.

Ссылочные данные: топология используется для управления ссылочными данными. На следующем рисунке две таблицы (T1 и T2) с эталонными данными хранятся в выделенной базе данных. Как показано на рисунке, используя эластичный запрос, вы можете получить удаленный доступ к таблицам T1 и T2 из других баз данных. Топологию 1 рекомендуется использовать, если ссылочные таблицы имеют небольшой размер или если в удаленных запросах к таким таблицам используются предикаты селекции.

Рисунок 2. Вертикальное секционирование — использование эластичных запросов для обращения к ссылочным данным

снимок экрана: вертикальное секционирование— использование эластичного запроса для запроса ссылочных данных.

Перекрестные запросы: эластичные запросы позволяют реализовывать сценарии, требующие выполнения запросов по нескольким базам данных SQL. На рисунке 3 показаны четыре разных базы данных: "Управление отношениями с клиентами", "Инвентарные данные", "Управление персоналом" и "Продукты". Запросам, выполняемым в одной из этих баз данных, требуется доступ к одной или всем базам данным. Используя эластичные запросы, вы можете настроить свою базу, выполнив несколько простых инструкций DDL в каждой из этих четырех баз данных. После однократной настройки доступ к удаленной таблице будет предоставятся в виде ссылки на локальную таблицу в запросах T-SQL или используемых средствах бизнес-аналитики. Этот подход рекомендуется, если удаленные запросы не возвращают большие результаты.

Рисунок 3. Вертикальное секционирование — использование эластичных запросов для межбазовых запросов

снимок экрана: вертикальное секционирование— использование эластичного запроса для запроса между различными базами данных.

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

После выполнения инструкций DDL можно получить доступ к удаленной таблице mytable, как если бы это была локальная таблица. База данных SQL Azure автоматически открывает подключение к удаленной базе данных, обрабатывает запрос к удаленной базе данных и возвращает результаты.

Горизонтальное секционирование (сегментирование)

Чтобы использовать эластичные запросы для выполнения задач отчетности на уровне горизонтально секционированных (сегментированных) данных, базы данных на этом уровне должны быть представлены с помощью карты сегментов эластичной базы данных. Как правило, в этом сценарии используется только одна карта сегментов, а роль точки входа для запросов отчетности выполняет выделенная база данных с поддержкой эластичных запросов (головной узел). Доступ к карте сегментов требуется только для этой выделенной базы данных. На рисунке 4 показана топология, конфигурация которой включает базу данных эластичных запросов и карту сегментов. Дополнительные сведения о клиентской библиотеке эластичной базы данных и о создании карт сегментов см. в статье Развертывание баз данных с использованием диспетчера карты сегментов.

Рисунок 4. Горизонтальное секционирование — использование эластичных запросов для создания отчетности по уровням сегментированных данных

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

Примечание.

База данных с поддержкой эластичных запросов (головной узел) может быть отдельной базой или базой данных, на которой размещена карта сегментов. Независимо от выбранной конфигурации убедитесь, что уровень служб и размер вычислительных ресурсов этой базы данных достаточно высоки, чтобы обрабатывать ожидаемое количество запросов на вход или запрос.

Ниже описана поэтапная настройка эластичных запросов к базе данных при горизонтальном секционировании, требующем доступа к набору таблиц, которые находятся (как правило) в нескольких удаленных базах данных в службе "База данных SQL".

После выполнения этих действий вы можете получить доступ к горизонтально секционированной таблице mytable, как если бы это была локальная таблица. База данных SQL Azure автоматически открывает несколько параллельных подключений к удаленным базам данных, хранящим таблицы, обрабатывает запросы к удаленным базам данных и возвращает результаты. Дополнительные сведения о действиях, требуемых при горизонтальном секционировании, см. в статье Отчеты по масштабируемым облачным базам данных (предварительная версия).

Начальные сведения для написания кода см. в статье Отчеты по масштабируемым облачным базам данных (предварительная версия).

Внимание

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

Запросы T-SQL

Определив внешние источники данных и внешние таблицы, вы можете использовать уже обычные строки подключения к SQL Server для соединения с базами данных, в которых определены внешние таблицы. Затем можно запустить операторы T-SQL для внешних таблиц в данном соединении с ограничениями, описанными далее в этой статье. Дополнительные сведения и примеры запросов T-SQL см. в статьях документации по горизонтальному секционированию и вертикальному секционированию.

Подключение для инструментов

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

Внимание

Эластичные запросы поддерживаются только при подключении с проверкой подлинности SQL.

Себестоимость

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

Ограничения предварительной версии

  • Выполнение первого эластичного запроса может занять несколько минут для небольших ресурсов уровня служб "Стандартный" и "Общего назначения". Это время требуется для загрузки функций, связанных с эластичными запросами. На более высоких уровнях служб и с большим объемом вычислительных ресурсов скорость загрузки будет выше.

  • Сейчас эластичные запросы поддерживает доступ только для чтения к внешним таблицам. Тем не менее вы можете использовать полный набор функций Transact-SQL при работе с базой данных, в которой определена внешняя таблица. Это может быть полезно, например, сохранить временные результаты с помощью, например, SELECT <column_list> INTO <local_table>, или определить хранимые процедуры в базе данных эластичных запросов, ссылающихся на внешние таблицы.

  • За исключением nvarchar(max), LOB-типы (включая пространственные типы) не поддерживаются во внешних таблицах. В качестве обходного решения можно создать представление в удаленной базе данных, которое приводит тип LOB к nvarchar(max), определить внешнюю таблицу на основе этого представления вместо базовой таблицы, а затем в запросах преобразовать его обратно в исходный тип LOB.

  • Столбцы типа данных nvarchar(max) в результирующем наборе отключают расширенные методы пакетной обработки, используемые в реализации эластичных запросов, и могут повлиять на производительность запроса на порядок или даже на два порядка в не канонических случаях использования, когда в результате запроса передается большое количество несуммированных данных.

  • Статистика по столбцам для внешних таблиц в настоящее время не поддерживается. Статистика по таблицам поддерживается, но она создается вручную.

  • Курсоры не поддерживаются для внешних таблиц в Базе данных SQL Azure.

  • Эластичные запросы поддерживает только База данных SQL Azure. Его нельзя использовать для запроса экземпляра SQL Server, Управляемого экземпляра SQL Azure или базы данных SQL Fabric.

  • Приватные каналы сейчас не поддерживают эластичные запросы для тех баз данных, которые являются целевыми объектами внешних источников данных.