搜索 | 会员  
数据库技术分析及应用
来源: 收集   作者:洪福成  日期:2016/3/29  类别:数据库  主题:Oracle  编辑:乔一
传统数据库的基本架构是30年前以事务处理为主要应用设计的,不能完全满足对海量结构化和非结构化数据的存储管理、复杂分析、关联查询、实时性处理和控制建设成本等多方面的需要。因此,“多种架

一、OldSQL数据库
       OldSQL数据库泛指传统的关系型数据库,如Oracle、Sybase、SQLServer、DB2、MySQL、PostgreSQL等,以结构化数据为处理对象,提供实时的、面向应用的事务处理能力,支持标准SQL或PL/SQL。

blob.png













   OldSQL数据库采用SMP(Symmetric Multi-Processing)对称多处理架构,汇聚多个服务器的一组CPU处理器,各CPU之间共享内存、总线和存储。可以通过增加CPU、内存来提高性能,进行Scale up的纵向扩展,但由于是共享存储IO带宽有限,无法大规模扩展,适合数据量在数十TB的应用场景。


二、NewSQL数据库
       NewSQL泛指各种新的可扩展、高性能关系型数据库,这类数据库不仅具有对海量结构化数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。

blob.png














       NewSQL数据库工作在一个分布式集群的节点上,采用本地存储(Share-nothing),每个节点拥有一个数据子集。NewSQL有一组节点用来做事务处理,这些节点接到特定的SQL查询后,会把它所需的数据从本地取回来后执行SQL查询,再返回结果。
       与OldSQL数据库共享存储相比,NewSQL数据库采用本地存储,无共享存储I/O限制,可以通过添加节点来Scale out横向扩展,节点数量可以达到数百台,数据量可以达到PB级。
       NewSQL系统虽然在的内部结构变化很大,但是它们有两个显着的共同特点:(1)它们都支持关系数据模型;(2) 它们都使用SQL作为其主要的接口。
       NewSQL数据库有2种存储方式,即行存储和列存储。

blob.png











  

行存储和列存储方式是指数据在磁盘中按照行或者列的方式进行组织和物理存储。行存储架构和列存储架构的数据库分别适用于不同的应用场景,具备各自的优劣势。
·行存储
       行存储数据库适合增加、插入、删除、修改的事务处理处理等。以“修改”为例,数据库先把需要修改的指定记录从硬盘读取到内存,对记录进行修改,然后再从内存保持回到硬盘。由于只需要对指定的记录读取到内存和写入硬盘操作,所以I/O最小,效率最高。
       但是,行存数据库对列的统计分析却需要耗费大量的I/O。对指定列进行统计分析时,需要把整张表读取到内存,然后再逐行对列进行读取分析操作。因此,表结构越大,I/O效率越低。
·列存储
       列存储数据库对增加、插入、删除、修改的事务处理I/O高、效率低,以“修改”为例,列存数据库先把需要修改表的所有列数据从硬盘读取到内存组合成完整的表,然后对指定行记录进行修改,再按照列的方式保存回到硬盘。因此,表结构越大,I/O效率越低。
       但是列存储非常适合做统计查询类操作,统计分析一般是针对指定列进行,只需要把指定列读取到内存进行操作,所以I/O最小,效率最高。
       列存储还具备建立索引来优化统计查询性能。每个数据包在加载数据时自动建立索引,索引是对每个列存数据包的描述,包含基本的统计信息,如:最大值、最小值、平均值等,在数据查询时只需要解包就能得到统计值,可进一步降低I/O,对复杂查询的优化效果明显。索引本身占空间很少,扩展性很好,建立索引后无膨胀。建立索引的速度快,后续的数据包建立索引的速度不会受到前面数据包的影响。

blob.png













       

列存储能够进行数据压缩来节省存储空间,按照数据类型和数据分布规律自动选择最优压缩算法,压缩比可达1:20,可以节省50%-90%的存储空间,大大降低数据处理,压缩态下对I/O 要求大大降低,数据加载和查询性能明显提升。


三、NoSQL数据库
       随着互联网web2.0网站的兴起,传统的关系数据库对数据严格定义的特点成为新数据业务存储难以克服的问题,如关系数据库要求实体完整性、参照完整性和用户定义完整性等,而互联网数据无法适配严格完整性要求。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
       NoSQL泛指非关系型的数据库,可以分为四类,包括:键值(Key-Value)存储数据库,如:Redis;列存储数据库,如: HBase;文档型数据库,如:MongoDb;图形(Graph)数据库,如:InfoGrid。其中,HBase是Hadoop开源框架采用的数据库。
       HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,可在X86服务器系统上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,使用Hadoop MapReduce来处理海量数据,利用Hadoop Zookeeper作为协同服务。

