一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据存储及检索方法,装置,计算机可读存储介质及电子设备与流程

2022-02-24 18:06:29 来源:中国专利 TAG:


1.本发明涉及计算机数据技术领域,特别是涉及一种数据存储及检索方法,装置,计算机可读存储介质及电子设备。


背景技术:

2.在关系型数据库存储非关系型的key-value数据可以极大提升关系型数据库的使用灵活性,但是现有的key-value存储技术在压缩比与查询性能总是存在各种各样的不足。因此,需要对key-value数据的存储及检索方法进行改进。


技术实现要素:

3.有鉴于此,本发明提供了一种数据存储及检索方法,装置,计算机可读存储介质及电子设备,应用该数据方法对key-value数据进行存储,能够使其同时具备高压缩性能、高加载性能和高查询性能,从而更加适于实用。
4.为了达到上述第一个目的,本发明提供的数据存储方法的技术方案如下:本发明提供的数据存储方法包括以下步骤:获取json文本,所述json文本为json对象格式;所述json文本经处理后输出为mxkv记录;所述mxkv记录经过数据压缩后被写入存储器。
5.本发明提供的数据存储方法还可采用以下技术措施进一步实现。
6.作为优选,所述json文本经mxkv编码器处理后输出为mxkv记录的步骤具体包括以下步骤:对所述json文本进行解析处理,得到key-value记录对;将文本形式的keyname转换为keyid,输出为keyid-value记录对;针对所述keyid-value记录对按照keyid进行排序,得到经过排序的记录对;将所述经过排序的记录对拆分为至少一个记录组,并且,针对key、value分离成key流、value流;根据所述分组信息流的特征,生成索引信息流;将所述key流、value流、索引信息流整合成一个数据流,即得所述mxkv记录。
7.为了达到上述第二个目的,本发明提供的数据检索方法的技术方案如下:本发明提供的数据检索方法包括以下步骤:获取指定的目标key值;在本发明提供的数据存储方法中所述的mxkv记录中,根据所述指定的目标key值,找到与所述指定的目标key值对应的value。
8.本发明提供的数据检索方法还可采用以下技术措施进一步实现。
9.作为优选,所述在本发明提供的数据存储方法中所述的mxkv记录中,根据所述指定的目标key值,找到与所述指定的目标key值对应的value的步骤具体包括以下步骤:
获取所述mxkv记录;将所述mxkv记录分解成分组索引信息流;将所述指定目标key值与所述分组索引信息流进行匹配,若能够匹配,则输出匹配组的数据流,若不存在匹配,则报告无命中。
10.作为优选,所述将所述mxkv记录分解成分组索引信息流的步骤具体包括以下步骤:将所述mxkv记录分解成编码key流和编码value流;将编码key流还原为原始keyid流;将编码value流还原为原始value流。
11.为了达到上述第三个目的,本发明提供的数据存储装置的技术方案如下:本发明提供的数据存储装置包括:文本获取单元,用于获取json文本,所述json文本为json对象格式;mxkv记录输出单元,用于所述json文本经处理后输出为mxkv记录;数据存储单元,用于将所述mxkv记录经过数据压缩后被写入存储器。
12.本发明提供的数据存储装置还可以采用以下技术措施进一步实现:作为优选,所述mxkv记录输出单元具体包括:解析器,用于对所述json文本进行解析处理,得到key-value记录对;转换器,用于将文本形式的keyname转换为keyid,输出为keyid-value记录对;排序器,用于针对所述keyid-value记录对按照keyid进行排序,得到经过排序的记录对;分组器,将所述经过排序的记录对拆分为至少一个记录组,并且,针对key、value分离成key流、value流;分组索引器,用于根据所述分组信息流的特征,生成索引信息流;串流器,用于将所述key流、value流、索引信息流整合成一个数据流,即得所述mxkv记录。
13.为了达到上述第四个目的,本发明提供的数据检索装置的技术方案如下:本发明提供的数据检索装置包括:目标key值获取单元,用于获取指定的目标key值;检索单元,用于在本发明提供的数据存储方法中所述的mxkv记录中,根据所述指定的目标key值,找到与所述指定的目标key值对应的value。
14.本发明提供的数据检索装置还可以采用以下技术措施进一步实现。
15.作为优选,分流器,用于将所述mxkv记录分解成分组索引信息流;分组检索器,将所述指定目标key值与所述分组索引信息流进行匹配,若能够匹配,则输出匹配组的数据流,若不存在匹配,则报告无命中。
16.作为优选,所述分流器用于将所述mxkv记录分解成编码key流和编码value流,其具体包括:key解码器,用于将编码key流还原为原始keyid流;value解码器,用于将编码value流还原为原始value流。
17.作为优选,所述分组检索器具体包括:key检索器,用于检索指定目标key值;value提取器,用于原始 value 流与生成的记录编码,提取出目标key对应的value并输出。
18.为了达到上述第五个目的,本发明提供的计算机可读存储介质的技术方案如下:本发明提供的计算机可读存储介质上存储有数据存储和/或数据检索方法的程序,所述数据存储和/或数据检索方法的程序被处理器执行时,实现本发明提供的数据存储方法和/或本发明提供的数据检索方法的步骤。
19.为了达到上述第六个目的,本发明提供的电子设备的技术方案如下:本发明提供的电子设备包括存储器和处理器,所述存储器上存储有数据存储和/或数据检索方法的程序,所述数据存储和/或数据检索方法的程序被处理器执行时,实现本发明提供的数据存储方法和/或本发明提供的数据检索方法的步骤。
20.本发明提供的数据存储及检索方法,装置,计算机可读存储介质及电子设备对key与value进行分组编码,利用编码本发明有效降低了存储空间,而且编码后的数据更易于压缩,编码 压缩后的体积远小于直接压缩后的体积,从而达到了极高的压缩比与极好的压缩性能。高压缩比带来的好处是更小的存储空间占用与i/o带宽占用,因此本发明也有着极好的加载性能。另一方面,利用分组技术,本发明可以高效地实现key遍历与检索,这也带来了极好的查询性能。因此最终实现了本发明同时实现高压缩性能,高加载性能,高查询性能的目标,实测中三方面均优于现有的json,jsonb,hstore,zson等技术。
附图说明
21.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:附图1为本发明实施例提供的mxkv编码器及其数据之间的关系示意图;附图2为本发明实施例提供的mxkv检索器及其数据之间的关系示意图。
具体实施方式
22.有鉴于此,本发明提供了一种通数据存储及检索方法,装置,计算机可读存储介质及电子设备,应用该数据方法对key-value数据进行存储,能够使其同时具备高压缩性能、高加载性能和高查询性能,从而更加适于实用。
23.对数据的解释:以postgresql为例,其存在多种内置或第三方key-value存储格式:json:以json格式描述key-value数据,如{"product": "postgres", "version": 12.3},加载数据时会直接保存如上的json文本,每次读取时进行完整的语法解析,并根据查询需要输出部分或全部内容。
24.jsonb:同样以json格式描述key-value数据,加载数据时会进行语法解析,并转换成一种二进制格式后保存至磁盘,二进制格式不需要完整的语法解析即可对key进行遍历。
25.hstore:较早期进行key-value数据存储的尝试,原理上与jsonb类似,加载数据时
会进行语法解析,并转换成一种二进制格式后保存至磁盘,此二进制格式同样允许不完整解析的情况下进行key遍历。
26.zson:第三方提供的key-value数据格式,本质上是jsonb,但是通过外部字典方式对jsonb中的key,value等进行编码,从而达到减少存储空间的目的,字典需要事先通过样本数据进行训练得到。
27.对于key-value存储,有3个用来衡量其性能的指标:加载性能,以sql方式把key-value数据转换成相应的key-value格式并保存至磁盘上,把同样的原始数据量以少的时间完成加载则加载性能越好查询性能,对已经以相应的key-value格式保存至磁盘上的数据查询其中某个key所对应的value,用时越少则查询性能越好。
28.压缩性能(压缩比),同样的原始数据量转换至相应的key-value格式用同样的压缩算法进行压缩,压缩后的体积越小则压缩比越高,可压缩性越好,简称压缩性能。
29.发明人经过艰苦卓绝的努力,发现,现有key-value实现的性能指标分析如下:json:由于直接存储原始json文本,在现有key-value方案中占用的存储空间相对小,而通用压缩算法一般对文本的压缩效果较好,故json格式经压缩后体积也相对较小,压缩性能中等;每次读取时需要完整进行解析,即便查询仅需要访问指定key时也是如此,相比其它现有方案会多消耗几十甚至上百倍时间,因此查询性能极差;加载时会直接保存原始文本,虽然会先进行一次完整解析保证格式的正确性,但相比其它现有的方案其开销并不高,且由于压缩比较高,综合来看其加载性能达到中等水平。
30.jsonb:原始json文本经解析后以二进制格式存储,为提升查询性能会同时保存一些辅助信息,如每个key/value的类型与长度等,因此二进制数据的大小往往大于原始文本,而且数值内容如123,4.56等会以计算机二进制格式存储,这类数据用通用压缩算法往往仅能得到较低的压缩比,所以同样的内容配合同样的压缩算法,jsonb的体积往往比json大,因此压缩性能较差;借助于二进制格式中的辅助信息,其可以达到较好的查询性能;加载过程需要将原始json解析并转换至其二进制格式,开销大于json,因此加载速度慢于json,并且由于压缩后体积大于json,综合来看加载性能较差。
31.hstore:原理上与jsonb类似,但采用了不同的二进制格式,实测中压缩后大小甚至比jsonb大一倍,压缩性能极差;查询性能较好,但实测中不如jsonb,因此查询性能中等;加载速度与jsonb相当,因此加载性能较差。
32.zson:同样在原理上类似于jsonb,但借助于外部字典对key与value进行编码,理论上其存储空间小于jsonb,但实测中取决于数值特征其压缩后大小甚至可能大于jsonb,因此压缩性能较差;借助于key&value编码其可以实现更高效的key遍历与查找,但实测效果甚微,因此查询性能中等;加载速度略好于jsonb,但是尚不及json,因此加载性能较差。
33.综合来看,现有的key-value存储方案可以分成两种路线,存储原始文本数据与存储预处理过的二进制格式:前者的压缩与加载性能较好,但极大地牺牲了查询性能,适合较小量数据;后者的压缩与加载性能均不理想,但确实提升了查询性能。
34.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种数据存储及检索方法,装置,计算机可读存储介质及电子设备,其具体实施方式、结构、特征及其功效,详细说明如后。在下述说明中,不
同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
35.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,具体的理解为:可以同时包含有a与b,可以单独存在a,也可以单独存在b,能够具备上述三种任一种情况。
36.为了达到上述第一个目的,本发明提供的数据存储方法的技术方案如下:本发明提供的数据存储方法包括以下步骤:获取json文本,所述json文本为json对象格式;所述json文本经处理后输出为mxkv记录;所述mxkv记录经过数据压缩后被写入存储器。
37.本发明提供的数据存储方法还可采用以下技术措施进一步实现。
38.作为优选,所述json文本经mxkv编码器处理后输出为mxkv记录的步骤具体包括以下步骤:对所述json文本进行解析处理,得到key-value记录对;将文本形式的keyname转换为keyid,输出为keyid-value记录对;针对所述keyid-value记录对按照keyid进行排序,得到经过排序的记录对;将所述经过排序的记录对拆分为至少一个记录组,并且,针对key、value分离成key流、value流;根据所述分组信息流的特征,生成索引信息流;将所述key流、value流、索引信息流整合成一个数据流,即得所述mxkv记录。
39.编码流程实施例参见附图1,编码流程输入为数据库从用户或其它数据源得到的json文本,在本发明中其必须为json的对象格式,如{"product": "postgres", "version": 12.3},经mxkv编码器处理后其输出为mxkv记录,其可被数据库压缩后写入磁盘,或直接传递给检索流程做后续处理。
40.[e.in] 把数据库系统提供的json文本传递给mxkv编码器。
[0041]
[e0] json解析器是mxkv编码器内部的第一步,其对json文本进行解析处理,得到key-value记录对,如(product, postgres), (version, 12.3)。
[0042]
[e1] key转换器把文本形式的key name转换为整数形式的key id,输出为keyid-value记录对,如(3, postgres), (1, 12.3)。
[0043]
[e2] key排序器把keyid-value记录对按照key id进行排序,输出如(1, 12.3), (3, postgres)。
[0044]
[e3] 分组器把 [e2] 生成的记录对拆分成若干较小的记录组,每个包含n个记录对,本例中仅包含一个分组,[e3] 同时把key与value分离成各自独立的流,因此 [e3] 的输出为三个流,分组信息流,key流(1, 3),value流(12.3, postgres)。
[0045]
[e4] 分组索引器接收 [e3] 产生的分组信息流,根据每个分组的特征生成索引信息流,这些信息在检索流程中可用来根据目标key快速匹配目标分组。
[0046]
[e5] key编码器接收 [e3] 产生的key流,利用key的特征进行编码以减少key流的存储空间,其输出为编码key流。
[0047]
[e6] value编码器接收 [e3] 产生的value流,利用value的特征进行编码以减少value的存储空间,其输出为编码value流。
[0048]
[e7] 串流器接收 [e4] 索引信息流,[e5] 编码key流,[e6] 编码value流,并将它们整合成一个数据流,即为mxkv记录。
[0049]
[e.out] 把 [e7] 生成的mxkv记录传递给数据库系统。
[0050]
检索流程实施例参见附图2,检索流程用于在一个mxkv记录中根据指定的目标key值找到其对应的value。
[0051]
[l.in] 把数据库系统提供的mxkv记录传递给mxkv检索器,mxkv记录的格式与mxkv编码流程中的 [e.out] 相同。
[0052]
[l0] 分流器把mxkv记录分解成分组索引信息流。
[0053]
[l1] 分组检索器接收 [l0] 生成的索引信息流,利用这些信息 [l1] 可以高效定位匹配组,输出为匹配组的数据流;若不存在匹配则其可以立即进入 [l.mismatch] 报告无命中。
[0054]
[l2] 组分离器接收 [l1] 生成的组数据流,将其分解为编码key流与编码value流。
[0055]
[l3] key解码器接收 [l2] 生成的编码key流,把其还原为原始key id流[l4] key检索器接收 [l3] 生成的原始key id流,其可以高效判断目标key是否命中,输出为命中记录的编号;若不存在命中则其可以立即进入 [l.mismatch] 报告无命中。
[0056]
[l5] value解码器接收 [l2] 生成的编码value流,把其还原为原始value流,这仅在 [l4] 判断存在命中的情况才发生。
[0057]
[l6] value提取器接收 [l5] 生成的原始 value 流与 [l4] 生成的记录编码,提取出目标key对应的value并输出。
[0058]
[l.out] 接收 [l6] 生成的value并传递回数据库系统。
[0059]
[l.mismatch] 向数据库报告无命中。
[0060]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0061]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献