微软并行数据仓库(Parallel Data Warehouse,简称PDW)去年同SQL Server 2008 R2一同发布,该产品设计初衷是为了同Oracle Exadata和Teradata等展开竞 争。PDW真正意义上实现了混合工作负载的能力,用户可以在使用熟悉的SQL Server数据库引擎的情况下,将数据从多个物理服务器上进行扩展。
并行 数据仓库并不是一款软件系统产品,在购买之后你不能简单地将其安装在硬件上 。PDW最基本的配置是双机架,其中一个机架是管理服务器,作为管理节点、控制 节点、lzone节点和备份节点。另一个机架将存放所谓的计算节点,用来真正存储 数据,我们将其称为一个数据机架,它里面是一个10核芯片服务器(具体情况具体 分析)和专有的SAN存储设备。对PDW进行扩展十分简单,添加更多的数据机架即可 。
控制节点提供了一系列的功能,最重要的是,它们提供了查询并行数据 仓库的功能。你连接到控制节点时,并不是使用熟悉的SQL Server Management Studio(SSMS),而是使用一款第三方工具——Nexus Chameleon,它是包含在PDW 安装之内的。由于SSMS不能够直接连接到PDW控制节点,因此用户在使用PDW之前 需要熟悉这款工具。
运行在控制节点上的是一个特殊版本的SQL Server数 据库,它能够将Transact-SQL查询送到PDW计算节点来执行。事实上,来自数据仓 库的数据并不会存储在这个实例上,取而代之,它会存放数据库设置方面的元数 据,并提供暂存空间作为临时数据库。
除了处理数据查询请求之外,控制 节点还会处理你的数据加载过程。数据加载能够通过几种不同的方式来完成,最 简单的一种就是使用Business Intelligence Development Studio (BIDS)工具和 最新SQL Server集成服务(SSIS)的目标连接对象,后者是特别针对PDW研发出的产 品;另外一种方式是将数据加载到所谓的磁头停放区(landing zone),然后使用一 个新的工具叫做DWLOADER来批量加载数据到PDW。DWLOADER的工作原理同bcp工具 非常相似,它可以将数据快速地加载到目标table中。
许多人认为,微软 并行数据仓库同SQL Server或者Oracle的分区表相类似,虽然二者的概念听上去 很像,但实际上有着很大的差别。分区表是指你讲特定区域的数据分割到单独的 分区上,这样在查询的时候就可以只查询一个分区就够了;而PDW中的原理则是截 然相反的,你是将当前数据推送到系统中的每一个计算节点上,这样当你查询数 据的时候实际是由多个计算节点来响应数据请求的。
因此,当使用所有的 计算节点时,你可以增加CPU的数量并提高一次生成的I/O总数。这样的设计增加 了大量的计算资源,可以很大程度上减小响应时间。之前需要几天来完成的操作 ,在使用PDW时仅需几分钟,传统SQL Server实例无法运行的报表,PDW可以快速 地完成。
但是并行数据仓库并不是万能的,它也有自身的缺点。比如在 PDW运行插入insert操作会比传统SQL Server更慢,由于数据插入PDW时,每一行 都需要进行检测才能够决定存储在哪些计算节点上。当在PDW内部创建一个表时, 你需要明确数据是否需要复制到所有存储节点上;往往一个维度表可以这样设置。
第二个表设置选项将用来在计算节点之间发布数据,并具体根据每一列来 决定。当数据加载之后,声明过的列被hash,而hash值将同一个内部表进行比较 ,以决定哪个控制节点存储该数据。由于数据是通过控制节点来加载到系统之内 的,所以必须经过hash过程。然后行数据将从控制节点转移到计算节点进行存储 。
另外一个PDW的缺点就是聚合功能。根据编写的查询,所有被聚合的数 据需要从计算节点转移到控制节点,并存储在临时数据库中,当转移完成后再进 行聚合。如果数据量非常大的话,这个过程将是非常耗费时间的,因为数据的转 移需要网络连接来完成。在一定程度上,用户可以避免此类情况的发生,因此我 们需要对表进行特别的设计,并重新审视我们的查询语句。如果你打算做一个聚 合日志,那么一定要确保彻底测试所有的查询。
并行数据仓库的基础架构 是高度冗余的, PDW内几乎所有的组件都有备份内建在几家之内。两个管理节点 作为并行数据仓库的主控制器可以允许系统管理员对其他服务器进行相应配置 (PDW拥有自身的动态目录,可以将机器同其他任何组策略进行隔绝)。控制节点起 到了一个主动/被动Windows集群的作用,计算节点也可以配置为一个单独的集群 ,因此如果物理服务器宕机,PDW将不会失去所有的CPU计算资源。
微软的 并行数据仓库是一个非常强大的系统,企业可以根据自身需求将其的价值发挥到 最大。但记住PDW并不是SQL Server实例的替代品,二者在工作原理上并不相同。 企业在购买并行数据仓库之前,一定要理解本文中所讲到的内容,以避免操作不 当带来的不必要的麻烦。