PDW V2培训简记
最近有幸参加了微软专家进行的为期一周PDW培训,将一些知识点记录如下:
不知道PDW是什么东西的,简单介绍一下:这是微软与HP/Dell合作推出的SQL Server数据仓库一体机,由HP或DELL提供硬件(机柜,四台服务器,两台交换机,IB),再由微软预装PDW版本的SQL Server 2012。购买了以后,直接通电就可运行。容量当然是可以从TB级增长到PB级,处理性能比普通SQL Server 2012快几十上百倍。主要用来进行大数据分析,不适合用于OLTP。
服务器配置:
四台物理的服务器:一台是控制服务器,一台是故障转移服务器,两台是计算节点服务器。
控制服务器上装了四个VM,分别是CTL、VMM、AD和MAD,计算节点每个有8个VM,总共16个计算节点。
两个计算节点通过SAS连接JBOD,四个服务器通过IB连接。
四台物理服务器做了集群,在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应该建立其他的数据库,进行专门化的工作。
1、OLTP的数据库,是应用系统的直接数据库,做增删查改。
2、Loading Server,将数据从OLTP分离出来后,保存在一个Loading Server上,ETL或者ELT导入到PDW。最佳办法是部署SSIS包进行定期任务。
3、Reporting Server,部署分析服务和报表服务,将PDW的分析结果保存在这个数据库中,对领导上层进行服务。
4、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分钟之内就可以搭建完成。
PDW V2培训简记的更多相关文章
- PDW中的Split Querying Process
最近看了关于 SQL Server 的分布式处理方面的论文,觉得它提出的 Polybase 跟之前看过的 HadoopDB 有些神似,这里做个小总结(抽空再把 HadoopDB 的总结贴出来). 不算 ...
- 如何搭建自己的SPRING INITIALIZR server
这两天在慕课学Spring boot ,用idea通过spring initializr新建项目 即使用代理连不上.无奈. 参考了 GitHub - spring-io/initializr: A w ...
- Atitit 教育与培训学校 的计划策划 v2
Atitit 教育与培训学校 的计划策划 1. 历史大趋势,教育的普及化1 2. 我们的目标,人人可以接受硕士博士教育,确保全球60亿人的普世化教育1 3. 学校的注册,可以选择在全球费用最优惠的地方 ...
- Atiti attilax主要成果与解决方案与案例rsm版 v2
Atiti attilax主要成果与解决方案与案例rsm版 v2 1. ##----------主要成果与解决方案与 参与项目1 ###开发流程与培训系列1 #-----组织运营与文化建设系列1 # ...
- 知道创宇研发技能表v2.2
知道创宇研发技能表v2.2 2014/3/9 发布 by @知道创宇(www.knownsec.com) @余弦 & 行之 知道创宇是国内Geek十足且普遍被认为特别有前途的互联网安全公司, ...
- 【转】知道创宇研发技能表v2.1
转自:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.1.html# 知道创宇研发技能表v2.1 创建时间:2012/12/1 2013/4/26 ...
- Atitit jquery 1.4--v1.11 v1.12 v2.0 3.0 的新特性
Atitit jquery 1.4--v1.11 v1.12 v2.0 3.0 的新特性 1.1. Jquery1.12 jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...
- Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx
Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx 1. 场景:应用在项目列表查询场景下1 1.1. 预计初步掌握vue ...
- 知道创宇研发技能表v2.1
创建时间:2012/12/1 2013/4/26 公开发布 2013/7/15 新增:牛人1,2,3 2013/7/20 优化:成长,增加:小事心态.任务拆分.方法论 2013/8/12 更新:Web ...
随机推荐
- OS之进程管理---孤儿进程和僵尸进程
僵尸进程 当一个进程终止时,操作系统会释放其资源,不过它位于进程表中的条目还是在的,直到它的父进程调用wait():这是因为进程表中包含了进程的退出状态.当进程已经终止,但是其父进尚未调用wait() ...
- (转)Python——functools
原文:https://www.cnblogs.com/Security-Darren/p/4168310.html#t7 http://www.wklken.me/posts/2013/08/18/p ...
- Http编程(二)使用Apache 的API实现
要下载jar包 import java.io.FileOutputStream; import java.io.IOException; import org.apache.http.HttpEnti ...
- Hadoop网站日志数据清洗——正则表达式实现
周旭龙前辈的Hadoop学习笔记—网站日志分析项目案例简明.经典,业已成为高校大数据相关专业的实验项目.上周博主也完成了这个实验,不同于周前辈使用特殊符号切割字符串得到数据的做法,博主使用了正则表达式 ...
- [中英对照]Linux kernel coding style | Linux内核编码风格
Linux kernel coding style | Linux内核编码风格 This is a short document describing the preferred coding sty ...
- 一个快速搜索下载jar包的网站
在偶然的机会,我一个快速搜索下载jar包的网站.里面涵盖了所有的几乎全世界开源的jar包,感觉这个功能特别适合java.android开发者使用,共享出来給大家悄悄. 百度一下:manyjar,就可以 ...
- [笔记] Fiddler 抓包工具的使用
目录 Filler 的特点 Fidder工具的下载安装 Fidder 证书安装 Fiddler工作原理 Fidder 常见的命令和按钮 Fiddler 各种疑难杂症 Fillder 的特点 Fidde ...
- Maven Debug
1.在pom.xml中新增plugin <plugin> <groupId>org.mortbay.jetty</groupId> <artifact ...
- Maven可以提交到官方公共仓库maven.org
参考http://central.sonatype.org/pages/ossrh-guide.html这个网址的操作,即可提交到maven.org. 这里有具体的实践方法:http://blog.c ...
- APS审核经验+审核资料汇总——计算机科学与技术专业上海德语审核
1.APS是什么 德国驻华使馆文化处留德人员审核部(简称APS)成立于2001年7月,是由德国驻华使馆文化处和德意志学术交流中心(DAAD)在北京共同合作成立的服务机构. APS是中国学生前往德国留学 ...