PDW V2培训简记

最近有幸参加了微软专家进行的为期一周PDW培训,将一些知识点记录以下:数据库

不知道PDW是什么东西的,简单介绍一下:这是微软与HP/Dell合做推出的SQL Server数据仓库一体机,由HP或DELL提供硬件(机柜,四台服务器,两台交换机,IB),再由微软预装PDW版本的SQL Server 2012。购买了之后,直接通电就可运行。容量固然是能够从TB级增加到PB级,处理性能比普通SQL Server 2012快几十上百倍。主要用来进行大数据分析,不适合用于OLTP。服务器

服务器配置:oop

四台物理的服务器:一台是控制服务器,一台是故障转移服务器,两台是计算节点服务器。性能

控制服务器上装了四个VM,分别是CTL、VMM、AD和MAD,计算节点每一个有8个VM,总共16个计算节点。大数据

两个计算节点经过SAS链接JBOD,四个服务器经过IB链接。spa

四台物理服务器作了集群,在FabricDOM域里,VM也进行了集群,在APPDOM里。设计

服务器装的是Windows 2012,不是R2。索引

尽管管理员密码是知道的,可是一旦装了其它东西,微软就再也不提供支持。字符串

使用和管理部署

能够经过SQLCMD使用。

能够经过DWLoader加载数据。

能够经过VS2012/2013的SSDT进行链接,链接方式跟普通SQL Server相似,但VS2012必须装新版的SSDT才能正确链接到PDW。正确的链接状态下,链接的图标是一个数据库集群样式,与普通的SQL Server链接不一样。其中的表,不一样的表(复制表,分布表)的图标也会有区别。链接之后,能够直接在VS里面进行建立数据库/表,修改等操做。没有GUI,基本上须要用语句。

能够经过SSIS(VS2012/2013的BI项目类型)进行数据加载。这也是微软推荐的导入数据的方式。

能够经过AdminConsole进行监控,经过DWconfig进行管理。

表结构

两种表:复制表,分布表。复制表就是每一个计算节点上都彻底相同的表。分布表是根据选定的字段进行哈希后存储在不一样节点上的表。能够在建立时进行指定,也能够后期更改。

建立一个1G的复制表,会在每个节点上都建立一个1G的表,建立一个16G的分布表,会在每一个节点上建立1G的分表,合起来有16G。

建立表的操做是在CTL上进行的,PDW内部会创建一系列的SQL语句,到每一个计算节点上分别建表,用户不须要知道这些实际表的名字(其实也很是不可读,加了很长的字符串)。CTL上的表实际是空壳。

许多字段类型不支持,包括GUID,Geometry,Text等。每行大小8k,没有主键和外键,没有自增,没有惟一索引。总之就不是一个OLTP的数据库。

基本上不该该进行数据更新和删除。删除应该直接使用Create TABLE as Select ...,相似于普通SQL的INSERT INTO ... Select ...,但比后者快8倍。

DSQL和DataMovement是PDW的核心

DSQL就是在PDW上执行SQL语句,特别是指Join和Group的时候,须要内在的对表进行一系列操做。理解这个机制才能正确的设计数据库。

Share Nothing是执行SQL语句时最但愿的方式,就是说不须要在计算节点之间移动数据,每一个节点执行本身的语句,查询结果发送给CTL,全部节点发送完毕,CTL把它们串起来就直接返回给客户端。没有数据须要移动,没有数据须要在CTL进行计算合并。

但Share Nothing不是那么轻易能作到的事情。多数状况下,都须要对数据进行移动,移动分为两大类:一种是须要在计算节点之间移动数据,一种是将数据从计算节点移动到CTL节点。

复制表若是Inner Join分布表,不须要移动,复制表和复制表之间也不须要。单独的复制表或分布表也不须要。

复杂的状况发生在分布表和分布表之间关联查询时。

以SELECT ... FROM A,B WHERE A.col1 = B.col1 AND A.col2 = value为例:若是A.col1和B.col1都是分布依据字段,并且数据类型彻底相同,那么就能够达到Share Nothing的结果,性能最优。

只要有其中一个字段不是分布依据,那就会产生数据移动,PDW内在的会判断采用哪种移动,若是有一个数据表很小,那么会把它进行复制,就是变成复制表,这种叫作Broadcast Move。其余状况下,会进行Shuffle Move,将数据在节点之间进行从新分布,淡然最后数据会归位。这样会有性能开销,但数据移动是分布数据库不可避免的。

这决定了设计数据库的时候,就应该考虑到使用的一些场景,会执行什么样的查询语句,基本上能够说,明细表的ID是确定不能拿来作分布依据的,起码应该是类型ID之类的字段。

若是SQL语句中有Groupby语句,或者执行Count(),那么不可避免地要进行Patition Move,就是数据在节点上查询计算好以后,将每一个节点的SUM保存到CTL节点,再进行汇总。

数据的移动还有不少种状况,但大多数状况就是上面这些。

应用模式

围绕PDW应该创建其余的数据库,进行专门化的工做。

一、OLTP的数据库,是应用系统的直接数据库,作增删查改。

二、Loading Server,将数据从OLTP分离出来后,保存在一个Loading Server上,ETL或者ELT导入到PDW。最佳办法是部署SSIS包进行按期任务。

三、Reporting Server,部署分析服务和报表服务,将PDW的分析结果保存在这个数据库中,对领导上层进行服务。

四、Backup Server,进行PDW的备份,不须要高性能的计算量,只须要高存储,经过它再往磁带库备份。PDW V1带有backup Server。从V2开始不带,为了缩减成本,须要用户本身搭建。

与Hadoop关系

经过叫Polybase的引擎,使你能像操做table那样操做Hadoop,包括读和写。它的实质是将你的SQL转换成MapReduce,在Hadoop中执行。

有三种方式搭建PDW支持的Hadoop:1.直接让HP/DELL来给你搭建,往PDW机架上放两个Hadoop服务器;2.本身搭建,只支持三家的Hadoop实现,包括微软还有另外两家的,名字没记住。Apache的不支持;3.使用Windows Azure的Hadoop,15分钟以内就能够搭建完成。

相关文章
相关标签/搜索