并行数据库技术分析与展望

本文以我个人的理解简单分析下并行数据库的技术要点以及对未来并行数据库的发展做下展望,理解有偏差的地方,欢迎各位指正。

并行数据库的定义

在维基百科上,并行数据库被定义为通过并行使用多个CPU和磁盘来将诸如装载数据、建立索引、执行查询等操作并行化以提升性能的数据库系统。其中最重要的关键词是并行,分布式。

并行数据库的技术要点‍

‍ 并行数据库主要由执行引擎、存储引擎和管理功能模块组成,它们的不同技术风格形成了各个有特色的并行数据库产品。随着Hadoop的兴起,目前MPP数据库主要分成两类,一类是传统的MPP 关系型数据库,比如。Greenplum,Vertica等,另外一类是借鉴了MPP并行数据库的设计思想的SQL on Hadoop类的方案,比如Impala,HAWQ,SparkSQL等

并行数据库比较关键的技术点是存储引擎,而在存储引擎中最重要的就是数据分布按行进行Hash分布是并行数据库的重要特征。其它数据分布方式无法精确控制数据摆放,也无法提供足够的用于查询优化的存储信息。这种紧密耦合的非透明的方式带来了巨大的好处(同样分布的表的高效关联),同时也带来了麻烦(扩展性、高可用等)。

像一些SQL on Hadoop的方案,比如impala,就充分利用了HDFS的短路读和数据本地性的方式来提升SQL查询的性能。没有解决Hash分布的解决方案都难以处理多个大表关联(Join)的问题,它们多通过预关联的方式来规避这个问题,形成某种类似OLAP多维立方体的解决方案(比如Google Dremel、Mesa,eBayKylin等);或通过shuffle实现重新分布(比如Hive或者SparkSQL)。解决了数据分布以后,就要思考计算好Hash后的数据在一个节点中怎么存。通常三种方式:行、列或者行列混合,所以在这基础上出现了很多列存的文件存储格式,比如ORC,Parquet等,以及支持列模式存储的数据库(比如Greenplum,Vertica等就有支持列模式的存储)。

最后考虑的是硬件,目前典型的并行数据库多使用SAS磁盘,而HDFS使用的容量更大、价格更便宜但性能和可靠性稍差的SATA磁盘。使用这种慢速的磁盘是并行数据库目前最大的瓶颈,使得它无法实现效率和可扩展高可用的兼得。随着SSD和内存的价格越来越便宜,性能的快速提高,后续面对以SATA接口SSD代替SAS,SATA磁盘的并行数据库,我觉得很快就会到来,现在一些高端的并行数据库一体机就已经可以采用全部SSD的配置了,用硬件来解决软件的问题是最直接有效的方式。

未来展望

随着云计算技术的发展,我认为以后以云的方式提供数据库服务会越来越多,无论是企业内部的私有云还是对外的公有云。比如AWS RedShift和Openstack Trove (DBaaS)。这给数据库软件带来的变化是它需要支持越来越大的集群,技术难度加大但经济性更好。这也要求要具备更好的管控能力。数据库软件需要越来越为大规模集群设计。因此我认为,在上述趋势的发展之下。并行数据库的软件模块或者叫组件的分工会越来越细化。以前只有主节点和数据节点两类。有的数据库找一些空的数据节点来作为装载节点。那么未来接入节点、协调节点、元数据节点、日志节点、安全节点、SQL解析和优化节点、数据装载和导出节点、数据节点可能会被单独分析出来(数据节点的对等性必须得到保护)。并且这些组件的实例均需要支持通过软件的方式灵活配置数量等,而不是写到代码之中。在架构设计之初就考虑并行、负载分担和可扩展等。组件之间通过Zookeeper之类的方式进行协调,实现高可用,松耦合,屏蔽内部细节。

小结

1、 随着云的发展,无论是公有云还是私有云,并行数据库可能会发展的越来越大,专业性更加强。

2、 随着SSD和内存的价格越来越便宜,内存可能会成为数据读写的主要发生点,这将有效的解决当前计算与存储紧密结合的并行数据库的难题。

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2016-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

优秀的代码是反复修改后创造出来的

优秀的代码是反复修改后创造出来的  近些年来,越来越多的人开始转向敏捷开发,而且这些敏捷开发的技术已不再新鲜,大多都是在80和90年代设计形成的。但是,最近几年...

26910
来自专栏程序员互动联盟

向中级程序员转变的10个秘诀

在一封与TechRepublic会员交流的邮件当中,提到了面向程序员的博客、文章及杂志分成两类:面向初学者类以及面向专家类。这个观点很好,有关程序员如何从初级跃...

33910
来自专栏about云

怎么面试架构师【注重招式还是心法】

其实本文想说的是:当面试一个架构师的时候,我们应该问什么问题?我觉得,问什么样的问题,体现了team leader更加看重架构师的哪些特点。 我一直认为,做技术...

2696
来自专栏技术分享

SOA架构设计经验分享—架构、职责、数据一致性

阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3....

2089
来自专栏跟着阿笨一起玩NET

程序员从初级到中级10个秘诀

ustin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate dev...

653
来自专栏程序员互动联盟

为什么这么多人惧怕C++?

C++在诞生之处,赢得了很多了口碑,但是随着编程大众化,以及编程语言的简单化趋势的发展,这门语言很多的弊端表现的越来越明显,特别让初学者选择c++作为初级入门语...

3169
来自专栏BeJavaGod

前端这条路怎么走,作为一名后端er,说说我的见解

近期都游荡在各大群里看大家的讨论,经常看到关于程序员生涯的一些讨论,颇有感触,最近的国庆的确过得有些堕落,都没怎么更新,仔细相信还是应该分享点经验给大家的!想必...

3225
来自专栏大数据和云计算技术

大数据和云计算技术周报(第46期):NoSQL特辑

本期有 HBase、数据库排名、MySQL、ES、Apache Kylin。 希望大家会喜欢!

781
来自专栏我是攻城师

2015年8月 TIOBE 编程语言排行榜单 笑傲的java

25812
来自专栏牛客网

秋招提前批面试记录小结

5、其他的个人问题聊了很多,哎前面都快被怼死了。。建议我考研之类的。。感觉都凉透了。。最后又给我说,面试表现还可以,前面的建议和面试结果没关系

511

扫描关注云+社区