Microsoft Azure SQL Data Warehouse

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:11, 23 января 2019.
Open book.svg Авторство
М. К. Концевая
Согласовано: 23.01.2019
Microsoft Azure SQL Data Warehouse
Download.png
Разработчики: Microsoft
Выпущена: March 2009; 10 years ago (2009-03)
Постоянный выпуск: 1.7 / October 2018; 9 months ago (2018-10)
Состояние разработки: активное
Операционная система: Кросс-платформенное
Локализация: Английский язык
Тип ПО: Хранилище данных
Веб-сайт azure.microsoft.com/en-us/

Microsoft Azure SQL Data Warehouse – хранилище данных SQL ASURE. Это облачное корпоративное хранилище данных (EDW), использующее массовую параллельную обработку (MPP) для быстрого выполнения сложных запросов на несколько петабайт данных. Импорт больших данных в хранилище данных SQL происходит с помощью запросов T-SQL PolyBase и использует возможности MPP для выполнения высокопроизводительной аналитики. [Источник 1]

Обзор платформы

В облачном решении для работы с данными данные принимаются в хранилища больших данных из различных источников (рисунок 1). После отправки в хранилище больших данных алгоритмы Hadoop, Spark и машинного обучения выполняют подготовку и обучение данных. Когда данные будут готовы к сложному анализу, хранилище данных SQL запрашивает хранилища больших данных с помощью PolyBase. PolyBase использует стандартные запросы T-SQL для передачи данных в хранилище данных SQL [1].

Хранилище данных SQL сохраняет данные в реляционных таблицах с хранением по столбцам. Этот формат значительно снижает затраты на хранение данных и повышает производительность запросов. По сравнению с традиционными системами баз данных запросы анализа выполняются за секунды вместо минут или за часы вместо дней.[Источник 2]

Рисунок 1 – Microsoft Azure SQL Data Warehouse


Компоненты архитектуры MPP

Хранилище данных SQL использует масштабируемую архитектуру для распределения вычислительной обработки данных на нескольких узлах. Единица масштабирования представляет собой абстракцию вычислительной мощности, известную как единица использования хранилища данных. Хранилище данных SQL отделяет вычислительные ресурсы от ресурсов хранилища, что дает возможность масштабировать вычислительные ресурсы независимо от данных в системе. [2]


В хранилище данных SQL используется архитектура на основе узла (рисунок 2). Приложения подключаются к управляющему узлу и выполняют команды T-SQL. Этот узел представляет собой единую точку входа хранилища данных. Управляющий узел запускает механизм MPP, оптимизирующий запросы параллельной обработки, а затем перенаправляет операции на вычислительные узлы, чтобы обеспечить таким образом параллельную работу. Вычислительные узлы хранят все данные пользователей в службе хранилища Azure и выполняют параллельные запросы. Служба перемещения данных (DMS) [3] представляет собой внутреннюю службу на уровне системы, которая перемещает данные между узлами, что необходимо для выполнения параллельных запросов и возвращения точных результатов.

Рисунок 2 – Компоненты архитектуры МРР

Благодаря отделению ресурсов хранилища от вычислительных ресурсов хранилище данных SQL обеспечивает следующие возможности:

  • определение объема вычислительных ресурсов независимого от потребностей хранилища;
  • увеличение или уменьшение масштаба вычислений без перемещения данных;
  • приостановка вычислений без изменения данных (вы платите только за хранилище);
  • возобновление вычислений во время рабочих часов.

Хранилище Azure

В хранилище данных SQL используется служба хранилища Azure для безопасного хранения данных пользователя. Так как данные хранятся в службе хранилища Azure и управляются ею, в хранилище данных SQL предусмотрена отдельная плата за использование хранилища. Для оптимизации производительности системы сами данные сегментированы в дистрибутивы. При определении таблицы есть возможность выбрать шаблон сегментирования, который будет использоваться для распределения данных. Хранилище данных SQL поддерживает следующие шаблоны сегментирования:

  • Хэш
  • Циклический перебор

Управляющий узел

Управляющий узел характеризует вычислительную мощность хранилища данных. Это внешний интерфейс, который взаимодействует со всеми приложениями и подключениями. Механизм MPP запускается на управляющем узле, чтобы оптимизировать и координировать параллельные запросы. При отправке T-SQL-запроса в хранилище данных SQL управляющий узел преобразует его в запросы, которые будут выполняться на каждом вычислительном узле в параллельном режиме.

