CN105930104B - 数据存储方法和装置 - Google Patents
数据存储方法和装置 Download PDFInfo
- Publication number
- CN105930104B CN105930104B CN201610326720.6A CN201610326720A CN105930104B CN 105930104 B CN105930104 B CN 105930104B CN 201610326720 A CN201610326720 A CN 201610326720A CN 105930104 B CN105930104 B CN 105930104B
- Authority
- CN
- China
- Prior art keywords
- key
- value
- stored
- data
- transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据存储方法和装置。所述数据存储方法包括:将至少两条键值对形式的待存储数据的键转换为定长标准键,其中,所述待存储数据的各值中包括用于区分不同值的字段信息;将第一数值空间的标准键变换为第二数值空间的变换键,其中,第二数值空间的数值范围小于第一数值空间的数值范围;将变换键中相同的目标键合并为一个新的变换键,并将与目标键分别对应的值归并入一个值集合中,作为与新的变换键对应的值;将变换键存储于设定存储系统的内存空间中,将与变换键对应的值存储于存储系统的磁盘空间中。本发明的技术方案优化了现有的键值对形式的数据存储技术,减少了存储于内存中的Key对内存的占用量。
Description
技术领域
本发明实施例涉及信息处理技术,尤其涉及一种数据存储方法和装置。
背景技术
目前,功能强大的互联网综合服务提供商可以为广大网民提供信息检索、社区服务、云存储以及开发者平台等多种综合性服务,一般来说,用户基于不同类型的互联网服务会申请相同或者不同的服务账号(例如百度账号等),服务器针对不同的服务账号会存储不同的用户信息(例如,姓名、年龄以及职业等),因此,如何将服务账号以及与服务账号对应的用户信息(后文将上述两者简称用户账号关联信息)进行存储,并提供高可用、高并发的查询服务变得非常重要。
目前,基于用户账号关联信息的比较普遍的信息存储方式是键值对(也称为Key-Value)形式的信息存储方式,即:将用户账号关联信息中的服务账号作为Key(也称为键),将用户信息作为Value(也称为值),进行对应存储。同时,为了减少Key-Value形式的用户账号关联信息对内存的占用,现有技术提出一种将Key-Value中的Key存储于内存中,将Key-Value中的Value存储于磁盘中的数据存储方法(例如,百度的Mola存储系统)以减少对内存资源的占用。
上述方法虽然可以缓解用户账号关联信息对内存的占用,但是,随着用户数据规模的不断扩大,内存使用必将成为瓶颈。
发明内容
有鉴于此,本发明实施例提供一种数据存储方法和装置,以优选现有的Key-Value形式的数据存储技术,减少存储于内存中的Key对内存的占用量。
在第一方面,本发明实施例提供了一种数据存储方法,包括:
将至少两条键值对形式的待存储数据的键转换为定长标准键其中,所述待存储数据的值中包括用于区分不同值的字段信息;
将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围;
将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值;
将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
在第二方面,本发明实施例提供了一种数据存储装置,包括:
标准键转换模块,用于将至少两条键值对形式的待存储数据的键转换为定长标准键,其中,所述待存储数据的值中包括用于区分不同值的字段信息;
变换键生成模块,用于将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围;
变换键合并模块,用于将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值;
存储模块,用于将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
本发明实施例将Key-Value形式的待存储数据中各Key的取值进行设定的压缩处理,使得压缩处理后的待存储数据中包括多个相同Key,将与相同Key对应的Value的归并,以及将多个相同Key合并为一个新的Key,并将经过上述处理后的Key-Value中的Key存储于内存中,将Key-Value中的Value存储于磁盘中,可以解决现有的基于Key-Value的数据存储方法在数据规模不断扩大过程中,内存使用中的瓶颈问题,优化了现有的Key-Value形式的数据存储技术,减少了存储于内存中的Key对内存的占用量。
附图说明
图1是本发明第一实施例的一种数据存储方法的流程图;
图2是本发明第二实施例的一种数据存储方法的流程图;
图3是本发明第三实施例的一种数据存储方法的流程图;
图4是本发明第四实施例的一种数据存储方法的流程图;
图5a是使用本发明实施例的方法前的一种基于MapReduce的数据存储过程的示意图;
图5b是使用本发明实施例的方法后的一种基于MapReduce的数据存储过程的示意图;
图6是本发明第五实施例的一种数据存储装置的结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
第一实施例
图1为本发明第一实施例提供的一种数据存储方法的流程图,本实施例的方法可以由数据存储装置来执行,该装置可通过硬件和/或软件的方式实现,并一般可集成于完成将待存储数据存储于设定存储系统的存储服务器中,与存放待存储数据的数据服务器配合使用,其中,存储服务器和数据服务器可以是同一服务器或者属于同一服务器集群,可以为不同的服务器,本实施例对此并不进行限制。本实施例的方法具体包括:
110、将至少两条键值对形式的待存储数据的键转换为定长标准键。
如背景技术所述,本发明实施例所适用的应用场景为:基于Key-Value形式的数据的存储,其中,Key存放于存储系统的内存中,Value存放于存储系统的磁盘中。
Key-Value是一个常用的数据结构概念,通常又称为字典(Dictionary)或映射(Map)。每个存放到该数据结构中的Value都对应一个全局唯一的Key。该数据结构的特征是以空间换时间,通过Key查询Value通常是比较快速的过程。简言之,Key为存放数据的编号值,Value为存放的数据。
其中,Key可以为任何类型的数据格式,例如,文本型或者数值型等。
在本实施例的一个优选的实施方式中,所述待存储数据的Key可以包括用户账号标识,所述待存储数据的Value可以包括与所述用户账号标识对应的用户基本信息。
其中,用户账号标识可以为文本形式的账号名,例如:“AAA@baidu.com”,也可以为用户在网站注册时,该网站基于注册时间分配给用户的唯一编号,例如“0X12423”等。与用户账号信息对应的用户基本信息可以包括用户在网站注册时输入的基本信息,例如,用户名、姓名、年龄以及职业等。
相应的,一条具体的待存储数据的数据形式可以包括:“0X12423->用户名:zhansan@baudu.con;姓名:张三;年龄:23”。
理论上说,为了能够唯一识别一个Value,Key应该彼此互不相同,考虑到这样一种特殊情况,Value中的某一个字段可以用来唯一区分该Value与其他Value,例如,用户基本信息中的用户名,也即:待存储数据的Value中包括用于区分不同Value的字段信息。
此时,如果将多个Value对应于相同的Key,则通过遍历这多个Value中的字段信息的方式,同样可以将各个不同的Value进行区分,也即:可以用较短的时间损耗,换来内存空间的大大节约,这就是本发明技术方案的核心发明点。
在本实施例中,考虑到需要对不同的Key进行合并,以生成相同Key。因此,在进行生成相同Key的处理之前,需要将不同的Key转换为具有设定取值范围的数值型数据,也即:定长标准键。
其中,所述设定取值范围优选可以为二进制的取值范围,例如,20~28。
在本实施例的一个优选的实施方式中,如果待存储数据的Key为数值形式的数据,则可以直接通过基于哈希(也称为散列或者Hash)函数的运算,将待存储数据的Key转换为定长标准键。
哈希函数,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间。
在本实施例的另一个优选的实施方式中,如果待存储数据的Key为文本形式的数据,则可以通过与文本中各个字母对应的ASCII(American Standard Code forInformation Interchange,美国信息互换标准代码)码,首先将文本形式的Key转换为二进制的数值,之后可以通过基于哈希函数的运算,将待存储数据的Key转换为定长标准键;或者
也可以通过预设词典将该文本形式的Key中的各字母映射为一个one-hot(独热)表征向量。例如:(…,0,…,1,…,0,…),该向量长度为词典的大小,有一个元素为1,其余元素全部为0,元素1所在的位置序号对应于该字母在词典中的序号。由于词典大小固定,因此与各字母对应的表征向量的长度均相同,因此,可以根据该表征向量,将Key转换为定长标准键。
例如,Key为“abc”,与该Key对应的表征向量为(1,0,1,0,1,0),则可将101010作为与该Key对应的定长标准键。
120、将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围。
如前所述,为了实现对不同的Key进行合并,以生成相同Key,一个简单有效的方式就是压缩定长标准键的取值范围,例如,将定长标准键的取值范围从20~28压缩至20~26,那么可以理解的是,压缩后的各变换键中存在了具有相同Key的可能性。
其中,可以通过将存储单元存储的定长标准键向右移位的方式,实现取值范围的压缩,也可以通过取模运算的方式实现取值范围的压缩,还可以通过取整运算(向下或者向上)方式实现取值范围的压缩,本实施例对此并不进行限制。
例如,下述四个定长标准键:3.7、2.4、4.5以及2.8,通过向下取整运算,可以将上述标准键变换为3、2、4以及2这四个变换键,出现两个相同Key,2。
130、将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值。
在本实施例中,可以直接将该目标键作为所述新的变换键,也可以通过其他的变换方式(例如,通过设定函数变换,或者累加一个足够大的数值等),生成与目标键对应的新的变换键。
续前例,如果与定长标准键2.4对应的Value为“姓名:张三”,与定长标准键2.8对应的Value为“姓名:李四”。则通过向下取整运算后,可以将2作为变换键,将“{姓名:张三,姓名:李四}”这一值集合,作为与2对应的Value。
140、将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
如前所述,基于Key-Value形式的数据,为了提高数据查找速度,可以将变换键存储于设定存储系统的内存空间中,而将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
在存储系统进行数据查找时,首先在内存空间中快速查找到Key,之后根据设定的对应关系在磁盘空间中获取与Key对应的Value。其中,如果查找到的Key对应一个Value集合,则可以通过遍历Value中包括用于区分不同Value的字段信息的方式,找到实际所需的Value。
典型的,所述存储系统具体可以为百度公司的Mola存储系统,Mola存储系统的特点是低延迟与高并发,该存储系统中存储有海量的Key-Value形式的数据,其中,Key被存储于内存空间中,Value被存储于磁盘空间中。
本发明实施例将Key-Value形式的待存储数据中各Key的取值进行设定的压缩处理,使得压缩处理后的待存储数据中包括多个相同Key,将与相同Key对应的Value的归并,以及将多个相同Key合并为一个新的Key,并将经过上述处理后的Key-Value中的Key存储于内存中,将Key-Value中的Value存储于磁盘中,可以解决现有的基于Key-Value的数据存储方法在数据规模不断扩大过程中,内存使用中的瓶颈问题,优化了现有的Key-Value形式的数据存储技术,减少了存储于内存中的Key对内存的占用量。
第二实施例
图2是本发明第二实施例的一种数据存储方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,将至少两条键值对形式的待存储数据的键转换为定长标准键具体优化为:选取具有设定数据输出长度的哈希函数;将所述待存储数据中的各键输入至所述哈希函数中,生成所述定长标准键。
相应的,本实施例的方法具体包括:
210、选取具有设定数据输出长度的哈希函数。
如前所述,哈希函数可以实现把任意长度的输入,通过散列算法,变换成固定长度的输出。根据所需的数据输出长度,可以选择不同类型的哈希函数。例如,MD4(Message-Digest algorithm 4,信息摘要算法4)函数,可输出128位的二进制数据。
220、将所述待存储数据的各键输入至所述哈希函数中,生成定长标准键。
在本实施例中,所述待存储数据的各Key可以为数值型的用户账号标识,也可以为将文本形式的用户账号标识经过数值转换后生成的数据。
通过将待存储数据的各Key输入至所述哈希函数中,可以输出设定数据长度的定长标准键,例如,128位的定长标准键。
230、将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围。
240、将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值。
250、将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
本实施例的技术方案通过使用哈希函数,可以简单、高效的将待存储数据中不同数据长度的Key,转换为定长标准键,实现了将待存储数据的各Key均限定在一个固定的数值区间范围内(例如,128位),通过对该固定的数据区间中的数据进行压缩,可以使得在该数据区间内各不相同的Key,在压缩后的数据区间内出现相同Key,进而可以通过将相同Key进行合并的方式,减少存储于内存中的Key的数量,进而减少了存储于内存中的Key对内存的占用量。
第三实施例
图3是本发明第三实施例的一种数据存储方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,将第一数值空间的所述标准键变换为第二数值空间的变换键具体优化为:根据所述标准键的长度,选取设定移位次数;根据所述移位次数,将与各所述标准键分别对应的数值进行右移运算;其中,与所述标准键对应的数值存储于设定大小的存储单元中;将所述存储单元中存储的各右移运算结果作为所述变换键。
相应的,本实施例的方法具体包括:
310、将至少两条键值对形式的待存储数据的键转换为定长标准键。
320、根据所述标准键的长度,选取设定移位次数。
在本实施例中,主要通过右移运算(除法)的方式,压缩定长标准键的数值范围。例如,定长标准键的数值范围为20~28,通过右移两位的方式,可以将数值范围压缩至20~26。
为了实现上述压缩效果,所选取的移位次数应该小于定长标准键的长度,可以理解的是,移位次数的取值越小,压缩结果中包括的相同Key的数量也就越少,但是在相同Key对应的值集合中遍历所需Value的时间也越短;移位次数的取值越大,压缩结果中包括的相同Key的数量也就越大,但是在相同Key对应的值集合中遍历所需Value的时间也越长。
优选的,可以根据定长标准键的长度,以及实际应用中所需的压缩幅度,选取所述移位次数。
例如,如果定长标准键的数据范围为20~28,所述的压缩幅度为50%,可以选取移位次数为4。
330、根据所述移位次数,将与各所述标准键分别对应的数值进行右移运算。其中,与所述标准键对应的数值存储于设定大小的存储单元中;
可以理解的是,在计算机系统中,数据主要是以二进制的形式存储在存储单元中的,位(也称为Bit)是计算机中最小的信息存储单位。一位只能存储0或1中的一个二进制位数据;字节(也称为Byte)是由相连8个位组成的信息存储单位等。
在一个具体例子中,如果定长标准键的数据范围为20~28,则该定长标准键被存储于一个8位的存储单元中,在该大小的存储单元中存储的一个具体的定长标准键为10111000,通过右移两位的操作后,该定长标准键被变换为00101110这一变换键。如果对全部定长标准键进行上述右移处理后,相当于将定长标准键的数据范围压缩至20~26。
340、将所述存储单元中存储的各右移运算结果作为所述变换键。
350、将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值。
360、将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
本实施例的技术方案通过执行机器语言中简单的右移运算,即可实现将第一数值空间的所述标准键变换为第二数值空间的变换键的目的,进而可以在各不相同的Key中变换出相同Key,进而可以通过将相同Key进行合并的方式,减少存储于内存中的Key的数量,进而减少了存储于内存中的Key对内存的占用量。
第四实施例
图4是本发明第四实施例的一种数据存储方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,将第一数值空间的所述标准键变换为第二数值空间的变换键具体优化为:根据所述标准键的长度,选取设定取模基数;将与各所述标准键分别对应的数值基于所述取模基数进行取模运算;将各所述取模运算的结果作为所述变换键。
相应的,本实施例的方法具体包括:
410、将至少两条键值对形式的待存储数据的键转换为定长标准键。
420、根据所述标准键的长度,选取设定取模基数。
在本实施例中,主要通过取模运算(求余数)的方式,压缩定长标准键的数值范围。例如,定长标准键的数值范围为20~28,通过模64运算,可以将数值范围压缩至0~26-1。
其中,所述64即为取模基数,也就是说,所述取模运算中的除数,本领域技术人员可以理解的是,通过选取合适的取模基数,可以调整最终生成的变换键的取值范围。例如,取模基数为6,变换键的取值范围为0~5。
如前所述,可以根据定长标准键的长度,以及实际应用中所需的压缩幅度,选取所述取模基数。
430、将与各所述标准键分别对应的数值基于所述取模基数进行取模运算。
440、将各所述取模运算的结果作为所述变换键。
450、将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值。
460、将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
本实施例的技术方案通过执行机器语言中简单的取模运算,即可实现将第一数值空间的所述标准键变换为第二数值空间的变换键的目的,进而可以在各不相同的Key中变换出相同Key,进而可以通过将相同Key进行合并的方式,减少存储于内存中的Key的数量,进而减少了存储于内存中的Key对内存的占用量。
发明人通过实验发现,本实施例的技术方案在应用于基于内存和磁盘的Key-Value存储系统中后,通过哈希合并策略,可以减少65%的内存的使用,应用本发明实施例的技术方案的产品比同类产品在非常小的代价下获得更为完备的数据基础,从而使得产品在数据的迭代和内存资源的消耗上具有竞争力。
在上述各实施例的基础上,可以通过MapReduce模型框架执行所述数据存储方法,其中:
在Map阶段执行所述定长标准键的转换、所述变换键的生成、所述相同目标键的合并以及将与所述目标键分别对应的值的归并;
在Reduce阶段执行将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
其中,MapReduce是一种编程模型,主要用于大规模数据集(大于1TB)的并行运算。通过应用该编程模型,可以快速、高效的实现本发明各实施例所述的数据存储方法。
为了便于理解,在图5a中示出了使用本发明实施例的方法前的一种基于MapReduce的数据存储过程的示意图;在图5b中示出了使用本发明实施例的方法后的一种基于MapReduce的数据存储过程的示意图。
如图5a所示,在Map阶段计算Key1和Value1,Key2和Value2,Key3和Value3以及Key4和Value4,并计算Key1、Key2、Key3以及Key4的Hash签名:Key1’、Key2’、Key3’以及Key4’。
在Reduce阶段将Key1’、Key2’、Key3’以及Key4’,以及对应的Value值存储于Mola存储系统中。
其中,将数据存储于Mola存储系统时,Key为Value具有一一对应关系,在数据量不断扩张的时候,会对Mola存储系统的内存带来巨大压力;
如图5b所示,通过使用本发明各实施例的方案,MapReduce的实现流程主要包括:
在Map阶段计算Key1和Value1,Key2和Value2,Key3和Value3以及Key4和Value4,并计算Key1、Key2、Key3以及Key4的Hash签名,并通过移位的方式对该Hash签名的结果进行压缩,最终生成Key1”、Key2”、Key3”以及Key4”;
在Map发送数据之前,如果确定Key1”=Key2”=Key3”,则将Key1”、Key2”以及Key3”进行合并,生成一个NewKey’,并将Value1、Value2以及Value3归并入一个值集合[Value1、Value2、Value3]中,作为与NewKey’对应的值发送给Reduce;
Reduce端接收到数据后,将NewKey’和NewKey’对应的[Value1、Value2、Value3],以及Key4”和Key4”对应的Value4存储到Mola存储系统中,以供在线查询系统使用。
第五实施例
图6是本发明第五实施例的一种数据存储装置的结构图。如图6所示,所述装置包括:标准键转换模块61、变换键生成模块62、变换键合并模块63以及存储模块64。其中:
标准键转换模块61,用于将至少两条键值对形式的待存储数据的键转换为定长标准键。
变换键生成模块62,用于将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围。
变换键合并模块63,用于将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值。
存储模块64,用于将所述变换键存储于设定存储系统的内存空间中,将与所述变换键对应的值存储于所述存储系统的磁盘空间中。
本发明实施例将Key-Value形式的待存储数据中各Key的取值进行设定的压缩处理,使得压缩处理后的待存储数据中包括多个相同Key,将与相同Key对应的Value的归并,以及将多个相同Key合并为一个新的Key,并将经过上述处理后的Key-Value中的Key存储于内存中,将Key-Value中的Value存储于磁盘中,可以解决现有的基于Key-Value的数据存储方法在数据规模不断扩大过程中,内存使用中的瓶颈问题,优化了现有的Key-Value形式的数据存储技术,减少了存储于内存中的Key对内存的占用量。
在上述各实施例的基础上,所述标准键转换模块,可以用于:
选取具有设定数据输出长度的哈希函数;将所述待存储数据的各键输入至所述哈希函数中,生成所述定长标准键。
在上述各实施例的基础上,所述变换键生成模块,可以用于:
根据所述标准键的长度,选取设定移位次数;根据所述移位次数,将与各所述标准键分别对应的数值进行右移运算;其中,与所述标准键对应的数值存储于设定大小的存储单元中;将所述存储单元中存储的各右移运算结果作为所述变换键。
在上述各实施例的基础上,所述变换键生成模块,可以用于:
根据所述标准键的长度,选取设定取模基数;将与各所述标准键分别对应的数值基于所述取模基数进行取模运算;将各所述取模运算的结果作为所述变换键。
在上述各实施例的基础上,所述待存储数据的键可以包括用户账号标识,所述待存储数据中的值可以包括与所述用户账号标识对应的用户基本信息。
在上述各实施例的基础上,可以通过MapReduce模型框架执行所述数据存储装置,其中:
在Map阶段执行所述标准键转换模块、所述变换键生成模块以及所述变换键合并模块;在Reduce阶段执行所述存储模块。
本发明实施例所提供的数据存储装置可用于执行本发明任意实施例提供的数据存储方法,具备相应的功能模块,实现相同的有益效果。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以通过如上所述的服务器实施。可选地,本发明实施例可以用计算机装置可执行的程序来实现,从而可以将它们存储在存储装置中由处理器来执行,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等;或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据存储方法,其特征在于,包括:
将至少两条键值对形式的待存储数据的键转换为定长标准键,其中,所述待存储数据的值中包括用于区分不同值的字段信息;
将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围;
将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值;
将所述新的变换键存储于设定存储系统的内存空间中,将与所述新的变换键对应的值存储于所述存储系统的磁盘空间中。
2.根据权利要求1所述的方法,其特征在于,将至少两条键值对形式的待存储数据的键转换为定长标准键包括:
选取具有设定数据输出长度的哈希函数;
将所述待存储数据的各键输入至所述哈希函数中,生成所述定长标准键。
3.根据权利要求1所述的方法,其特征在于,将第一数值空间的所述标准键变换为第二数值空间的变换键包括:
根据所述标准键的长度,选取设定移位次数;
根据所述移位次数,将与各所述标准键分别对应的数值进行右移运算;其中,与所述标准键对应的数值存储于设定大小的存储单元中;
将所述存储单元中存储的各右移运算结果作为所述变换键。
4.根据权利要求1所述的方法,其特征在于,将第一数值空间的所述标准键变换为第二数值空间的变换键包括:
根据所述标准键的长度,选取设定取模基数;
将与各所述标准键分别对应的数值基于所述取模基数进行取模运算;
将各所述取模运算的结果作为所述变换键。
5.根据权利要求1-4任一项所述的方法,其特征在于:
所述待存储数据的键包括用户账号标识,所述待存储数据的值包括与所述用户账号标识对应的用户基本信息。
6.根据权利要求1-4任一项所述的方法,其特征在于,通过MapReduce模型框架执行所述数据存储方法,其中:
在Map阶段执行所述定长标准键的转换、所述变换键的生成、所述相同目标键的合并以及将与所述目标键分别对应的值的归并;
在Reduce阶段执行将所述新的变换键存储于设定存储系统的内存空间中,将与所述新的变换键对应的值存储于所述存储系统的磁盘空间中。
7.一种数据存储装置,其特征在于,包括:
标准键转换模块,用于将至少两条键值对形式的待存储数据的键转换为定长标准键,其中,所述待存储数据的值中包括用于区分不同值的字段信息;
变换键生成模块,用于将第一数值空间的所述标准键变换为第二数值空间的变换键,其中,所述第二数值空间的数值范围小于所述第一数值空间的数值范围;
变换键合并模块,用于将所述变换键中相同的目标键合并为一个新的变换键,并将与所述目标键分别对应的值归并入一个值集合中,作为与所述新的变换键对应的值;
存储模块,用于将所述新的变换键存储于设定存储系统的内存空间中,将与所述新的变换键对应的值存储于所述存储系统的磁盘空间中。
8.根据权利要求7所述的装置,其特征在于,所述标准键转换模块,用于:
选取具有设定数据输出长度的哈希函数;
将所述待存储数据的各键输入至所述哈希函数中,生成所述定长标准键。
9.根据权利要求7所述的装置,其特征在于,所述变换键生成模块,用于:
根据所述标准键的长度,选取设定移位次数;
根据所述移位次数,将与各所述标准键分别对应的数值进行右移运算;其中,与所述标准键对应的数值存储于设定大小的存储单元中;
将所述存储单元中存储的各右移运算结果作为所述变换键。
10.根据权利要求7所述的装置,其特征在于,所述变换键生成模块,用于:
根据所述标准键的长度,选取设定取模基数;
将与各所述标准键分别对应的数值基于所述取模基数进行取模运算;
将各所述取模运算的结果作为所述变换键。
11.根据权利要求7-10任一项所述的装置,其特征在于:
所述待存储数据的键包括用户账号标识,所述待存储数据的值包括与所述用户账号标识对应的用户基本信息。
12.根据权利要求7-10任一项所述的装置,其特征在于,通过MapReduce模型框架执行所述数据存储装置,其中:
在Map阶段执行所述标准键转换模块、所述变换键生成模块以及所述变换键合并模块;
在Reduce阶段执行所述存储模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610326720.6A CN105930104B (zh) | 2016-05-17 | 2016-05-17 | 数据存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610326720.6A CN105930104B (zh) | 2016-05-17 | 2016-05-17 | 数据存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105930104A CN105930104A (zh) | 2016-09-07 |
CN105930104B true CN105930104B (zh) | 2019-01-18 |
Family
ID=56841590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610326720.6A Active CN105930104B (zh) | 2016-05-17 | 2016-05-17 | 数据存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105930104B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874459B (zh) * | 2017-02-14 | 2020-07-10 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN107463512B (zh) * | 2017-06-26 | 2020-11-13 | 上海高顿教育培训有限公司 | 分布式高速存储系统的数据更新方法 |
CN110413670B (zh) * | 2019-06-28 | 2023-07-14 | 创新先进技术有限公司 | 基于MapReduce的数据导出方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102246163A (zh) * | 2008-10-27 | 2011-11-16 | 移动解决方案株式会社 | 数据库中的索引压缩 |
CN103176976A (zh) * | 2011-12-20 | 2013-06-26 | 中国科学院声学研究所 | 一种基于数据压缩的改进的Apriori算法 |
CN104090895A (zh) * | 2013-12-18 | 2014-10-08 | 深圳市腾讯计算机系统有限公司 | 获取基数的方法、装置、服务器及系统 |
CN104991741A (zh) * | 2015-06-24 | 2015-10-21 | 江苏瑞中数据股份有限公司 | 一种基于键值模型的情境适配电网大数据存储方法 |
CN105426413A (zh) * | 2015-10-31 | 2016-03-23 | 华为技术有限公司 | 一种编码方法及装置 |
CN105574021A (zh) * | 2014-10-14 | 2016-05-11 | 北京神州泰岳软件股份有限公司 | 一种数据库的数据压缩方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103327052B (zh) * | 2012-03-22 | 2018-04-03 | 深圳市腾讯计算机系统有限公司 | 数据存储方法和系统以及数据访问方法和系统 |
CN103780491B (zh) * | 2012-10-23 | 2018-01-23 | 上海博达数据通信有限公司 | 一种实现IPv6快速路由查找的方法 |
CN105243110A (zh) * | 2015-09-25 | 2016-01-13 | 上海大汉三通无线通信有限公司 | 一种号码段区域地址查询方法、装置及终端 |
CN105224828B (zh) * | 2015-10-09 | 2017-10-27 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
-
2016
- 2016-05-17 CN CN201610326720.6A patent/CN105930104B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102246163A (zh) * | 2008-10-27 | 2011-11-16 | 移动解决方案株式会社 | 数据库中的索引压缩 |
CN103176976A (zh) * | 2011-12-20 | 2013-06-26 | 中国科学院声学研究所 | 一种基于数据压缩的改进的Apriori算法 |
CN104090895A (zh) * | 2013-12-18 | 2014-10-08 | 深圳市腾讯计算机系统有限公司 | 获取基数的方法、装置、服务器及系统 |
CN105574021A (zh) * | 2014-10-14 | 2016-05-11 | 北京神州泰岳软件股份有限公司 | 一种数据库的数据压缩方法和装置 |
CN104991741A (zh) * | 2015-06-24 | 2015-10-21 | 江苏瑞中数据股份有限公司 | 一种基于键值模型的情境适配电网大数据存储方法 |
CN105426413A (zh) * | 2015-10-31 | 2016-03-23 | 华为技术有限公司 | 一种编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105930104A (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10325010B1 (en) | Hybrid approach to collating unicode text strings consisting primarily of ASCII characters | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
US10572442B2 (en) | Systems and methods for providing distributed tree traversal using hardware-based processing | |
CN105930104B (zh) | 数据存储方法和装置 | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和系统 | |
US9734178B2 (en) | Searching entity-key associations using in-memory objects | |
JP2021089704A (ja) | データ照会方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム | |
US20140059094A1 (en) | Making use of a file path to determine file locality for applications | |
CN103853714A (zh) | 一种数据处理方法和装置 | |
US20130138686A1 (en) | Device and method for arranging query | |
WO2022156588A1 (zh) | 一种数据管理的方法、设备及系统 | |
CN109088914B (zh) | 区块的生成方法、区块链生态系统及计算机可读存储介质 | |
CN110020272B (zh) | 缓存方法、装置以及计算机存储介质 | |
US20160335371A1 (en) | System and method for querying graphs distributed over multiple machines | |
Xia et al. | Redundancy-free high-performance dynamic GNN training with hierarchical pipeline parallelism | |
CN110945506B (zh) | 支持混合索引的可搜索加密 | |
CN108052535B (zh) | 基于多处理器平台的视觉特征并行快速匹配方法和系统 | |
CN101635001A (zh) | 从数据库提取信息的方法和设备 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
US10511531B1 (en) | Enhanced lens distribution | |
CN108763381B (zh) | 基于一致性哈希算法的分表方法及设备 | |
CN114448890B (zh) | 寻址方法、装置、电子设备及存储介质 | |
US10355994B1 (en) | Lens distribution | |
US11233739B2 (en) | Load balancing system and method | |
Yuan et al. | Gcache: neighborhood-guided graph caching in a distributed environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |