架构对比分析
GBase 8s作为一款传统数据库采用的是shared-everything架构,数据库装在单台服务器上,直连存储或者硬盘。此架构只能通过增强服务器配置,采用高速存储总线和换用高速存储或者磁盘去提高性能,属于标准的Scale-Up扩展模式。由于单机系统的负载能力总是有限的,当系统负载达到极限时,数据库系统的整体运行效率就会严重下降。
为了应对Shared-Everything的性能瓶颈,Shared-Storage架构出现,通过采用SAN和共享存储,由多台服务器组成数据库集群,节点之间内存可以互相访问,把计算负载分散到多个节点上去处理,从而横向扩展数据库处理能力,即Scale-Out模式,GBase 8s SDS即是这种架构。但该架构的性能并非线性增长,由于节点和存储之间带宽并不能无限提升,而共享存储的性能增长仍旧属于Scale-Up模式,当集群规模达到一定程度之后,再添加节点服务器,其性能也不会进一步增长。
因为Shared-Storage架构在Scale-Out模式下走得并不彻底,从而催生出Shared-Nothing架构的出现,在Shared-Nothing模式下,数据均匀分布在多台服务器组成的集群中。每个节点存储并处理自己所拥有的数据,其自有资源以及数据均不向其他节点共享,当有SQL任务要执行时,各个节点各自对数据进行处理,再把结果汇总返回,这其中会通过自有的算法和机制确保负载是平衡的。由于数据和资源均无共享,所以其规模可以近乎于无限制的扩展,通过加入新的节点服务器,扩展处理能力和存储容量,且性能呈线性增长。
传统OLTP数据库系统常常采用shared everything和shared-storage架构,而GBase 8a MPP数据库采用Shared-Nothing的分布式架构,由于其在线性扩展能力和批量处理能力的优势,一般用在联机分析处理OLAP(On-Line Analytical Processing)、决策支持和数据挖掘方面。
GBase 8a MPP Cluster是面向海量数据分析型应用领域,以独特的列存储、透明压缩和智能索引技术为基础的一款极高性能数据库产品。产品为完全并行的MPP + Shared Nothing分布式架构,集群所有节点不共享包括CPU、内存、磁盘在内的任何资源,从架构设计之初就规避了共享单元所造成的性能瓶颈和单节点故障问题。
下图是传统的Shared Disk架构,该架构数据只保存一份,有效的保证了数据一致性问题,非常适合OLTP频繁的事务型操作领域,但是在海量数据统计分析应用场景中,因为需要频繁的对磁盘进行大吞吐量的数据访问,所以Shared Disk架构会造成严重的磁盘IO瓶颈。
相比传统的Shared Disk架构,GBase 8a MPP Cluster采用Shared Nothing分布式架构。
数据通过并行加载机制,依靠先进灵活的数据分布策略实现数据向集群的均匀分布加载,保障集群不会出现热节点或数据倾斜。MPP分布式集群架构使得每个节点上的数据更加贴近本地硬件资源,节点在进行数据处理时仅处理本节点数据,避免了访问共享存储而造成的IO拥塞,极大的提升了数据处理性能。
技术特点对比分析
Hadoop是一个开发和运行处理大规模数据的软件平台,属于Apache开源组织,Java语言开发,用于实现在大量计算机组成的集群中对海量数据进行分布式存储和计算。Hadoop最核心设计是包含2个模块:HDFS和MapReduce。其中HDFS提供了海量数据的存储,MapReduce提供了海量数据的分布式计算能力。
HDFS
Hadoop Distributed File System,简称HDFS。其特性包括:
² 有高容错性的特点;
² 整个系统部署在低廉的硬件上;
² 提供高传输率来访问应用程序的数据;
² 适合超大数据集的应用程序;
² 流式数据访问。
HDFS本身是软件系统,不同与传统硬盘和共享存储介质,在文件操作有有其不同之处。
² 不支持文件随机写入:支持随机读,但没有随机写入机制,这与HDFS文件写入机制有关,所以不支持断点续传等功能;
² 需要客户端与HDFS交互:目前已有开源支持HDFS mount 到linux 服务器上,但性能非常不好。
² 适合大文件读取场景: 因为起分块冗余存储机制,其存储架构在处理小于其分块文件大小的文件,会浪费管理节点资源,导致效率低。
² 吞吐和并发具备横向扩展能力: 单节点系统比传统硬盘效率低很多,但在大量机器集群环境下,其吞吐和并发能力可以线性提升。远远高于单一硬件设备。
² 不适合高响应系统: 由于HDFS是为高数据吞吐量应用而设计的,以高延迟为代价。
MapReduce
MapReduce是Google提出的并行计算架构,用于大规模数据集(TB级以上)的并行运算。 此算法的计算能力,随着计算节点的数量而线性上升。一个MapReduce计算处理过程,,可以简要分解为2部分,数据分块映射处理(Map)和数据结果聚合(Reduce)2个步骤,源数据可以存储在HDFS或者第三方数据源上,计算过程临时数据存储再HDFS和内存中,最终获得我们需要的计算结果。
HBase
HBase是Google Bigtable的开源实现版本。数据存储在HDFS中,继承了HDFS的高可靠性、可伸缩架构,同时自己实现了高性能、列存储、实时读写的特性。不同于HDFS高吞吐低响应,HBase设计用于高并发读写场景。
使用特性上,原生HBase不支持JDBC驱动,也不支持SQL方式进行数据查询,只有简单的PUT和GET操作。数据查询通过主键(row key)索引和Scan查询方式实现,在事务上,HBase支持单行事务(可通过上层应用和模块如hive或者coprocessor来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。
HBase中的表一般有这样的特点:
l 大:一个表可以有上亿行,上百万列
l 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
l 稀疏:对于为空(null)的列,并不占用存储空间(每个列族是一个文件,没内容情况下不会占用空间),因此,表可以设计的非常稀疏。
l HBase适用于海量高并发文本数据写入、存储、查询需求场景,这些数据量是传统数据库难以满足的。
GBase 8a MPP Cluster
l Shared Nothing无共享架构:GBase 8a采用扁平的无共享无主节点架构,可以解决采用主从节点架构集群由于主节点故障而导致的单点故障问题,并且解决了在高度并发条件下的系统扩展能力问题,因为独立主节点要身兼集群各个节点的任务管理以及各个节点执行结果的合并,一旦任务并发上升,节点数和任务达到一定数量后,主节点就将力不从心,成为整个集群架构内的单点瓶颈。
l 高可用性:GBase 8a数据库可以根据系统的高可用性要求和硬件投资预算,灵活选择配置系统的副本数,系统的副本数可以是1份或者2份。而某些同类型产品只能在相邻节点配置副本,这样副本数最大只能配置1份。所以GBase 8a数据库可以实现更加灵活的副本配置。
l 高压缩:GBase 8a数据库压缩比最高可达到1:20,压缩算法按数据类型和数据分布不同而优化,自动选择最优压缩算法。实现库级,表级,列级压缩选项,灵活平衡性能与压缩比的关系。市场同类型产品压缩比最高不超过1:10,某些产品仅能达到1:3左右。
l 粗粒度智能索引:GBase 8a将数据分块创建索引(保存统计信息),可用于数据的粗粒度筛选和过滤,这种索引几乎不占用存储空间,且维护工作全部是自动完成的,不需要任何人工干预,所有的数据块在数据加载时即被索引,有效提升查询效率。某些同类型产品仅能通过主键(row key)和主键的range来检索数据,且占用大量空间需要定期进行维护 ,有些同类型产品甚至不支持这种新型索引技术。
l 性能优化策略:某些同类型产品为了提升运算效率,采用了类似物化视图的projection策略对关联,不仅增加数据的存储冗余,还影响存储过程等数据库对象的创建与使用。而GBase 8a的查询优化机制不依赖于物化视图,直接根据运算规则对查询、关联、以及聚合关联运算自动生成最优的执行计划,实现复杂查询处理的性能提升,这种机制可以减少数据大量冗余而带来的空间代价以及维护物化视图带来的性能代价。
l 开发兼容性:某些同类型产品提供基于SDK函数来实现标准SQL之外的处理逻辑,这些SDK函数虽然可以实现各种便利的运算和统计功能,但是这些函数只能在对应的数据库管理系统上执行,程序的可移植性很差,维护成本迁移成本都很高。对于一般SQL语句无法实现的复杂逻辑,GBase 8a通过类似PL/SQL语句的存储过程实现,编程易于掌握,并且程序的可移植性较好。
l 硬件兼容性:GBase 8a数据库可以支持X86服务器架构,也可以支持IBM的Power Linux平台,而某些同类型产品目前只对应X86 PC服务器平台。今后随着IBM Power Linux标准化和低价格化的推进,Power Linux将会成为和Intel X86 PC 服务器平台并列的硬件服务器平台。
HBase 与GBase 8a MPP Cluster对比:
对比项 | HBASE | GBase 8a MPP Cluster |
数据结构 | HBase表中的每行数据,都有一个唯一标识,称为行键(RowKey) | 列式存储,每一列的地位对等 |
数据存储 | 依赖HDFS | 依赖于本地存储 |
硬件架构 | 支持X86 PC Server | 支持X86 PC Server |
数据存储 | K-V方式组织数据 | 结构化数据 |
大表关联 | 不支持 | 拥有列存、智能索引、高压缩等优势核心技术,擅长大表关联和多表关联 |
复杂查询 | 不支持 | 擅长复杂查询 |
全文检索 | 不支持 | 全文检索在单机单表50亿行数据量下秒级响应 |
即席查询 | 除按key查询性能较优外,其他性能均较差 | 拥有智能索引技术,按任何列、任何条件查询性能均非常优越 |
存储过程及自定义函数 | 不支持 | 完全支持 |
标准SQL-92 | 本身不支持,需要部署第三方组件才可支持 | 完全支持 |
数据访问方式 | 基于API访问 | 基于SQL访问,开发方式可以继承传统应用的开发模式,学习成本低 |
Hadoop 与GBase 8a MPP Cluster对比:
对比项 | GBase 8a MPP Cluster | Hadoop |
应用场景 | 结构化数据复杂关联查询,多维分析、统计分析、准实时即席查询、数据仓库 | 数据采集类分析、日志分析、流处理、机器学习、海量数据离线批处理 |
复杂关联分析 | 采用列存储、高效压缩、智能索引等技术适用于海量数据查询分析,比传统数据库如oracle性能高10-100倍 | 不是关系模型,不适合海量数据的复杂关联查询分析,效率低 |
索引技术 | 智能索引,所有列自动建立,无须手工维护,快速排查无关数据 | Nosql数据库无智能索,需手工建立 |
存储过程 | 支持存储过程,适合行业大数据 | 支持存储过程不同于传统数据库实现方式,需要大量开发工作 |
事务能力 | 支持简单事务,能保证一致性,性能不如传统关系型数据库 | 不支持事务,数据一致性只能依赖应用上去保障,会增加应用开发的复杂性 |
数据类型 | 支持结构化数据 | 支持结构化、半结构化和非机构化数据 |
数据量 | 支持百TB至PB级结构化数据规模,横向支持上百节点集群部署 | 支持PB级结构化、半结构化和非机构化数据规模分析 |
易用性 | 支持SQL标准,开发难度小 | 平台上既懂数据,同时编程经验丰富的高级人才,且很依赖于Hadoop专业厂商 |
可扩展性 | 采用先进Shared nothing分布式架构设计,具备灵活的系统伸缩性;数据量持续增加,支持在线动态扩展,节点具备计算和存储能力,支持横向扩展数百节点 | 采用先进分布式架构设计,具备灵活的系统伸缩性,可扩展数百节点 |
运维管理 | 属于成熟产品,运维量小,本地原厂服务团队超过200人,数量远超国外竞争对手在国内所有人数的总和,服务有保障 | 基于开源框架,运维管理很复杂,人员能力要求高,需要高级的技术人员进行长期维护,维护成本高 |