Вычислительные узлы

Вычислительные узлы обеспечивают вычислительную мощность. Чтобы выполнить обработку, дистрибутивы сопоставляются с вычислительными узлами. Число вычислительных узлов колеблется от 1 до 60 и определяется уровнем обслуживания хранилища данных.

У каждого вычислительного узла есть идентификатор узла, который видно в представлениях системы. Идентификатор вычислительного узла можно увидеть в столбце node_id в системных представлениях, имена которых начинаются с sys.pdw_nodes. Список системных представлений см. в системном представлении MPP.

Служба перемещения данных

Служба перемещения данных (DMS) — это технология перемещения данных, которая координирует перемещение данных между вычислительными узлами. Некоторым запросам требуется перемещение данных, чтобы параллельные запросы вернули точные результаты. При необходимости перемещения данных DMS гарантирует, что нужные данные окажутся в нужном расположении.

Дистрибутивы

Распределение представляет собой базовую единицу хранения и обработки параллельных запросов, выполняемых для распределенных данных. При выполнении запроса в хранилище данных SQL формируются 60 небольших запросов, которые выполняются параллельно. Каждый из этих 60 небольших запросов выполняется в одном из распределений данных. Каждый вычислительный узел управляет одним или несколькими из 60 распределений. Хранилище данных с максимальным количеством вычислительных ресурсов содержит одно распределение на одном вычислительном узле. Хранилище данных с минимальным количеством вычислительных ресурсов содержит все распределения на одном вычислительном узле.

Таблицы с хэш-распределением

С помощью распределенной хэш-таблицы можно обеспечить наибольшую производительность запроса для операций объединения и агрегирования для больших таблиц.

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

столбец распределения. Хэш-функция использует значения в столбце распределения для присвоения каждой строки распределению.

На следующей схеме показано, как полная (нераспределенная) таблица хранится в качестве хэш-распределенной.

  • Каждая строка относится к одному распределению.
  • Детерминированный хэш-алгоритм присваивает каждую строку одному распределению.
  • Количество строк таблицы в распределении зависит от размеров таблиц (как показано на рисунке 3).

Рисунок 3 – Таблицы с хэш-распределением

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

Таблицы с распределением методом циклического перебора

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

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

Реплицированные таблицы

Реплицированная таблица обеспечивает наилучшую производительность запросов для небольших таблиц.

Полная копия реплицированной таблицы хранится на каждом вычислительном узле (рисунок 4). В результате репликация таблицы устраняет необходимость передавать данные между вычислительными узлами перед операциями соединения или агрегирования. Реплицированные таблицы лучше всего использовать для небольших таблиц. При записи данных требуется дополнительное хранилище и дополнительные расходы, что делает использование больших таблиц нецелесообразным.

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

Рисунок 4 – Реплицированные таблицы

Единицы использования хранилища данных

Ресурсы ЦП хранилища данных SQL, памяти и операции ввода-вывода объединяются в единицы вычисления, которые называются единицами использования хранилища данных (DWU). Единица DWU представляет собой абстрактный, нормализованный объем вычислительных ресурсов и производительности. Изменяя уровень службы, вы можете изменить число единиц DWU, выделенных для системы, что в свою очередь влияет на производительность и стоимость использования системы. [4]


Стоимость производительности зависит от желаемого уровня производительности. Чтобы получить высокую производительность, вы можете увеличить количество единиц использования хранилища данных или уменьшить это количество, что скажется на уровне производительности и стоимости, соответственно. Использование хранилища и операции вычисления оплачиваются отдельно, независимо от изменений количества единиц использования хранилища данных.[Источник 3]

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

  • Насколько быстро стандартным запросом хранения данных сканируется большое количество строк и выполняется их сложная статистическая обработка? Это требует интенсивного использования операций ввода-вывода и ресурсов ЦП.
  • Насколько быстро хранилище данных может принять данные из BLOB-объектов хранилища Azure или Azure Data Lake? Это сетевая операция, которая требует интенсивного использования ресурсов ЦП.
  • Насколько быстро с помощью команды T-SQL CREATE TABLE AS SELECT можно скопировать таблицу? Эта операция предусматривает чтение данных из хранилища, их распространение в различные узлы устройства и повторную запись в хранилище. Эта операция выполняется ЦП и требует интенсивного использования операций ввода-вывода и сетевых ресурсов.

При увеличении единиц DWU происходит следующее:

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

Целевой уровень обслуживания

