Parallel Data Warehouse Особая благодарность Алексею Халяко из SQLCAT Иван Косяков Technology Architect, MTC Moscow i-ivanko@microsoft.com Шкафы PDW Control Rack Data Rack Control Rack Data Rack/s Состав узлов PDW Стойка с данными Контрольная стойка Расчетные узлы Контрольные узлы (активный/пассивный) Узлы хранения SQL SQL SQL SQL Область выгрузки SQL SQL SQL SQL Dual Fiber Channel Серверы управления Dual Infiniband SQL SQL Узел резервирования SQL Резервный расчетный узел Частная сеть Преимущества PDW Appliance модель Система поставляется с преднастроенной аппаратной частью и установленным SQL Решение разработано и оптимизированно специально для нагрузок типичных для хранилищ данных Пропускные способности CPU и IO сбалансированы для «сканирующих» запросов Проще «стартовать» проект и начать с ним работать: Вся система поставляется как один заказной номер Установив, можно сразу же создавать базы PDW – в чем прелесть? Загрузка данных и запросы выполняются параллельно автоматически Все DML (Inserts, Updates) также параллельны по всем узам Масштабируемость и увеличение скорости обработки запросов добавлением стойки Меньше настроек, меньше сложностей для администраторов Не нужно задумываться о физическом расположении файлов базы данных и таблиц Настройки памяти, параллелизм, много других опций уже настроены оптимально Parallel Data Warehouse Appliance Hardware Architecture Расчетные узлы Контрольные узлы SQL (активный/пассивный) Клиентские драйвера Узлы хранения SQL SQL SQL SQL Область выгрузки СхемаSQL«звезда» или нормализованные данные SQL SQL SQL Данные хранятся на серверах Интерфейс ETL-загрузки SQL Резервные узлы Решение по резервированию Backup Data Корпоративная сеть SQL Резервный сервер БД Частная сеть Dual Fiber Channel Мониторинг центра данных Dual Infiniband Управляющие сервера Преимущества PDW – Massive Parallel Processing Control Rack Data Rack Storage Nodes Compute Nodes Control Nodes SQL Management Servers Landing Zone Backup Node Dual Infiniband SQL ? ? ? ? ? ? ? ? ? ? SQL SQL SQL SQL SQL SQL SQL Dual Fiber Channel Active / Passive Запрос 1 Запрос 1 отправляется управляющему узлу SQL SQL Spare Compute Node Private Network Запрос запускается на 10 расчетных узлах Результаты отсылаются клиенту Преимущества PDW – Massive Parallel Processing Control Rack Data Rack Storage Nodes Compute Nodes Control Nodes SQL Active / Passive ? ? ??? ? ?? ? Management Servers ? ? Landing Zone ? ? Backup Node Dual Infiniband SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? SQL ? ? ? ? ? ?? ? Dual Fiber Channel ? SQL ? Множество запросов одновременно выполняются на всех узлах. Spare Compute Node ? Private Network PDW поддерживает запросы в момент загрузки данных. Пример распределения таблиц DD DD SD SD Date Dim Prod Dim ID Prod Category Prod Sub Cat Prod Desc Sales Fact DD SD DD Date Dim ID Store Dim ID Prod Dim ID Mktg Camp Id Qty Sold Dollars Sold Store Dim ID Store Name Store Mgr Store Size ID ID PD MD Item Dim Date Dim ID Calendar Year Calendar Qtr Calendar Mo Calendar Day Store Dim SF SF 1 1 SD DD Promo Dim Mktg Camp ID Camp Name Camp Mgr Camp Start Camp End SD DD SD SF 2 SF 3 SF 4 SF 5 ID PD ID PD ID PD ID PD Программная архитектура Query Tool MS BI (AS, RS) DWSQL Other ThirdParty Tools Internet Explorer Управляющий узел IIS Data Access 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) Расчетный узел Compute Nodes Compute Nodes Data Movement Service Admin Console (OLEDB, ODBC, ADO.NET, JDBC) User Data SQL Parser Core Engine Services DMS Manager Data Movement Service MPP Engine Coordinator SQL Server Узел резервирования Data Movement Service Узел загрузки DW Authentication DW Configuration DW Schema TempDB Data Movement Service SQL Server Контрольный узел Data Movement Service Data movement across the appliance Distributed query execution operators Демонстрация PDW Проектирование и управление базой данных Physical Storage for PDW Расчетный узел Узел хранения Узел хранения – физическая раскладка файлов RAID GP01 LUN1 RAID GP02 LUN2 LUN3 RAID GP03 LUN4 LUN5 LUN6 RAID GP04 LUN7 LUN8 FG UDB_Dist FG UDB_Dist FG UDB_Dist FG UDB_Dist FG UDB_Dist FG UDB_Dist FG UDB_Dist UDBDist.ndf UDBDist.ndf UDBDist.ndf UDBDist.ndf UDBDist.ndf UDBDist.ndf UDBDist.ndf UDBDist.ndf User DB FG UDB_Dist UDB Replicated FG UDBRepl.ndf UDBRepl.ndf UDBRepl.ndf LUN 9 Log RAID GP05 LUN 10 UDBRepl.ndf UDBRepl.ndf UDBRepl.ndf UDBRepl.ndf 8 distribution filegroups 1 replicated filegroup with 8 files 1 log filegroup UDBRepl.ndf Упрощенный DDL – создание базы Create Database <dbname> with( AUTOGROW = ON | OFF DISTRIBUTION_SIZE = value_in_GB REPLICATION_SIZE = value_in_GB LOG_SIZE = value_in_GB Упрощенный DDL – создание таблицы CREATE TABLE [ db_name . ] table_name [ ( { <column_definition> } ] [ ,...n ] ) [ AS SELECT <select_criteria> ] [ WITH ( <table_option> [ ,...n ] ) ] <column_definition> ::= column_name <data_type> [ NULL | NOT NULL ] <table_option> ::= { [ 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 Insert-Select Load File Bulk Insert Sort each BATCH in memory or TempDB Clustered and/or Partitioned Staging Table Clustered and/or Partitioned Final Table Bulk Insert Phase Insert-Select Phase Staging Table Target Table PDW Distributed Table Load – Step 1 Control Rack Data Rack Control Node Compute Nodes (2) Load Manager creates staging tables DMSEngine Ser er PDW SQL Server DMS Manager Load Manager DMS (3) DMS reads load data and buffers records to send to Compute Nodes roundrobin Infiniband (1) DWLoader invoked/ SSIS DMS Converter Sender Receiver Writer Storage Nodes (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 Landing Zone Load Client Load File/SSIS SSIS API DMS DMS Distributor Converter Sender Receiver Writer (6) Row is bulk inserted into staging table Драйверы для 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 PDW PDW Questions?