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

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

并行数据库的定义

在维基百科上,并行数据库被定义为通过并行使用多个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 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python3爬虫抓取网易云音乐热评实战

? 前一段时间刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了。于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的...

4976
来自专栏韩伟的专栏

如何设计运维友好的服务器端系统

如果我们在开发的时候,就充分考虑到系统的运维需求,就算只进行了一些简单的约束,都能让运维工作有巨大的改进。我想这也是所谓DevOps流行起来的原因吧。

5690
来自专栏即时通讯技术

快速理解高性能HTTP服务端的负载均衡技术原理

在一个典型的高并发、大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。HTTP负载均衡的本质上是将W...

791
来自专栏性能与架构

快速认识实时计算系统 Storm

Storm是什么 Storm 是一个分布式数据流处理系统,用于大规模数据的实时处理。 例如用户在购物网站中会产生很多行为记录,如浏览、搜索感兴趣的商品,就可以使...

30811
来自专栏CSDN技术头条

eBay:如何用HDFS分层策略优化数千节点、数百PB的数据存储

目前在eBay的Hadoop集群有数千个节点,支持成千上万的用户使用。他们的Hadoop集群存储数百PB的数据。这篇文章中将探讨eBay如何基于数据使用频率优化...

2226
来自专栏华仔的技术笔记

开源项目README目录规范

4757
来自专栏SEO

SEO常见疑问整理总结(一)

3157
来自专栏高性能服务器开发

12 经典游戏服务器端架构概述

现代电子游戏,基本上都会使用一定的网络功能。从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序。因此,游戏服务器端软...

5637
来自专栏JAVA高级架构

盘点电商大战背后的技术力量支撑

『目的』满足贯穿从商品展示、搜索、购买、支付等整个流程,电商对于精细化、精准化促销运营的需求,使多渠道(终端)、多区域化营销成为简单易行的配置操作,提升运营能力...

1543
来自专栏自动化测试

DIY自动化测试【智能音箱】

    笔者从事智能音箱系统测试,这是一款基于android系统的智能语音助手产品。基本功能特性和测试方法都已稳定,目前多产品快速迭代,涉及的场景较多且数据量大...

7383

扫码关注云+社区