数据存储和读取方法、装置及系统的制作方法

文档序号:9750894阅读:416来源:国知局
数据存储和读取方法、装置及系统的制作方法
【技术领域】
[0001]本发明涉及数据库技术领域,特别是涉及一种数据存储和读取方法、装置及系统。
【背景技术】
[0002]Hadoop是目前业界使用最多,最成熟的开源大数据存储和计算平台,它包含了很多组件,其中MapReduce(即MR)是hadoop平台上的编程模型。适用于大数据量下的分布式计算。Redis是一种开源的索引/值(key/value)内存数据库,支持多种数据格式的存储。
[0003]Hadoop MR提供了很多数据源的读取实现,如文件,hbase数据库等,但对直接从redis读取大批量数据并没有很好的支持,具体地,Hadoop MR是大数据分布式计算的利器,输入一般是hdf s文件。redi s是key/value的内存数据库,一般是根据单个key来读取单个value。因此目前缺少直接大批量从redis读取数据到hadoop MR的方式。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据存储和读取方法、装置及系统。
[0005]本发明提供一种数据存储方法,包括:
[0006]将数据库中的关键词key按照粒度大小分为两级,其中,粒度较大的第一级key对应的数据值value为粒度较小的第二级key;
[0007]将需要存储的数据作为第二级key的value保存。
[0008]本发明还提供了一种数据读取方法,用于Hadoop编程模型MR从数据库读取数据,包括:
[0009]获取数据库中第一级关键词key对应的数据值value,获取第二级key;
[0010]根据获取的参数N将第二级key分为N份,其中,每份第二级key对应一个计算单元的输入,N大于等于I且小于等于第二级key的个数;
[0011 ] 通过计算单元并发读取相应的第二级key所对应的value。
[0012]本发明还提供了一种数据存储装置,包括:
[0013]分级模块,用于将数据库中的关键词key按照粒度大小分为两级,其中,粒度较大的第一级key对应的数据值value为粒度较小的第二级key;
[0014]存储模块,用于将需要存储的数据作为第二级key的value保存。
[0015]本发明还提供了一种数据读取装置,设置于Hadoop编程模型MR,包括:
[0016]获取模块,用于获取数据库中第一级关键词key对应的数据值value,获取第二级key;
[0017]切分模块,用于根据获取的参数N将第二级key分为N份,其中,每份第二级key对应一个计算单元的输入,N大于等于I且小于等于第二级key的个数;
[0018]读取模块,用于通过计算单元并发读取相应的第二级key所对应的value。
[0019]本发明还提供了一种数据存储读取系统,包括上述的数据存储装置、以及上述的数据读取装置。
[0020]本发明有益效果如下:
[0021]通过将数据库设置为二级模式,扩展了hadoopMR的数据访问范围,将设置为二级模式的数据库也纳入了大数据处理范围中,使得hadoop MR能够直接大批量从数据库读取数据,提升了 hadoop MR的运行效率。
[0022]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0023]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0024]图1是本发明实施例的数据存储方法的流程图;
[0025]图2是本发明实施例的Redis数据库的示意图;
[0026]图3是本发明实施例的数据读取方法的流程图;
[0027]图4是本发明实施例的hadoopMR从redis数据库读取数据的示意图;
[0028]图5是本发明实施例的数据存储装置的结构示意图;
[0029]图6是本发明实施例的数据读取装置的结构示意图;
[0030]图7是本发明实施例的数据存储读取系统的结构示意图。
【具体实施方式】
[0031]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0032]为了解决现有技术中hadoopMR不能够直接大批量从Redis数据库读取数据的问题,本发明提供了一种数据存储和读取方法、装置及系统,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
[0033]方法实施例一
[0034]根据本发明的实施例,提供了一种数据存储方法,图1是本发明实施例的数据存储方法的流程图,如图1所示,根据本发明实施例的数据存储方法包括如下处理:
[0035]步骤101,将数据库中的关键词key按照粒度大小分为两级,其中,粒度较大的第一级key对应的数据值value为粒度较小的第二级key;优选地,所述粒度大小包括:时间范围的大小。也就是说,第一级存储的key是小时的时间范围,如某个小时的数据,value是第二级存储key的列表;第二级存储的key是分钟的时间范围,如某I分钟内的数据,value是上报数据。
[0036]步骤102,将需要存储的数据作为第二级key的value保存。
[0037]优选地,在本发明实施例中,所述数据库为Redis数据库。也就是说,本发明实施例的技术方案在Redi s中采用两级key/value关联的方式来适应批量读取操作。图2是本发明实施例的Redis数据库的示意图,如图2所示,第一级存储的key下的value是第二级存储key
的列表,如keyl,key2,......,keyn。第二级存储的key的value是上报数据,例如,keyl的
value为数据组datasetl,key2的value为数据组dataset2。
[0038]本发明实施例的技术方案将Redis中的数据分两级存储,使得hadoopMR能够直接批量读取redis中的存储数据,从而对redis中存储数据进行分布式计算。hadoop MR能够直接批量读取redis中的存储数据在方法实施例二中进行详细说明。
[0039]方法实施例二
[0040]根据本发明的实施例,提供了一种数据读取方法,用于Hadoop编程模型MR从数据库读取数据,图3是本发明实施例的数据读取方法的流程图,如图3所示,根据本发明实施例的数据读取方法包括如下处理:
[0041 ]步骤301,获取数据库中第一级关键词key对应的数据值value,获取第二级key;
[0042]步骤302,根据获取的参数N将所述第二级key分为N份,其中,每份第二级key对应一个计算单元的输入,所述N大于等于I且小于等于第二级key的个数;
[0043]在步骤302中,优选地,所述获取的参数N具体包括:根据执行并发计算的计算单元的个数,确定参数N。
[0044]步骤303,通过计算单元并发读取相应的第二级key所对应的value。
[0045]以下对Hadoop编程模型MR从redis数据库读取数据进行详细说明。图4是本发明实施例的hadoop MR从redis数据库读取数据的示意图,如图4所示,具体包括如下处理:
[0046]步骤1:在hadoop MR中,先根据需要读取的时间拼装一级key(例如,2015111016表示2015年11月1日15点到16点)读取redi s中的一级存储,获得对应二级存储的所有key。
[0047]步骤2:根据外部程序传入的参数N把所有的二级key分为N份,每份对应一个计算单元mapper的输入,其中,N最大等于所有二级key的数目,1^表示指定多少个mapper程序来执行并发计算。
[0048]步骤3:hadoop MR的每个mapper读取分配给它的二级key/value;所有的mapper加在一起就能读取完2015年11月10日15点到16点这一个小时内存储在redis中的所有数据。
[0049]综上所述,借助于本发明实施例的技术方案,通过将数据库设置为二级模式,扩展了hadoop MR的数据访问范围,将设置为二级模式的数据库也纳入了大数据处理范围中,使得hadoop MR能够直接大批量从数据库读取数据,提升了hadoop MR的运行效率。直接读取内存数据库,比读取文件的性能更高,花费在数据读取上的时间更少。
[0050]装置实施例
[0051]根据本发明的实施例,提供了一种数据存储装置,图5是本发明实施例的数据存储装置的结构示意图,如图5所示,根据本发明实施例的数据存储装置包括:分级模块50、以及存储模块52,以下对本发明实施例的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1