Открыть сервис

PolyBase

PolyBase — это технология обработки запросов, интегрированная в систему управления базами данных Microsoft SQL Server, которая позволяет выполнять запросы на языке Transact-SQL (T-SQL) к данным, хранящимся во внешних источниках, без необходимости перемещения или копирования этих данных. PolyBase реализует концепцию виртуализации данных, предоставляя единый интерфейс для доступа к реляционным базам данных, нереляционным хранилищам (например, Hadoop, Azure Blob Storage) и файлам различных форматов (CSV, Parquet, ORC). Технология была впервые представлена корпорацией Microsoft в 2015 году как часть платформы аналитики SQL Server 2016 и впоследствии стала доступна в Azure Synapse Analytics (ранее Azure SQL Data Warehouse) и других продуктах Microsoft.

История

Разработка PolyBase началась в рамках проекта «Madison» — исследовательской инициативы Microsoft Research, направленной на интеграцию реляционных баз данных с системами распределённой обработки данных, такими как Apache Hadoop. Основной целью было устранение «разрыва» между транзакционными системами (OLTP) и аналитическими системами (OLAP) путём создания единого движка запросов, способного работать с гетерогенными источниками.

Первая коммерческая версия PolyBase была выпущена в составе SQL Server 2016. Она поддерживала подключение к кластерам Hadoop (HDFS) и хранилищам Azure Blob Storage. В SQL Server 2019 функциональность была значительно расширена: добавлена поддержка внешних таблиц для разнородных источников (Oracle, Teradata, MongoDB, файлы CSV/Parquet), а также возможность записи результатов запросов обратно во внешние источники (INSERT-SELECT). В SQL Server 2022 PolyBase получил поддержку протокола S3 (Amazon S3, MinIO), что позволило подключаться к объектным хранилищам, не принадлежащим экосистеме Microsoft.

В Azure Synapse Analytics PolyBase является ключевым компонентом для загрузки и выгрузки данных, обеспечивая параллельную передачу данных между выделенным пулом SQL (ранее SQL Data Warehouse) и внешними системами.

Архитектура и принцип работы

PolyBase функционирует как распределённый движок запросов, который разбивает задачу на две основные стадии: планирование и выполнение.

Компоненты

  • PolyBase Engine — серверный компонент, встроенный в ядро SQL Server. Он отвечает за оптимизацию запросов, генерацию планов выполнения и координацию работы с внешними источниками.
  • PolyBase Data Movement Service (DMS) — служба перемещения данных, которая обеспечивает параллельную передачу данных между SQL Server и внешними хранилищами. DMS использует протоколы, специфичные для каждого источника (например, WebHDFS для Hadoop, REST API для Azure Blob).
  • Внешние источники данных — объекты SQL Server, определяющие параметры подключения (тип источника, адрес, учётные данные). Поддерживаются следующие типы:
  • Hadoop (HDFS)
  • Azure Blob Storage
  • Azure Data Lake Storage Gen2
  • SQL Server (удалённые экземпляры)
  • Oracle, Teradata, MongoDB
  • Файлы в форматах CSV, Parquet, ORC (через локальную файловую систему или облачные хранилища)
  • S3-совместимые объектные хранилища (с SQL Server 2022)

Процесс выполнения запроса

  1. Пользователь пишет запрос T-SQL, который обращается к внешней таблице (например, SELECT * FROM [Ext].[SalesData]).
  2. PolyBase Engine анализирует запрос и определяет, какие части могут быть переданы для выполнения на стороне внешнего источника (pushdown), а какие должны быть обработаны локально.
  3. Для источников, поддерживающих pushdown (например, Oracle, Teradata), PolyBase отправляет подзапросы непосредственно в эти системы, минимизируя объём передаваемых данных.
  4. Для источников, не поддерживающих pushdown (например, CSV-файлы), PolyBase загружает данные целиком через DMS и выполняет фильтрацию, агрегацию и соединения на стороне SQL Server.
  5. Результаты объединяются и возвращаются клиенту.

Примеры использования

  • Гибридные запросыобъединение данных из локальной базы SQL Server и внешнего хранилища в одном запросе:

``sql SELECT c.CustomerID, o.OrderDate FROM Sales.Customers AS c JOIN [Ext].[Orders] AS o ON c.CustomerID = o.CustomerID; ``

  • Загрузка данныхимпорт данных из внешнего источника в локальную таблицу:

``sql CREATE TABLE LocalSales AS SELECT * FROM [Ext].[SalesData]; ``

  • Выгрузка данныхзапись результатов запроса во внешнее хранилище:

``sql INSERT INTO [Ext].[ExportedData] SELECT * FROM Sales.Orders; ``

Классификация и виды

PolyBase можно классифицировать по способу развёртывания и по типу поддерживаемых источников.

