数据切分方案在提高大数据查询性能过程中的应用
2016-12-21杨阳
杨阳
摘 要 在当今互联网技术广泛普及的今天,大数据已经不再是新的研究课题,在当今数据来源越来越繁杂,每天都有海量的数据进行储存、访问的形势下,过高的数据负载对系统的稳定性与扩展性造成不可忽视的影响。基于此,本文分析采用数据切分方案的特征,并对以数据切分方案提高大数据查询性能的应用进行了研究与设计。
【关键词】数据切分 方案 大数据 查询性能 设计
1 数据切分概述
数据切分方法是按照某种切分规则将数据分布到指定的范围内,达到数据查询时提高系统并行处理能力的目的。数据切分后规模会进一步的减小,而且通常分布在多个数据库中,当对数据进行查询时,查询的响应时间会大大降低,也可以减少通信开销,平衡系统负载和减少计算量,从而提高系统性能。
2 数据切分模式及特征
数据切分按照不同的切分规则类型,可以分为垂直切分、水平切分两种切分模式。
垂直切分是根据业务的特性,将不同的数据表按照某种切分规则切分到不同的数据库上。垂直切分的最大特点是切分规则比较简单,实施起来也比较方便,适合各个模块耦合度低、相互影响小、业务逻辑简单清晰的系统。这种系统很容易将不同模块所使用的表拆分到不同的数据库中。
水平切分则是根据表中数据的逻辑关系,按照某种切分规则将同一个表中的数据拆分到多个数据库上,相对于垂直切分来说切分规则复杂一些。当一张表中的数据量巨大而且増长速度比较快时,为了提高查询的效率就需要对其进行水平切分,按照指定的规则将表中的数据拆分到不同的数据库中。水平切分通常需要根据指定字段进行数据切分,常用的切分规则如下:
2.1 枚举法
比如数据是按照地区省份来保存的,用户通过多级别划分的,本规则适用于这些特定的场景。
2.2 求模
如果分片字段为数字,对分片字段进行十进制/百进制求模运算,数据可以均匀落在各分片内,也可以对字符串hash取模,支持存在符号字母的字段的分片。
2.3 范围约定
对分片字段约定一个范围,比如ID0-100000为一个分片,ID100001-200000为一个分片。
2.4 按日期
可以按月,按日,按小时分片。
2.5 一致性hash
对指定字段进行hash取值,然后根据hash值将数据进行分片。
当某个表或者某些表的数据量比较大而且访问频繁时,通过垂直切分仍然无法满足系统的读写要求时,就需要将垂直切分和水平切分结合起来使用,先对数据进行垂直切分,然后进行水平切分,通过这两种方式的组合来解决超大型表的读写性能问题。
3 以数据切分提高大数据查询性能的设计方案
当前的大部分企业都拥有自己的数据存储系统,利用数据存储系统可以方便快捷的对企业信息数据进行查询。但当这些信息数据的数据量达到一定级别时,从数据中查询某一数据通常需要花费大量的时间,影响到整体工作效率,因此需要对数据查询进行优化。以下以垂直切分与水平切分方案设计为例,通过对数据的划分来提高海量数据的查询性能。
3.1 垂直切分方案设计
本应用数据包括设备基本信息、内容推送序列信息、用户行为信息及相关统计信息。分析数据的特性可以发现设备基本信息主要是用于查询,数据更新的操作并不是很多。内容推送序列由管理员提前进行编辑,然后推送给各个用户。因此内容序列也是主要用于用户查询操作。用户行为信息是用户使用移动端时产生的日志信息,主要记录用户使用设备浏览广告的次数以及时长等,因此用户行为信息主要进行数据库的写操作。统计信息主要是用户浏览信息的次数,用户的积分等信息,这些信息主要是由定时统计任务用户活动较少的时段对相关信息统计后写入到表中,也主要用于用户查询。
由于应用存在着大量的读写操作,为了保证数据库系统的能够较好的处理用户的读写需求,获得良好的用户体验,应该对数据进行读写分离,将大并发读的数据和大并发写的数据进行垂直切分存入不同的数据库中。
另外,由于用户量巨大,将所有的查询密集的信息存入一个数据库中,并不能满足系统查询性能的需求。同样,将所有的写密集型的数据写到单台数据库,也不能满足系统快速存储数据的需求。因此,需要对数据进行进一步的切分。内容序列信息和统计信息并发查询量都超出了单个数据库的承受能力,所以将这两个信息相关表放在不同的数据库中,以更好的满足用户查询的需求。
3.2 水平切分方案设计
以用户行为信息表为例,由于应用将来会有大量的用户,每天将会有海量记录信息写入数据库。单台数据库己经不能满足如此巨大数据的处理需求,因此,需要对用户行为信息表进行水平切分。
对用户行为信息表进行水平切分需要选取一个字段作为切分依据和标记。本文选取手机号字段进行数据切分,并且按照手机号的地域(省或者直辖市)作为切分标准。在用户不断增加的情况下可以更细粒度的按地域对数据进行划分,系统的扩展性会比较好。
分析用户行为信息的特性发现,用户行为信息的数量随着时间不断的增长。随着用户的不断增多,将会产生大量的数据,而且増长速度也会变快。如此巨大的数据保存在一个表里显然是不合适的。因此,需要对数据表进行进一步拆分。分析发现数据是随着时间线性增加的,因此可以对同一数据库的按照月份对数据进行再次切分,每个月份的数据保存在单独的表中。
4 结语
通过使用垂直切分与水平切分的方法,不仅能够很好的应对信息数据不断增长的形势,还能通过增加维度来降低数据的规模,提高对大数据的并发读写查询性能,有效的解决了海量数据的存储问题和快速查询问题。
参考文献
[1]骆涛.面向大数据处理的并行计算模型及性能优化[D].合肥:中国科学技术大学,2015.
[2]刘义.大规模空间数据的高性能查询处理关键技术研究[D].北京:国防科学技术大学,2013.
[3]王觅.基于虚拟班级的教师远程培训系统设计与实现[D].长沙:湖南大学,2012.
作者单位
国网陕西省电力公司信息通信公司 陕西省西安市 710048