Целевой уровень обслуживания (SLO) — это параметр масштабируемости, который определяет уровень затрат и производительности хранилища данных. Уровни обслуживания для поколения 2 измеряются в вычислительных единицах использования хранилища данных (cDWU). Пример: DW2000c. Уровни обслуживания поколения 1 измеряются в DWU. Пример: DW2000.

В T-SQL параметр SERVICE_OBJECTIVE определяет уровень обслуживания и уровень производительности хранилища данных.

--Gen1
CREATE DATABASE myElasticSQLDW
WITH
(    SERVICE_OBJECTIVE = 'DW1000'
)
;

--Gen2
CREATE DATABASE myComputeSQLDW
WITH
(    SERVICE_OBJECTIVE = 'DW1000c'
)
;

Уровни производительности и единицы использования хранилища данных

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

  • Хранилища данных поколения 1 измеряются в единицах использования хранилища данных (DWU).
  • Хранилища данных поколения 2 измеряются в вычислительных единицах использования хранилища данных (cDWU).

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

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

Ограничения емкости

Для каждого сервера SQL (например, myserver.database.windows.net) предусмотрена квота DTU (единицы передачи данных), которая позволяет применить только определенное число единиц использования хранилища данных.

Сравнение базы данных ASURE и хранилища данных ASURE

База данных Azure SQL [5] оптимизирована для выполнения операций CRUD (создание, чтение, обновление и удаление), которые обычно выполняются из приложения. Это также называется OLTP (Online Transaction Processing - обработка онлайн-транзакций). Это отражается на функциональности, обычно используемой при создании приложений, которую она предлагает. База данных Azure SQL также масштабируется для OLTP, так как различные уровни цен обычно масштабируются, чтобы обеспечить большую пропускную способность запросов при небольшом объёме данных (текущий максимум составляет 1 ТБ, а в некоторых регионах - 4 ТБ). [Источник 4] Хранилище данных Azure SQL оптимизирован для выполнения задач аналитики данных и работы с большими объемами данных. Это также называется OLAP (Online Analytical Processing - аналитическая онлайн-обработка ). Хранилище данных оптимизировано для OLAP, поскольку оно построено поверх архитектуры MPP (Massive Parallel Processing) и потому, что оно может содержать огромные объемы данных (в настоящее время максимальный размер составляет около 1ПБ) - намного больше, чем база данных Azure SQL.

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

База данных Azure SQL Хранилище данных Azure SQ
Тип данных Реляционный Реляционный
Постоянная георепликация Да Нет
Динамическое маскирование данных Да Нет
Шифрование пассивных данных Да Да
Запросы T-SQL PolyBase Да Да
Автоматическая настройка Да Нет
Массивная параллельная обработка (MPP) Нет Да
Возможность приостановки и возобновления Нет Да
Максимальное количество данных 1 Тб 1 Пб
Максимальное количество одновременно запущенных сеансов 30000 1024
Максимально количество одновременных запросов 6400 32

Оптимальное использование базы данных Azure SQL и хранилища данных Azure SQ

база данных Azure SQL хранилище данных Azure SQ
Использование в качестве базы данных приложения Да
Использование для хранилища данных с большими объемами данных и небольшим количеством пользователей Да
Использование для хранилища данных с максимальным объемом данных 4 ТБ и большим количеством пользователей Да


Примечания

Источники

  1. Microsoft Asure SQL Data Warehouse // Официальный сайт Microsoft Asure. [2017]. Дата обновления: 21.09.2018. URL: https://docs.microsoft.com/ru-ru/azure/sql-data-warehouse/ (дата обращения: 21.09.2018)
  2. MPP-architecture // Официальный сайт Microsoft Asure. [2017]. Дата обновления: 21.09.2018. URL: https://docs.microsoft.com/ru-ru/azure/sql-data-warehouse/massively-parallel-processing-mpp-architecture (дата обращения: 21.09.2018)
  3. What is a data warehouse unit DWU, cDWU // Документация Microsoft Azure SQL Data Warehouse. [2017]. Дата обновления: 23.09.2018. URL: https://docs.microsoft.com/ru-ru/azure/sql-data-warehouse/what-is-a-data-warehouse-unit-dwu-cdwu (дата обращения: 23.09.2018)
  4. Asure SQL database vs warehouse // Stackify. [2018]. Дата обновления: 23.09.2018. URL: https://stackify.com/azure-sql-database-vs-warehouse/ (дата обращения: 23.09.2018)