几款分布式数据库的对比

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

1 概述

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

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

2.1 Greenplum

2.1.1 基础架构

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

Greenplum整体架构如下图:

SQL

MapReduce

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

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

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

2.1.2 主要特性

Greenplum整体有如下技术特点:

◆ Shared-nothing架构

海量数据库采用最易于扩展的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.2 Vertica

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 多种排序方式的冗余存储

相关文档
最新文档