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 ...
随机推荐
- MFC多线程技术
MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没笑消息机制,通常用来执行后台计算和维护任务,如 ...
- h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗
这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...
- ubuntu 镜像站部署
定时任务 #mirror web */5 * * * * cd /mirror && git pull #mysql mirror 0 */3 * * * rsync -av --de ...
- android图片压缩总结
一.bitmap 图片格式介绍 android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式: bitmap内存大 ...
- EJB3 阶段总结+一个EJB3案例 (1)
经过一段时时间的学习,对EJB3的相关知识和jboss8的配置有了大概的了解. 网上对EJB的评论很多,基本都是负面的,都表示EJB太过于沉重,不容易维护.但通过这段时间的学习,私下认为,EJB3在某 ...
- Java之集合(十)EnumMap
转载请注明源出处:http://www.cnblogs.com/lighten/p/7371744.html 1.前言 本章介绍Map体系中的EnumMap,该类是专门针对枚举类设计的一个集合类.集合 ...
- php 禁止谷歌蜘蛛抓取
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']); if (strpos($useragent, 'googlebot')){ exit(); ...
- Docker运行操作系统环境(BusyBox&Alpine&Debian/Ubuntu&CentOS/Fedora)
目前常用的Linux发行版主要包括Debian/Ubuntu系列和CentOS/Fedora系列.前者以自带软件包版本较新而出名:后者则宣称运行更稳定一些.选择哪个操作系统取决于读者的具体需求.同时, ...
- AngularJS 的常用特性(五)
13.使用路由和 $location 切换视图 对于一些单页面应用来说,有时候需要为用户展示或者隐藏一些子页面视图,可以利用 Angular 的 $route 服务来管理这种场景. 你可以利用路由服务 ...
- 深入理解Java虚拟机:第2章 Java内存区域与内存溢出异常
目录 2.2 运行时数据区域 Java堆 方法区 虚拟机栈 本地方法栈 程序计数器 2.3 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 2.2 运行时数据区域 Jav ...