Hadoop生态圈 

图6 Hadoop生态圈


       上图描述Hadoop 生态圈中的各层系统。其中,HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。

       四、数据库技术对比

数据库对比 










图7 数据库对比


       如上图所示,从十多个方面来综合对比OldSQL、NewSQL和NoSQL数据库,不同类型的数据库适合不同的应用场景,交易型场景必须选择OldSQL数据库或者NewSQL行存数据库,分析型场景则可以根据数据量大小和数据类型等因素选择NewSQL列存数据库或者NoSQL数据库。


五、数据库混合部署应用
       不同架构数据库混合使用的模式可以概括为:OldSQL + NewSQL、OldSQL + NoSQL、NewSQL + NoSQL三种主要模式。
1、OldSQL + NewSQL在数据中心类应用中混合部署

OldSQL + NewSQL混合应用 






图8 OldSQL + NewSQL混合应用


       OldSQL数据库能够满足交易型应用的事务处理能力需求,OldSQL存储热数据,把历史数据同步备份到NewSQL数据库中,减少OldSQL数据的数据量,提升事务处理性能。NewSQL在实时性、复杂分析、即席查询等方面具备独特优势,同时面对海量数据具备较强的横向扩展能力,可随着数据量的增长采用集群方式构建存储容量更大的数据中心。
       采用OldSQL + NewSQL混合部署,把“热”数据事务型处理和海量历史“冷”数据分析处理分开在不同数据库系统上进行,OldSQL弥补了NewSQL不适合事务处理的不足,NewSQL弥补了OldSQL在海量数据存储能力和处理性能方面的缺陷。与传统单一的OldSQL模式相比,采用OldSQL + NewSQL混合搭建模式,数据加载性能、即席查询和统计分析性能都可以提升几倍。


2、OldSQL + NoSQL 在互联网大数据应用中混合部署

OldSQL + NoSQL混合应用 





图9 OldSQL + NoSQL混合应用


       在互联网大数据应用中采用OldSQL + NoSQL混合模式,能够很好的解决互联网大数据应用对海量结构化和非结构化数据进行存储和快速处理的需求。在诸如大型电子商务平台互联网大数据应用场景中,OldSQL在应用中负责高价值密度结构化数据的存储和事务型处理,NoSQL在应用中负责存储和处理海量非结构化的数据和低价值密度结构化数据。OldSQL + NoSQL模式在互联网大数据应用中的互补作用体现在,OldSQL弥补了NoSQL在ACID特性和复杂关联运算方面的不足,NoSQL弥补了OldSQL在海量数据存储和非结构化数据处理方面的缺陷。
3、NewSQL + NoSQL 在行业大数据应用中混合部署

 NewSQL + NoSQL混合应用 







图10 NewSQL + NoSQL混合应用


       行业大数据与互联网大数据的区别在于行业大数据的价值密度更高,并且对结构化数据的实时处理、复杂的多表关联分析、即席查询、数据强一致性等都比互联网大数据有更高的要求。行业大数据应用场景主要是分析类应用,如:电信、金融、政务、能源等行业的决策辅助、预测预警、统计分析、经营分析等。
       在行业大数据应用中采用NewSQL + NoSQL混合模式,充分利用NewSQL在结构化数据分析处理方面的优势,以及NoSQL在非结构数据处理方面的优势,实现NewSQL与NoSQL的功能互补,解决行业大数据应用对高价值结构化数据的实时处理、复杂的多表关联分析、即席查询、数据强一致性等要求,以及对海量非结构化数据存储和精确查询的要求。在应用中,NewSQL承担高价值密度结构化数据的存储和分析处理工作,NoSQL承担存储和处理海量非结构化数据和不需要关联分析、Ad-hoc查询较少的低价值密度结构化数据的工作。


六、结束语
       当前信息化应用的多样性、复杂性,以及三种数据库架构各自所具有的优势和局限性,造成任何一种架构的数据库都不能完全满足应用需求。因此,不同架构数据库混合使用,从而弥补其他架构的不足成为必然选择。根据应用场景采用不同架构数据库进行组合搭配,充分发挥每种架构数据库的特点和优势,并且与其他架构数据库形成互补,完全涵盖应用需求,保证数据资源的最优化利用,将成为未来一段时期内信息化应用主要采用的解决方式。


德仔网尊重行业规范,每篇文章都注明有明确的作者和来源;德仔网的原创文章,请转载时务必注明文章作者和来源:德仔网;
头条那些事
大家在关注
广告那些事
我们的推荐
也许感兴趣的
干货