MPP数据库对比分析

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 概述

随着海量数据问题的出现,海量管理能力,多类型,变化快,高可用性,低成本,高端可扩展性等需求给企业数据战略带来了巨大的挑战。企业数据仓库、数据中心的技术选型变得尤其重要!所以在选型之前,有必要对目前市场上各种大数据量的解决方案进行分析。

2 主流分布式并行处理数据库产品介绍

2.1 Greenplum 2.1.1 基础架构

Greenplum 是基于Hadoop 的一款分布式数据库产品,在处理海量数据方面相比传统数据库有着较大的优势。

Greenplum 整体架构如下图:

数据库由Master Severs 和Segment Severs 通过Interconnect 互联组成。

Master 主机负责:建立与客户端的连接和管理;SQL 的解析并形成执行计划;执行计划向Segment 的分发收集Segment 的执行结果;Master 不存储业务数据,只存储数据字典。

Segment 主机负责:业务数据的存储和存取;用户查询SQL 的执行。

2.1.2 主要特性

Greenplum 整体有如下技术特点: Shared-nothing 架构

Network Interconnect

...

Master Severs 查询解析、优化、分发

Segment Severs 查询处理、数据存储

External Sources 数据加载

海量数据库采用最易于扩展的Shared-nothing架构,每个节点都有自己的操作系统、数据库、硬件资源,节点之间通过网络来通信。

◆基于gNet Software Interconnect

数据库的内部通信通过基于超级计算的“软件Switch”内部连接层,基于通用的gNet (GigE,10GigE) NICs/switches在节点间传递消息和数据,采用高扩展协议,支持扩展到1000个以上节点。

◆并行加载技术

利用并行数据流引擎,数据加载完全并行,加载数据可达到4。5T/小时(理想配置)。并且可以直接通过SQL语句对外部表进行操作

◆支持行、列压缩存储技术

海量数据库支持ZLIB和QUICKLZ方式的压缩,压缩比可到10:1。压缩数据不一定会带来性能的下降,压缩表通过利用空闲的CPU资源,而减少I/O资源占用。

海量数据库除支持主流的行存储模式外,还支持列存储模式。如果常用的查询只取表中少量字段,则列模式效率更高,如查询需要取表中的大量字段,行模式效率更高。

海量数据库的多种压缩存储技术在提高数据存储能力的同时,也可根据不同应用需求提高查询的效率

2.1.3主要局限

●列存储模式的使用有限制,不支持delete/update操作。

●用户不可灵活控制事务的提交,用户提交的处理将被自动视作整体事务,整体提交,

整体回滚。

●数据库需要额外的空间清理维护(vacuum),给数据库维护带来额外的工作量。

●用户不能灵活分配或控制服务器资源。

●对磁盘IO有比较高的要求。

●备份机制还不完善,没有增量备份。

2.2Vertica

2.2.1基础架构

与以往常见的行式关系型数据库不同,Vertica 是一种基于列存储(Column-Oriented)的数据库体系结构,这种存储机构更适合在数据仓库存储和商业智能方面发挥特长。

常见的RDBMS 都是面向行(Row-Oriented Database)存储的,在对某一列汇总计算的时候几乎不可避免的要进行额外的I/O 寻址扫描,而面向列存储的数据库能够连续进行I/O 操作,减少了I/O 开销,从而达到数量级上的性能提升。

同时,Vertica 支持海量并行存储(MPP)架构,实现了完全无共享,因此扩展容易,

可以利用廉价的硬件来获取高的性能,具有很高的性价比。

如下图,展示的是单节点上的Vertica 的基本体系结构。

Vertica 体系结构

作为关系型数据库,Vertica 的查询SQL 也是在前端被解析和优化的。但与传统的关系型数据库有所不同,Vertica内部是混合存储的,包括两种不同的存储结构:写优化器(WOS)和读优化器(ROS)。

(1) 写优化器WOS(Write-Optimized Store)

是位于主存储器上的一个数据结构,用于有效的支持数据插入和更新操作;数据的存放是无序的,非压缩的。

(2) 读优化器ROS(Read-Optimized Store)

是磁盘物理存储,存放的是排序和压缩后的数据库大块数据,因此这里的查询相比于WOS 性能更好。

(3) Tuple Mover 进程

是Vertica 内部的一个进程,定期的以大数据块的形式把数据从WOS 移到ROS,由于是对整个WOS 操作,TupleMover 一次能非常有效的排序很多记录,最后批量把它们写入磁盘。

在Vertica 内部,不论是WOS 还是ROS 都是按列存储的。

2.2.2主要特性

Vertica 的关键特性:

1 列存储(Column-orientation)

由于大多数的查询都是要从磁盘读取数据,因此可以说disk I/O 在很大程度上决定了一个查询的最终响应时间。

2 压缩机制(Aggressive Compression)

在数据存储方面,Vertica 利用内部的特定算法对数据进行压缩处理。这样的机制会大大减少disk I/O 的时间(D),同时由于Vertica 对扫描和聚合等操作也在内部进行了优化,可以直接处理压缩后的数据,这样CPU 的工作负载(C)也减少了。如上例中的AVG 聚合函数,Vertica 是不需要将压缩数据先做类似解压这种处理的,因此查询性能得到优化。

3 读优化存储(Read-Optimized Storage)

Vertica 的数据库存储容器ROS Container 专门为读操作进行了优化设计,且其中的数据是经过了排序和压缩处理的,即每个磁盘页上不会有空白空间,而传统的数据库一般会在每页上预留空间以便日后的insert 操作来使用。

4 多种排序方式的冗余存储

为了高可用性和备份恢复的需要,Vertica 会按照不同的排序方式对数据做冗余存储,这不但避免了大量的日志操作,也为查询带来了便利。Vertica 的查询优化器会自动选择最优的排序方式来完成特定的查询。

5 并行无共享设计

Vertica 支持完全无共享海量并行存储(MPP)架构,随着硬件Server 的增加,多个CPU 并行处理,性能也可以得到线性的扩展,这样用户使用廉价的硬件就可以获得较高的性能改善。

6 其他管理特征

除了有优越的性能以外,V ertica 在数据库管理方面也进行了非常人性化的设计。

Vertica Database Designer 是一个界面化的日常管理工具,并且能为用户作出详尽的DB 层物理设计方案,大大减少了日后的性能调优方面的开销。

Vertica 通过K-Safety 值的设置,完成了数据库的备份恢复机制,并保证了高可用性。对于数据库中的每个表每个列,Vertica 都会在至少K+1 个节点上存储,如果有K 个节点宕机,依然能够保证Vertica DB 是完整可用的;当损坏的节点恢复时,Vertica 自动完成节点间的热交换,把其他节点上的正确数据恢复过来。通过这种机制也保证了Vertcia 库的节点数目可以自由伸缩而不会影响到数据库的操作。

Vertica 通过两种技术来实现在线的持续数据装载而不会影响到数据库的访问。

Vertica 通常运行在快照隔离(Snapshot Isolation)模式下,该模式下查询读取的是最近的一致的数据库快照,这个快照是不能被并发的update 或delete 操作更改的,因此查询操作也不需要占用锁,这种方式保证了数据装载(insert)和其他查询能互不干扰。另外,Vertica

相关文档
最新文档