По способу развёртывания

  • Локальный PolyBase (SQL Server) — устанавливается как опция в составе SQL Server 2016 и более поздних версий. Требует настройки кластера PolyBase (Scale-Out) для параллельной обработки.
  • Облачный PolyBase (Azure Synapse Analytics) — встроенный компонент Azure Synapse, оптимизированный для работы с облачными хранилищами (Azure Blob, Data Lake). Не требует отдельной установки.

По типу внешних источников

  • Реляционные источники — Oracle, Teradata, SQL Server (удалённые экземпляры).
  • Нереляционные источники — Hadoop (HDFS), MongoDB.
  • Файловые источники — CSV, Parquet, ORC, JSON (через внешние таблицы).
  • Объектные хранилища — Azure Blob Storage, Amazon S3, MinIO.

Применение

PolyBase используется в сценариях, где требуется объединение данных из разрозненных систем без создания сложных ETL-процессов.

Основные сценарии

  • Аналитика в реальном времени — аналитики могут выполнять запросы к данным в Hadoop или облачных хранилищах, не перемещая их в SQL Server.
  • Архивирование и tiered storage — старые данные могут храниться в дешёвых облачных хранилищах, а доступ к ним осуществляется через PolyBase без потери функциональности.
  • Миграция данных — перенос данных из устаревших систем (Oracle, Teradata) в SQL Server или Azure Synapse с минимальным простоем.
  • Data Lakehouse — PolyBase выступает в роли моста между реляционным миром SQL Server и неструктурированными данными в Data Lake (Parquet, ORC).

Примеры в промышленности

  • Розничная торговля — сеть магазинов использует PolyBase для объединения данных о продажах из локальной базы SQL Server с данными о поведении пользователей из Hadoop-кластера.
  • Финансы — банк загружает исторические транзакции из Oracle в Azure Synapse через PolyBase для построения отчётов по рискам.
  • Логистика — компания хранит логи доставки в Parquet-файлах на Azure Data Lake, а PolyBase позволяет аналитикам выполнять ad-hoc запросы без предварительной загрузки.

Ограничения и критика

Несмотря на преимущества, PolyBase имеет ряд ограничений, которые критикуются специалистами.

  • Производительность — для источников без поддержки pushdown (например, CSV-файлы) PolyBase загружает все данные в SQL Server, что может привести к узким местам при больших объёмах. Скорость передачи данных через DMS может быть ниже, чем у специализированных ETL-инструментов (например, Azure Data Factory).
  • Поддержка типов данных — не все типы данных внешних источников корректно отображаются на типы SQL Server. Например, поддержка вложенных структур JSON ограничена.
  • Сложность настройки — для работы с Hadoop требуется установка и настройка PolyBase Scale-Out кластера, что усложняет развёртывание. В Azure Synapse настройка проще, но требует понимания архитектуры облачных хранилищ.
  • Ограничения по источникам — в SQL Server 2019 PolyBase не поддерживает подключение к MySQL, PostgreSQL или MariaDB напрямую. Для этих СУБД требуется использовать сторонние коннекторы или ODBC.
  • Безопасность — передача данных между системами может потребовать настройки шифрования и аутентификации (Kerberos для Hadoop, SAS-ключи для Azure). Ошибки в конфигурации могут привести к утечкам данных.

Сравнение с аналогами

PolyBase конкурирует с другими технологиями виртуализации данных:

  • Linked Servers (SQL Server) — более старая технология, поддерживающая подключение к удалённым базам данных через OLE DB или ODBC. В отличие от PolyBase, Linked Servers не оптимизированы для параллельной обработки больших объёмов данных и не поддерживают нереляционные источники (Hadoop, Parquet).
  • Apache Presto / Trino — распределённые движки запросов с открытым исходным кодом, поддерживающие широкий спектр источников (Hive, Kafka, Elasticsearch). Presto/Trino могут быть более гибкими, но требуют отдельной инфраструктуры и настройки.
  • Azure Data Factory — облачный сервис для оркестрации ETL-процессов. Data Factory обеспечивает более широкие возможности трансформации данных, но не позволяет выполнять запросы в реальном времени, как PolyBase.

Развитие и будущее

Microsoft продолжает развивать PolyBase в рамках стратегии «гибридного облака» и Azure Arc. В SQL Server 2022 добавлена поддержка S3-совместимых хранилищ, что расширяет возможности для работы с открытыми форматами данных. В Azure Synapse PolyBase интегрируется с Apache Spark, позволяя выполнять запросы как на T-SQL, так и на Python/Scala.

Ожидается, что в будущих версиях PolyBase будет поддерживать больше источников (например, ClickHouse, Snowflake) и улучшит производительность за счёт использования векторной обработки и колоночных индексов.

Источники

  • Microsoft Docs: PolyBase Guide (SQL Server 2016–2022)
  • Microsoft Research: Project Madison — PolyBase Technical Overview
  • Azure Synapse Analytics Documentation: PolyBase Data Loading
  • SQL Server 2019 PolyBase Performance Tuning Guide (Microsoft)
  • Comparison of Virtual Data Federation Technologies (Gartner, 2021)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →