它是和Oracle Exadata PK的吗?
数据仓库一体机
什么是一体机
一体机 (Applicance) 并没有一个通用的定义 , 一体机应该具备以下的一些特征。它应该是为特定的应用领域专门设计的设备,针对特定的用途集中优化,在特定的领域内提供一套完整的解决方案,需要很低的维 护成本。对于最终用户来说一体机应该是能够快速简易的安装,通过标准的接口和非常简单的操作来满足用户的需求。一体机是个黑盒子,用户告诉它想要做什么, 一体机快速的把结果或答案反馈给用户。IPod 就是一个很好的一体机例子,它简单化并且彻底改革了数字娱乐领域。
Netezza- 数据仓库领域真正的一体机
值得骄傲的是 Netezza 的产品是真正的,是专门为数据仓库设计的一体机。 在数据仓库领域许多厂商都推出的自己的“一体机”产品。有些产品只提供软件,用户需要自行的集成软件与硬件。有些产品虽然把软件与硬件结合在一起,但并不 是专门的为数据仓库而设计和优化。这些产品都需要非常复杂并漫长的人工调优过程,而且后续的维护成本也很高昂。 说 Netezza 是真正的一体机是因为它解决了以上问题。它是软件与硬件不可分离的紧密结合体,无缝的整合数据库管理系统(DBMS)、服务器(Server)和存储设备 (Storage)。不需要复杂配置和调优就可以取得非常优异性能。“Netezza”是印度某种方言中的一个词,在英语中的意思是“RESULT”。这 个名字也非常恰如其分的体现了 Netezza 一体机的特点。需要结果么? 那么只需要提出问题。
简单性
Netezza 一体机与传统数据仓库的一个很大区别在于它的简单性。这种简单性体现在方方面面。
· 安装与部署的简单性 : 从外部来看 Netezza 一体机就是一个大盒子,给这个大盒子插上电配置好服务 IP 那它就可以对外提供服务了。而传统的数据仓库往往需要花很大的心思在物理规划设计上。这包括规划存储、配置网络以及安装所需要的软件等等。
· 管理和维护的简单性 : 听起来似乎有点不可思议,但事实确实如此 -Netezza 几乎不需要执行任何传统数据仓库 DBA 所执行的任务
o 没有索引(index)
o 不需要性能调优(tuning)
o 不需要存储管理:没有 dbspace/tablespace 规划和配置,没有 redo/physical long 规划和配置,没有表的 page/block/extent 规划和配置,无需临时表空间的分配与监控,无需 RAID 级别的选择,无需逻辑卷的规划与创建时间
o 无需配置操作系统内核参数以及维护建议的操作系统补丁级别
o 简单的数据分区策略:哈希或者随机
简单性所带来到好处是巨大的。这种简单性可以节省出昂贵的 DBA 管理和维护成本,节省出的资源可以投入到更能够创造出商业价值的任务上而不是乏味的 DBA 任务。是 一个非常简单的创建数据库例子。可以看出 Netezza 的语句十分简单。当然其他的数据仓库语句也可以简单的和 Netezza 一样,但是如果那样的话创建出的数据库是没有经过优化会比清单 1 中创建出的数据库性能差很多。Netezza 的优势就在于用简单的语句(更少的管理与维护)也可以创建出性能很好的数据库。在一些实际的数据仓库数迁移项目中,其它数据仓库数千行的建表语句(包括分 区和索引部分)转换到 Netezza 只用十几行就能代替,并且还能取得更好的性能。由于篇幅的关系这里就不列出建表语句的例子了
清单 1 在某数据仓库上创建一个 database 的语句
CREATE DATABASE TEST
LOGFILE 'E:\OraData\TEST\LOG1TEST.ORA' SIZE 2M,
'E:\OraData\TEST\LOG2TEST.ORA' SIZE 2M,
'E:\OraData\TEST\LOG3TEST.ORA' SIZE 2M,
'E:\OraData\TEST\LOG4TEST.ORA' SIZE 2M,
'E:\OraData\TEST\LOG5TEST.ORA' SIZE 2M
EXTENT MANAGEMENT LOCAL MAXDATAFILES 100
DATAFILE 'E:\OraData\TEST\SYS1TEST.ORA' SIZE 50 M
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE 'E:\OraData\TEST\TEMP.ORA' SIZE 50 M
UNDO TABLESPACE undo DATAFILE 'E:\OraData\TEST\UNDO.ORA' SIZE 50 M
NOARCHIVELOG
CHARACTER SET WE8ISO8859P1;
清单 2 在 Netezza 上创建一个 database 的语句
CREATE DATABASE TEST
Netezza 一体机架构
之前的介绍中说用户可以把 Netezza 一体机看作一个黑盒子。那这个黑盒子是如何在保持简单性的同时又提供高性能的呢?这就需要我们打开黑盒子看一看 Netezza 一体机的独特架构。
主要包括四大关键组件。SMP 主机、S-Blades、磁盘存储柜和网络结构
Netezza 1000
Netezza 1000 是 Netezza 一体机很具代表性的一个型号。在 Netezza 被 IBM 收购之前这个型号的名称是 Netezza TwinFin
· SMP 主机是两台高性能的 Linux 服务器,两台服务器一台是活动的,另外一体是备机。BI 应用程序的请求都会通过活动的 SMP 主机来提交。SMP 主机编译并且生成最优的可执行代码,分发生成的可执行代码给 S-Blades 执行。最后收集并汇总 S-Blades 返回的结果返回给用户。
· S-Blades 是智能的处理节点也是 Netezza 魔法发生的地方。每个 S-Blades 都是一易做图立的服务器它包含了个一台标准的刀片服务器和一块 Netezza 特有的数据库加速卡。刀片服务器和数据库加速卡通过 IBM 的 sidercar 技术整合起来,使它们在逻辑上和物理上都成为一个整体。Netezza 1000 的每个 S-Blades 节点包括 2 个 4 核的 CPU、4 个 2 核的 FPGA 引擎以及 16GB 的内存。
· 磁盘存储柜包含了高密度高性能的磁盘。每块磁盘包含表的一个数据片(data slice)。所有磁盘上的某个表的数据片合起来组成一个表完整的数据。每块磁盘上还包含另外一块磁盘上的数据镜像。磁盘阵列柜通过高速的通道 (3Gb/s SAS)和 S-Blades 连接在一起。
· 网络结构并没有在中标注出来。主要的网络链接线路都在机柜的背面。Netezza 1000 一体机的各个组件是通过高速网络连接起来的。网络有两种一种是 IP 网络另一种是 SAS 存储网络。IP 网络是服务于 SMP 主机与 S-Blades 节点之间以及不同 S-Blades 节点之间的数据通讯。IP 网络中的协议是经过深度定制的,专门为了 Netezza 的应用环境而优化,能够支持上千节点之间同时的大数据量传输。SAS 网络连接了 S-Blades 节点与磁盘存储柜,使 S-Blades 能够高速的访问磁盘上的数据。
Netezza 一体机架构
Netezza 的 AMPP(Asymmetric Massively Parallel Processing)是一个两层结构,专门为了处理多用户的大数据量查询而设计。AMPP 结构是 SMP 前端和 shared nothing 的 MPP 后端的完美结合。前端是 SMP 的高性能 Linux 主机。其主要功能是通过标准的接口(SQL、ODBC、JDBC、OLE DB)对外提供服务。SMP 主机负责编译从应用程序发出的查询请求,生成优化过的可执行代码片段,称之为 snippet,然后分发这些代码片段到所有的 S-Blades 上并行执行。当所有的 S-Blades 都执行完毕 SMP 主机汇总结果后把最终的结果返回给应用程序。后端是由大量的 S-Blades 组成,主要的数据操作过程都是在 S-Blades 上完成的。S-Blades 之间是相互独立的,每个 S-Blades 都会占有自己磁盘和数据片(data slice)在并行处理的时候并不会相互影响。这种结构的好处是可以通过增加 S-Blades 节点和其所使用的磁盘来使性能得到近似线性的提升。Netezza 1000 的 S-Blades 数量可以扩展到 120 个。在面对超大量数据的时候,这种分而治之的方法能收到立竿见影的效果。 这种结构也提供了极大的灵活性通过改变磁盘、S-Blades 和内存的配比来创建出不同型号的 Netezza 一体机。比如增加磁盘数量减少 S-Blades 数量,这样的一体机查询性能有所减弱,但数据容量有所增大。可以用来存放历史数据。
FPGA 与数据流处理
在架构层面上,灵活的 AMPP 架构是 Netezza 一体机具有高性能的一个重要因素,另外一个起到决定性作用的因素就是 Netezza 一体机引入的数据库加速卡和数据流处理概念。这些都发生在 S-Blades 里面,它们极大的增强了一体机数据处理能力。下面将更深入的进入到魔法发生的地方 -S-Blades 里面看看它的独特之处。 S-Blades 包括一个刀片服务器 (8 个 CPU 核 ) 和一块数据加速卡(8 个 FPGA 核)。正常情况下在 Netezza 1000 一体机中一个 S-Blades 管理 8 个数据片(data slices)。一个 CPU 核与一个 FPGA 核再加上一个数据片组成了一个逻辑的处理单元,称之为 Snippet Processor。每个 Snippet Processor 都独立的负责一个数据片的处理,这样当运行查询的时候一个 S-Blades 中就有个 8 个这样的逻辑处理单元并行的处理 8 个数据片。
CPU和 FPGA 各自都有明确的分工对任务的不同阶段进行处理,形成了流水线作业大大提高了性能。展示了一个逻辑处理单元(1 CPU 核 + 1 FPGA 核 + 1 数据片)各个组件的分工以及它们是如何协同工作的。 SMP 主机编译生成可执行的代码片段并且把它们分发到 S-Blades 上去执行。这个代码片段实际上包含两部分内容一部分是用来配置 FPGA 的参数另一部分是 CPU 可执行的程序。FPGA 配置好了参数之后便开始根据配置的参数来执行,这时将建立