Parallel Data Warehouse Иван Косяков Technology Architect, MTC Moscow Особая благодарность Алексею Халяко из SQLCAT
Control Rack Data Rack Control Rack Data Rack/s Шкафы PDW
Контрольная стойка Стойка с данными Состав узлов PDW
Control Rack Data Rack
Преимущества PDW Appliance модель Система поставляется с преднастроенной аппаратной частью и установленным SQL Решение разработано и оптимизированно специально для нагрузок типичных для хранилищ данных Пропускные способности CPU и IO сбалансированы для «сканирующих» запросов Проще «стартовать» проект и начать с ним работать: Вся система поставляется как один заказной номер Установив, можно сразу же создавать базы
PDW – в чем прелесть? Загрузка данных и запросы выполняются параллельно автоматически Все DML (Inserts, Updates) также параллельны по всем узам Масштабируемость и увеличение скорости обработки запросов добавлением стойки Меньше настроек, меньше сложностей для администраторов Не нужно задумываться о физическом расположении файлов базы данных и таблиц Настройки памяти, параллелизм, много других опций уже настроены оптимально
Parallel Data Warehouse Appliance Hardware Architecture Расчетные узлы Dual Infiniband Контрольные узлы (активный/пассивный) Область выгрузки Резервные узлы Узлы хранения Резервный сервер БД Dual Fiber Channel Управляющие сервера Клиентские драйвера Интерфейс ETL-загрузки Решение по резервированию Мониторинг центра данных Корпоративная сеть Частная сеть Схема «звезда» или нормализованные данные Данные хранятся на серверах Backup Data
Control Rack Data Rack Преимущества PDW – Massive Parallel Processing Запрос 1 Запрос 1 отправляется управляющему узлу ? ? ? ? ? ? ? ? ? ? Запрос запускается на 10 расчетных узлах Результаты отсылаются клиенту
Control Rack Data Rack PDW Benefits – Massive Parallel Processing Query 1 Query 1 is submitted to SQL Server on Control Node ? ? ? ? ? ? ? ? ? ? Query is executed on all 10 Nodes Results are sent back to client
Control Rack Data Rack Преимущества PDW – Massive Parallel Processing Множество запросов одновременно выполняются на всех узлах. PDW поддерживает запросы в момент загрузки данных. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Control Rack Data Rack PDW Benefits – Massive Parallel Processing Multiple queries are simultaneously executed across all nodes. PDW supports querying while data is loading. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Пример распределения таблиц Date Dim Date Dim ID Calendar Year Calendar Qtr Calendar Mo Calendar Day Date Dim ID Calendar Year Calendar Qtr Calendar Mo Calendar Day Store Dim Store Dim ID Store Name Store Mgr Store Size Store Dim ID Store Name Store Mgr Store Size Item Dim Prod Dim ID Prod Category Prod Sub Cat Prod Desc Prod Dim ID Prod Category Prod Sub Cat Prod Desc Sales Fact Date Dim ID Store Dim ID Prod Dim ID Mktg Camp Id Qty Sold Dollars Sold Promo Dim Mktg Camp ID Camp Name Camp Mgr Camp Start Camp End DD SD ID MD SF 1 SF 1 DD SD ID PD SF 2 SF 2 DD SD ID PD SF 3 SF 3 DD SD ID PD SF 4 SF 4 DD SD ID PD SF 5 SF 5 DD SD ID PD SF 1 SF 1
Пример распределения таблиц Date Dim Date Dim ID Calendar Year Calendar Qtr Calendar Mo Calendar Day Date Dim ID Calendar Year Calendar Qtr Calendar Mo Calendar Day Store Dim Store Dim ID Store Name Store Mgr Store Size Store Dim ID Store Name Store Mgr Store Size Item Dim Prod Dim ID Prod Category Prod Sub Cat Prod Desc Prod Dim ID Prod Category Prod Sub Cat Prod Desc Sales Fact Date Dim ID Store Dim ID Prod Dim ID Mktg Camp Id Qty Sold Dollars Sold Promo Dim Mktg Camp ID Camp Name Camp Mgr Camp Start Camp End DD SD ID MD SF 1 SF 1 DD SD ID PD SF 2 SF 2 DD SD ID PD SF 3 SF 3 DD SD ID PD SF 4 SF 4 DD SD ID PD SF 5 SF 5 DD SD ID PD SF 1 SF 1
Управляющий узел Compute Nodes Расчетный узел Query Tool MS BI (AS, RS) MS BI (AS, RS) Контрольный узел Other Third- Party Tools DWSQL Узел загрузки Internet Explorer SQL Server DW Authentication DW Configuration DW Schema TempDB SQL Server User Data Data Movement Service MPP Engine Coordinator IIS Admin Console Data Access (OLEDB, ODBC, ADO.NET, JDBC) Data Access (OLEDB, ODBC, ADO.NET, JDBC) Программная архитектура MPP Engine Coordinator Provides single system image SQL compilation Global metadata and appliance configuration Global query optimization and plan generation Global query execution coordination Global transaction coordination Authentication and authorization Supportability (hardware and software status) MPP Engine Coordinator Provides single system image SQL compilation Global metadata and appliance configuration Global query optimization and plan generation Global query execution coordination Global transaction coordination Authentication and authorization Supportability (hardware and software status) Data Movement Service Data movement across the appliance Distributed query execution operators Data Movement Service Data movement across the appliance Distributed query execution operators SQL Parser DMS Manager Core Engine Services Узел резервирования Data Movement Service
Управляющий узел Compute Nodes Расчетный узел Query Tool MS BI (AS, RS) MS BI (AS, RS) Контрольный узел Other Third- Party Tools DWSQL Узел загрузки Internet Explorer SQL Server DW Authentication DW Configuration DW Schema TempDB SQL Server User Data Data Movement Service MPP Engine Coordinator IIS Admin Console Data Access (OLEDB, ODBC, ADO.NET, JDBC) Data Access (OLEDB, ODBC, ADO.NET, JDBC) Программная архитектура SQL Parser DMS Manager Core Engine Services Узел резервирования Data Movement Service
Management node Compute Nodes Compute Node Query Tool MS BI (AS, RS) MS BI (AS, RS) Control Node Other Third- Party Tools DWSQL Landing Zone Node Internet Explorer SQL Server DW Authentication DW Configuration DW Schema TempDB SQL Server User Data Data Movement Service MPP Engine Coordinator IIS Admin Console Data Access (OLEDB, ODBC, ADO.NET, JDBC) Data Access (OLEDB, ODBC, ADO.NET, JDBC) Software Architecture MPP Engine Coordinator Provides single system image SQL compilation Global metadata and appliance configuration Global query optimization and plan generation Global query execution coordination Global transaction coordination Authentication and authorization Supportability (hardware and software status) MPP Engine Coordinator Provides single system image SQL compilation Global metadata and appliance configuration Global query optimization and plan generation Global query execution coordination Global transaction coordination Authentication and authorization Supportability (hardware and software status) Data Movement Service Data movement across the appliance Distributed query execution operators Data Movement Service Data movement across the appliance Distributed query execution operators SQL Parser DMS Manager Core Engine Services Backup Node Data Movement Service
Демонстрация PDW
Проектирование и управление базой данных Physical Storage for PDW Расчетный узел Узел хранения
Узел хранения – физическая раскладка файлов LUN1 LUN2 LUN3 LUN4 LUN5 LUN6 LUN7 LUN8 User DB RAID GP01RAID GP02RAID GP03RAID GP04 UDB Replicated FG UDBRepl.ndf FG UDB_Dist UDBDist.ndf UDBRepl.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf LUN 9 Log LUN 10 RAID GP05 8 distribution filegroups 1 replicated filegroup with 8 files 1 log filegroup
Compute Node – Physical File Layout LUN1 LUN2 LUN3 LUN4 LUN5 LUN6 LUN7 LUN8 User DB RAID GP01RAID GP02RAID GP03RAID GP04 UDB Replicated FG UDBRepl.ndf FG UDB_Dist UDBDist.ndf UDBRepl.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf FG UDB_Dist UDBDist.ndf LUN 9 Log LUN 10 RAID GP05 8 distribution filegroups 1 replicated filegroup with 8 files 1 log filegroup
Create Database with( AUTOGROW = ON | OFF DISTRIBUTION_SIZE = value_in_GB REPLICATION_SIZE = value_in_GB LOG_SIZE = value_in_GB Упрощенный DDL – создание базы
Упрощенный DDL – создание таблицы CREATE TABLE [ db_name. ] table_name [ ( { } ] [,...n ] ) [ AS SELECT ] [ WITH ( [,...n ] ) ] ::= column_name [ NULL | NOT NULL ] ::= { [ CLUSTER_ON column_name [,...n ] ] [ DISTRIBUTE_ON (column_name) ] | [ REPLICATE ] } [ PARTITION_ON column_name (RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,...n ] ] ) ) ] }
Create Table as Select (CTAS) Создает еще одну копию таблицы Создает Distributed из Replicated или наоборот Создает Новую таблицу, Distributed по другой колонке Создает Новую таблицу с другим Clustered Index, или вообще без индекса Создает другую таблицу с другим критерием секционирования Минимальное журналирование Используется периодически для дефрагментации таблиц Создает новую таблицу с новой колонкой Создает новую таблицу с заменой типов даных.
Загрузка данных в PDW: два варианта
Что происходит внутри PDW Load File Bulk Insert Clustered and/or Partitioned Staging Table Clustered and/or Partitioned Staging Table Insert-Select Clustered and/or Partitioned Final Table Clustered and/or Partitioned Final Table Sort each BATCH in memory or TempDB Sort each BATCH in memory or TempDB Bulk Insert Phase Insert-Select Phase Staging Table Target Table
Data Rack Control Rack PDW Distributed Table Load – Step 1 Control Node Landing Zone Compute Nodes Storage Nodes Infiniband Load File/SSIS Load File/SSIS DMS Ser er PDW Engine Load Manager DMS Manager DMS Manager DMS SQL Server SQL Server Load Client DMS Converter Sender Receiver Writer DMS Converter Sender Receiver Writer (1) DWLoader invoked/ SSIS (1) DWLoader invoked/ SSIS (3) DMS reads load data and buffers records to send to Compute Nodes round- robin (2) Load Manager creates staging tables (4) Each row is converted for bulk insert and hashed based on the distribution column (5) Hashed row is sent to appropriate node receiver for loading (6) Row is bulk inserted into staging table SSIS API Distributor
Драйверы для SSIS (and Nexus Query Tool) X86 Servers ClientTools-x86 SSISSQLPDWDest-x86 X64 Servers ClientTools-x86 ClientTools-amd64 SSISSQLPDWDest-x86 SSISSQLPDWDest-amd64
Integration with PDW: Hub and Spoke PDW
Questions?