CN105608103A - 数据存储结构的转换方法及装置 - Google Patents
数据存储结构的转换方法及装置 Download PDFInfo
- Publication number
- CN105608103A CN105608103A CN201510673553.8A CN201510673553A CN105608103A CN 105608103 A CN105608103 A CN 105608103A CN 201510673553 A CN201510673553 A CN 201510673553A CN 105608103 A CN105608103 A CN 105608103A
- Authority
- CN
- China
- Prior art keywords
- key
- data
- value
- data cell
- value pair
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据存储结构的转换方法,包括:提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键;将转换存储结构中的第一类值设为空值;将第一类键及第一类值组成的第一类数据键值对存储至键值数据库中。本发明中,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。
Description
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种数据存储结构的转换方法及装置。
背景技术
随着信息时代的迅速发展,不仅在大企业,甚至一些小企业也积累了TB量级的数据,各种规模的组织开始有了处理大规模及多重数据种类的数据的需求,而传统的关系型数据库(SQL数据库)在数据存储的可扩展方面几乎达到极限。为了解决大规模数据集合及多重数据种类带来的挑战和大数据应用的难题,非关系型数据库(NoSQL数据库)应运而生。
常用的非关系型数据库包括KV(Key-Value,键值)存储数据库,其数据按照键值对的形式进行组织、索引和存储。KV存储方式非常适合不涉及过多数据关系及业务关系的数据存储业务,其能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能,KV存储数据库的可实现方式包括Redis和LevelDB等,LevelDB能够支持billion级别的数据量,且在这个数量级别下还能够保持非常高的数据存储处理性能,同时,LevelDB可将数据存储至磁盘,有利于数据的永久保存;但是,目前LevelDB的接口仅支持无变形的key-value(键值对)型数据,接口较为单一,对业务的可扩展性较差。Redis是一种高性能的key-value存储系统,其可支持多种value类型的数据存储结构,包括string(字符串)类型、list(链表)类型、set(集合)类型、zset(有序集合)类型和hash(哈希)类型,但是,为了保证较高的数据存储处理效率,其数据都是缓存在内存中,即Redis为一种内存型数据库,因此该存储方式受物理内存限制,无法实现大数据存储。
由此可见,如何实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统是目前急需解决的问题。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的实施例提出了一种数据存储结构的转换方法,包括:
提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将所述第一数据单元、所述第二数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第一类键;
将所述转换存储结构中的第一类值设为空值;
将所述第一类键及所述第一类值组成的第一类数据键值对存储至键值数据库中。
优选地,该方法还包括:
提取所述待转换数据中的第一数据单元及第三数据单元,并将所述第一数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第二类键;
将提取到的所述待转换数据中的第二数据单元确定为转换存储结构中的第二类值;
将所述第二类键及所述第二类值组成的第二类数据键值对存储至键值数据库中。
优选地,该方法还包括:
判断所述第二数据单元是否为整数类型;
当所述第二数据单元不为整数类型时,将所述第二数据单元通过预设转换算法转换为整数类型。
优选地,该方法还包括:
确定具有相同第一数据单元的待转换数据的数量;
将以预定的数量标识为键、以所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述第一类数据键值对及所述第二数据键值相关联地存储至所述键值数据库中。
其中,所述预定的数量标识至少包括:
第一数据单元;可变量标识。
优选地,该方法还包括:
当对任一待更新的第一类数据键值对进行更新操作时,对与该待更新的第一类数据键值对相关联的第二类数据键值及数量键值对进行相应更新;或
当对任一待更新的第二类数据键值对进行更新操作时,对与该待更新的第二类数据键值对相关联的第一类数据键值及数量键值对进行相应更新。
本发明的实施例提出了一种数据存储结构的转换装置,包括:
第一键确定模块,用于提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将所述第一数据单元、所述第二数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第一类键;
第一值确定模块,用于将所述转换存储结构中的第一类值设为空值;
第一键值对存储模块,用于将所述第一类键及所述第一类值组成的第一类数据键值对存储至键值数据库中。
优选地,该装置还包括:
第二键确定模块,用于提取所述待转换数据中的第一数据单元及第三数据单元,并将所述第一数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第二类键;
第二值确定模块,用于将提取到的所述待转换数据中的第二数据单元确定为转换存储结构中的第二类值;
第二键值对存储模块,用于将所述第二类键及所述第二类值组成的第二类数据键值对存储至键值数据库中。
优选地,该装置还包括:
判断模块,用于判断所述第二数据单元是否为整数类型;
转换模块,用于当所述第二数据单元不为整数类型时,将所述第二数据单元通过预设转换算法转换为整数类型。
优选地,该装置还包括:
确定具有相同第一数据单元的待转换数据的数量;
将以预定的数量标识为键、以所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述第一类数据键值对及所述第二类数据键值相关联地存储至所述键值数据库中。
其中,所述预定的数量标识至少包括:
第一数据单元;可变量标识。
优选地,该装置还包括:
更新模块,用于
当对任一待更新的第一类数据键值对进行更新操作时,对与该待更新的第一类数据键值对相关联的第二类数据键值及数量键值对进行相应更新;或
当对任一待更新的第二类数据键值对进行更新操作时,对与该待更新的第二类数据键值对相关联的第一类数据键值及数量键值对进行相应更新。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明中一个实施例的数据存储结构的转换方法的流程图;
图2为本发明中一个优选实施例的数据存储结构的转换方法的流程图;
图3为本发明中另一实施例的数据存储结构的转换装置的结构示意图;
图4为本发明中另一优选实施例的数据存储结构的转换装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
图1为本发明中一个实施例的数据存储结构的转换方法的流程图。
步骤S110:提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键;步骤S120:将转换存储结构中的第一类值设为空值;步骤S130:将第一类键及第一类值组成的第一类数据键值对存储至键值数据库中。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
步骤S110:提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键。
例如,以原始存储结构为zset存储结构为例,zset是string类型的集合,通过hash表实现数据的关联,如存在一组zset数据集合,即为多个待转换数据,其zset数据存储结构具体为:key-score-member,一个key对应一有序数据集合,在该有序数据集合中,唯一的member对应一个score;在本方案的实施例中,key为第一数据单元,score为第二数据单元,member为第三数据单元。首先,提取待转换数据中的第一数据单元key,如“class1”,第二数据单元score,如“60”以及第三数据单元member,如“name1”,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键如“class160name1”;
步骤S120:将转换存储结构中的第一类值设为空值。
例如,接上例,将转换的zset数据存储结构中的第一类值设为空值。
步骤S130:将第一类键及第一类值组成的第一类数据键值对存储至键值数据库中。
例如,接上例,将第一类键及第一类值组成的第一类数据键值对“class160name1-‘’(空值)”存储至键值数据库中。
在一优选实施例图2中,当原始存储结构为zset存储结构时,步骤S210:提取待转换数据中的第一数据单元及第三数据单元,并将第一数据单元及第三数据单元进行合并以确定为转换存储结构中的第二类键;步骤S220:将提取到的待转换数据中的第二数据单元确定为转换存储结构中的第二类值;步骤S230:将第二类键及第二类值组成的第二类数据键值对存储至键值数据库中。
例如,Redis存储系统中的zset数据存储结构,zset数据存储结构具体为:key-score-member,其中,member为字段,score为int数据类型的数据值,一个key对应一有序数据集合,其中包括多个具有唯一性的member,一个member对应一个score。在本方案的实施例中,key为第一数据单元,score为第二数据单元,member为第三数据单元。如下表1所示,该表示出了key值为“class2”的zset存储结构的数据集合中的存储对象:
member | score |
name1 | 60 |
name2 | 85 |
name3 | 90 |
表1
首先,提取上表1所示以zset为存储结构的数据集合中的第一数据单元为“class2”,及第三数据单元分别为“name1”、“name2”和“name3”,并将第一数据单元及第三数据单元分别进行合并得到转换存储结构中的第二类键“class2name1”、“class2name2”和“class2name3”,由于该数据集合中的member值具有唯一性,因此合并得到转换存储结构中的第二类键也具有唯一性,随后,提取第二数据单元“60”、“85”和“90”,并将第二数据单元确定为转换存储结构中的第二类值,根据转换存储结构Key-Value存储结构,将第二类键及第二类值组成的第二类数据键值对,即第二类数据键值对1:“class2name1-60”,第二类数据键值对2:“class2name285”和第二类数据键值对3:“class2name3-90”存储至键值数据库中,确保了第二类数据键值对存储的唯一性。
优选地(参照图1),该方法还包括步骤S160(图中未示出)和步骤S170(图中未示出);步骤S160:确定具有相同第一数据单元的待转换数据的数量;步骤S170:将以预定的数量标识为键、以具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与待转换数据相关联地存储至键值数据库中。
其中,预定的数量标识至少包括:
第一数据单元;可变量标识。
例如,Redis存储系统中的zset数据存储结构的多个待转换数据,包含有两个key值“class1”和“class2”,key值为“class1”的集合中包含有1条数据:member为“name1”,score为“20”,转换存储后的第一类键值对为“class120name1-‘’”,转换存储后的第二类键值对为“class1name1-20”;key值为“class2”的集合中包含有2条数据:member为“name21”score为“45”和member为“name22”score为“48”,转换存储后的第一类键值对为“class245name21-‘’”和“class248name22-‘’”,第二类键值对为“class2name21-45”和“class2name22-48”;接着,确定key值为“class1”的待转换数据的数量为1,key值为“class2”的待转换数据的数量为2,根据转换存储结构Key-Value,以预定义的数量标识位为键,如“class1-size”和“class2-size”,即确定数量键值对“class1-size-1”和“class2-size-2”并将其存储至键值数据库中,其中,数量键值对“class1-size-1”通过相同的“class1”与第一类键值对为“class120name1-‘’”和第二类键值对为“class1name1-20”相关联;数量键值对“class2-size-2”通过相同的“class2”与第一类键值对为“class245name21-‘’”和“class248name22-‘’”,第二类键值对为“class2name21-45”和“class2name22-48”相关联。其中,待转换数据的第一数据单元分别为“class1”和“class2”,可变量标识为“size”,则预定的数量标识位可设定为“class1-size”和“class2-size”。根据可变量标识“size”则可识别该键值对为数量键值对。
优选地(参照图1),该方法还包括步骤S180(图中未示出);步骤S180:当对任一待更新的第一类数据键值对进行更新操作时,对与该待更新的第一类数据键值对相关联的第二类数据键值及数量键值对进行相应更新;或当对任一待更新的第二类数据键值对进行更新操作时,对与该待更新的第二类数据键值对相关联的第一类数据键值及数量键值对进行相应更新。
例如,接上例,若键值数据库中存在原始存储结构为zset存储结构的第一类键值对为“class277name23-‘’”,相应的第二类键值对为“ID2name23-77”,与该第一类键值对和第二类键值对相关联存储的数量键值对为“ID2-size-2”,如在键值数据库中删除该第一类键值对时,将相应的将数量键值对“ID2-size-2”修改为“ID2-size-1”,同时,将相应的第二类键值对为“ID2name23-77”删除;如在键值数据库中修改该第一类键值对为“class290name23-‘’”时,同时修改相应的第二类键值对为“ID2name23-90”。如在键值数据库中删除该第二类键值对时,将相应的将数量键值对“ID2-size-2”修改为“ID2-size-1”,同时,将相应的第一类键值对为“class277name23-‘’”删除;如在键值数据库中修改该第二类键值对为“ID2name23-88”时,同时修改相应的第一类键值对为“class288name23-‘’”。
优选地(参照图1),该方法还包括步骤S140(图中未示出)和步骤S150(图中未示出);步骤S140:判断第二数据单元是否为整数类型;步骤S150:当第二数据单元不为整数类型时,将第二数据单元通过预设转换算法转换为整数类型。
例如,Redis存储系统中的zset数据存储结构,zset数据存储结构具体为:key-score-member,key为第一数据单元,score为第二数据单元,member为第三数据单元。在数据存储过程中,首先判断第二数据单元score是否为整数类型,当score不为整数类型时,将score通过预设转换算法转换为整数类型,如score为4.678,其不为整数类型,则将4.678乘以105得到整数类型的值46780。
在一具体应用场景中,Redis存储系统中的zset数据存储结构的一组多个待转换数据,包含有一个key值“语文”,该集合中包含有5条数据,如下表2:
member | score |
Lily | 60 |
Lucy | 85.4 |
Jerry | 90 |
Andy | 78.8 |
Tom | 99 |
表2
该组zset数据存储结构的待转换数据的数据结构具体为:key-score-member,key为第一数据单元,score为第二数据单元,member为第三数据单元。判断第二数据单元score的数据类型确定85.4和78.8为非整数,随后将第二数据单元的数据分别乘以102得到整数类型的值6000、8540、9000、7880和9900,提取待转换数据中的第一数据单元即key为“语文”,第二数据单元即score以及第三数据单元member,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键,将转换的zset存储结构中的第一类值设为空值,得到第一类键及第一类值组成的第一类数据键值对以转换存储结构为Key-Value存储结构存储至键值数据库LevelDB中,基于LevelDB数据库根据Key值以字典序自排序的特性,该组第一类键值对以如下顺序进行存储:“语文6000Lily-‘’”、“语文7880Andy-‘’”、“语文8540Lucy-‘’”、“语文9000Jerry-‘’”和“语文9900Tom-‘’”;同时,将第一数据单元及第三数据单元进行合并得到转换存储结构中的第二类键,将第三数据单元确定为转换存储结构中的第二类值,得到第二类键及第二类值组成的第二类数据键值对以转换存储结构为Key-Value存储结构存储至键值数据库LevelDB中,基于LevelDB数据库根据Key值以字典序自排序的特性,该组第二类键值对以如下顺序存储至LevelDB中:“语文Andy-7880”、“语文Jerry-9000”、“语文Lily-6000”、“语文Lucy-8540”及“语文Tom-9900”;接着确定key值为“语文”的待转换数据的数量为5,根据转换存储结构Key-Value,以预定义的数量标识位为键,将数量键值对“语文size-5”存储至LevelDB中;当需要查找语文分数为80分以上的人名时,将80乘以102得到8000,并在LevelDB中查询确定第一类键值对“语文8540Lucy-‘’”为第一个大于8000的数据,由于第一类键值对以升序方式排列,可直接提取“语文8540Lucy-‘’”之后第一类键值对为“语文8540Lucy-‘’”、“语文9000Jerry-‘’”和“语文9900Tom-‘’”,从中提取member得到80分以上的人名为:Lucy、Jerry和Tom。
图3为本发明中另一实施例的数据存储结构的转换装置的结构示意图。
第一键确定模块310提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键;第一值确定模块320将转换存储结构中的第一类值设为空值;第一键值对存储模块330将第一类键及第一类值组成的第一类数据键值对存储至键值数据库中。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
第一键确定模块310提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键。
例如,以原始存储结构为zset存储结构为例,zset是string类型的集合,通过hash表实现数据的关联,如存在一组zset数据集合,即为多个待转换数据,其zset数据存储结构具体为:key-score-member,一个key对应一有序数据集合,在该有序数据集合中,唯一的member对应一个score;在本方案的实施例中,key为第一数据单元,score为第二数据单元,member为第三数据单元。首先,提取待转换数据中的第一数据单元key,如“class1”,第二数据单元score,如“60”以及第三数据单元member,如“name1”,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键如“class160name1”;
第一值确定模块320将转换存储结构中的第一类值设为空值。
例如,接上例,将转换的zset数据存储结构中的第一类值设为空值。
第一键值对存储模块330将第一类键及第一类值组成的第一类数据键值对存储至键值数据库中。
例如,接上例,将第一类键及第一类值组成的第一类数据键值对“class160name1-‘’(空值)”存储至键值数据库中。
在一优选实施例图4中,当原始存储结构为zset存储结构时,第二键确定模块410提取待转换数据中的第一数据单元及第三数据单元,并将第一数据单元及第三数据单元进行合并以确定为转换存储结构中的第二类键;第二值确定模块420将提取到的待转换数据中的第二数据单元确定为转换存储结构中的第二类值;第二键值对存储模块430将第二类键及第二类值组成的第二类数据键值对存储至键值数据库中。
例如,Redis存储系统中的zset数据存储结构,zset数据存储结构具体为:key-score-member,其中,member为字段,score为int数据类型的数据值,一个key对应一有序数据集合,其中包括多个具有唯一性的member,一个member对应一个score。在本方案的实施例中,key为第一数据单元,score为第二数据单元,member为第三数据单元。如上表1所示,该表示出了key值为“class2”的zset存储结构的数据集合中的存储对象。
首先,提取上表1所示以zset为存储结构的数据集合中的第一数据单元为“class2”,及第三数据单元分别为“name1”、“name2”和“name3”,并将第一数据单元及第三数据单元分别进行合并得到转换存储结构中的第二类键“class2name1”、“class2name2”和“class2name3”,由于该数据集合中的member值具有唯一性,因此合并得到转换存储结构中的第二类键也具有唯一性,随后,提取第二数据单元“60”、“85”和“90”,并将第二数据单元确定为转换存储结构中的第二类值,根据转换存储结构Key-Value存储结构,将第二类键及第二类值组成的第二类数据键值对,即第二类数据键值对1:“class2name1-60”,第二类数据键值对2:“class2name285”和第二类数据键值对3:“class2name3-90”存储至键值数据库中,确保了第二类数据键值对存储的唯一性。
优选地(参照图1),该装置还包括数量确定模块360(图中未示出)和数量键值对存储模块370(图中未示出);数量确定模块360确定具有相同第一数据单元的待转换数据的数量;数量键值对存储模块370将以预定的数量标识为键、以具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与待转换数据相关联地存储至键值数据库中。
其中,预定的数量标识至少包括:
第一数据单元;可变量标识。
例如,Redis存储系统中的zset数据存储结构的多个待转换数据,包含有两个key值“class1”和“class2”,key值为“class1”的集合中包含有1条数据:member为“name1”,score为“20”,转换存储后的第一类键值对为“class120name1-‘’”,转换存储后的第二类键值对为“class1name1-20”;key值为“class2”的集合中包含有2条数据:member为“name21”score为“45”和member为“name22”score为“48”,转换存储后的第一类键值对为“class245name21-‘’”和“class248name22-‘’”,第二类键值对为“class2name21-45”和“class2name22-48”;接着,确定key值为“class1”的待转换数据的数量为1,key值为“class2”的待转换数据的数量为2,根据转换存储结构Key-Value,以预定义的数量标识位为键,如“class1-size”和“class2-size”,即确定数量键值对“class1-size-1”和“class2-size-2”并将其存储至键值数据库中,其中,数量键值对“class1-size-1”通过相同的“class1”与第一类键值对为“class120name1-‘’”和第二类键值对为“class1name1-20”相关联;数量键值对“class2-size-2”通过相同的“class2”与第一类键值对为“class245name21-‘’”和“class248name22-‘’”,第二类键值对为“class2name21-45”和“class2name22-48”相关联。其中,待转换数据的第一数据单元分别为“class1”和“class2”,可变量标识为“size”,则预定的数量标识位可设定为“class1-size”和“class2-size”。根据可变量标识“size”则可识别该键值对为数量键值对。
优选地(参照图1),该装置还包括更新模块380(图中未示出);当对任一待更新的第一类数据键值对进行更新操作时,更新模块380对与该待更新的第一类数据键值对相关联的第二类数据键值及数量键值对进行相应更新;或当对任一待更新的第二类数据键值对进行更新操作时,对与该待更新的第二类数据键值对相关联的第一类数据键值及数量键值对进行相应更新。
例如,接上例,若键值数据库中存在原始存储结构为zset存储结构的第一类键值对为“class277name23-‘’”,相应的第二类键值对为“ID2name23-77”,与该第一类键值对和第二类键值对相关联存储的数量键值对为“ID2-size-2”,如在键值数据库中删除该第一类键值对时,将相应的将数量键值对“ID2-size-2”修改为“ID2-size-1”,同时,将相应的第二类键值对为“ID2name23-77”删除;如在键值数据库中修改该第一类键值对为“class290name23-‘’”时,同时修改相应的第二类键值对为“ID2name23-90”。如在键值数据库中删除该第二类键值对时,将相应的将数量键值对“ID2-size-2”修改为“ID2-size-1”,同时,将相应的第一类键值对为“class277name23-‘’”删除;如在键值数据库中修改该第二类键值对为“ID2name23-88”时,同时修改相应的第一类键值对为“class288name23-‘’”。
优选地(参照图1),该装置还包括判断模块340(图中未示出)和转换模块350(图中未示出);判断模块340判断第二数据单元是否为整数类型;转换模块350当第二数据单元不为整数类型时,将第二数据单元通过预设转换算法转换为整数类型。
例如,Redis存储系统中的zset数据存储结构,zset数据存储结构具体为:key-score-member,key为第一数据单元,score为第二数据单元,member为第三数据单元。在数据存储过程中,首先判断第二数据单元score是否为整数类型,当score不为整数类型时,将score通过预设转换算法转换为整数类型,如score为4.678,其不为整数类型,则将4.678乘以105得到整数类型的值46780。
在一具体应用场景中,Redis存储系统中的zset数据存储结构的一组多个待转换数据,包含有一个key值“语文”,该集合中包含有5条数据,如上表2。
该组zset数据存储结构的待转换数据的数据结构具体为:key-score-member,key为第一数据单元,score为第二数据单元,member为第三数据单元。判断第二数据单元score的数据类型确定85.4和78.8为非整数,随后将第二数据单元的数据分别乘以102得到整数类型的值6000、8540、9000、7880和9900,提取待转换数据中的第一数据单元即key为“语文”,第二数据单元即score以及第三数据单元member,并将第一数据单元、第二数据单元及第三数据单元进行合并以确定为转换存储结构中的第一类键,将转换的zset存储结构中的第一类值设为空值,得到第一类键及第一类值组成的第一类数据键值对以转换存储结构为Key-Value存储结构存储至键值数据库LevelDB中,基于LevelDB数据库根据Key值以字典序自排序的特性,该组第一类键值对以如下顺序进行存储:“语文6000Lily-‘’”、“语文7880Andy-‘’”、“语文8540Lucy-‘’”、“语文9000Jerry-‘’”和“语文9900Tom-‘’”;同时,将第一数据单元及第三数据单元进行合并得到转换存储结构中的第二类键,将第三数据单元确定为转换存储结构中的第二类值,得到第二类键及第二类值组成的第二类数据键值对以转换存储结构为Key-Value存储结构存储至键值数据库LevelDB中,基于LevelDB数据库根据Key值以字典序自排序的特性,该组第二类键值对以如下顺序存储至LevelDB中:“语文Andy-7880”、“语文Jerry-9000”、“语文Lily-6000”、“语文Lucy-8540”及“语文Tom-9900”;接着确定key值为“语文”的待转换数据的数量为5,根据转换存储结构Key-Value,以预定义的数量标识位为键,将数量键值对“语文size-5”存储至LevelDB中;当需要查找语文分数为80分以上的人名时,将80乘以102得到8000,并在LevelDB中查询确定第一类键值对“语文8540Lucy-‘’”为第一个大于8000的数据,由于第一类键值对以升序方式排列,可直接提取“语文8540Lucy-‘’”之后第一类键值对为“语文8540Lucy-‘’”、“语文9000Jerry-‘’”和“语文9900Tom-‘’”,从中提取member得到80分以上的人名为:Lucy、Jerry和Tom。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-OnlyMemory,只读存储器)、RAM(RandomAccessMemory,随即存储器)、EPROM(ErasableProgrammableRead-OnlyMemory,可擦写可编程只读存储器)、EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据存储结构的转换方法,其特征在于,包括:
提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将所述第一数据单元、所述第二数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第一类键;
将所述转换存储结构中的第一类值设为空值;
将所述第一类键及所述第一类值组成的第一类数据键值对存储至键值数据库中。
2.根据权利要求1所述的数据存储结构的转换方法,其中,该方法还包括:
提取所述待转换数据中的第一数据单元及第三数据单元,并将所述第一数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第二类键;
将提取到的所述待转换数据中的第二数据单元确定为转换存储结构中的第二类值;
将所述第二类键及所述第二类值组成的第二类数据键值对存储至键值数据库中。
3.根据权利要求1所述的数据存储结构的转换方法,其中,该方法还包括:
判断所述第二数据单元是否为整数类型;
当所述第二数据单元不为整数类型时,将所述第二数据单元通过预设转换算法转换为整数类型。
4.根据权利要求1或2所述的数据存储结构的转换方法,其中,该方法还包括:
确定具有相同第一数据单元的待转换数据的数量;
将以预定的数量标识为键、以所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述第一类数据键值对及所述第二类数据键值相关联地存储至所述键值数据库中。
5.根据权利要求4所述的数据存储结构的转换方法,其中,所述预定的数量标识至少包括:
第一数据单元;可变量标识。
6.根据权利要求1-5中任一项所述的数据存储结构的转换方法,其中,该方法还包括:
当对任一待更新的第一类数据键值对进行更新操作时,对与该待更新的第一类数据键值对相关联的第二类数据键值及数量键值对进行相应更新;或
当对任一待更新的第二类数据键值对进行更新操作时,对与该待更新的第二类数据键值对相关联的第一类数据键值及数量键值对进行相应更新。
7.一种数据存储结构的转换装置,其特征在于,包括:
第一键确定模块,用于提取基于原始存储结构的待转换数据中的第一数据单元、第二数据单元及第三数据单元,并将所述第一数据单元、所述第二数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第一类键;
第一值确定模块,用于将所述转换存储结构中的第一类值设为空值;
第一键值对存储模块,用于将所述第一类键及所述第一类值组成的第一类数据键值对存储至键值数据库中。
8.根据权利要求7所述的数据存储结构的转换装置,其中,该装置还包括:
第二键确定模块,用于提取所述待转换数据中的第一数据单元及第三数据单元,并将所述第一数据单元及所述第三数据单元进行合并以确定为转换存储结构中的第二类键;
第二值确定模块,用于将提取到的所述待转换数据中的第二数据单元确定为转换存储结构中的第二类值;
第二键值对存储模块,用于将所述第二类键及所述第二类值组成的第二类数据键值对存储至键值数据库中。
9.根据权利要求7所述的数据存储结构的转换装置,其中,该装置还包括:
判断模块,用于判断所述第二数据单元是否为整数类型;
转换模块,用于当所述第二数据单元不为整数类型时,将所述第二数据单元通过预设转换算法转换为整数类型。
10.根据权利要求7或8所述的数据存储结构的转换装置,其中,该装置还包括:
数量确定模块,用于确定具有相同第一数据单元的待转换数据的数量;
数量键值对存储模块,用于将以预定的数量标识为键、以所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述第一类数据键值对及所述第二类数据键值相关联地存储至所述键值数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510673553.8A CN105608103A (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510673553.8A CN105608103A (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105608103A true CN105608103A (zh) | 2016-05-25 |
Family
ID=55988044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510673553.8A Pending CN105608103A (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105608103A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874459A (zh) * | 2017-02-14 | 2017-06-20 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN108737246A (zh) * | 2018-05-07 | 2018-11-02 | 北京达佳互联信息技术有限公司 | 消息下发方法、装置、存储介质和服务器 |
CN112491857A (zh) * | 2020-11-20 | 2021-03-12 | 北京人大金仓信息技术股份有限公司 | 集合类型数据的传输方法、装置和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110196844A1 (en) * | 2006-11-01 | 2011-08-11 | Ab Initio Technology Llc | Managing storage of individually accessible data units |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN104216961A (zh) * | 2014-08-21 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN104715041A (zh) * | 2015-03-24 | 2015-06-17 | 深圳市乾华数据科技有限公司 | 一种数据库恢复方法及系统 |
CN104794138A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种数据库交易结果确认方法、装置及系统 |
-
2015
- 2015-10-16 CN CN201510673553.8A patent/CN105608103A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110196844A1 (en) * | 2006-11-01 | 2011-08-11 | Ab Initio Technology Llc | Managing storage of individually accessible data units |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN104794138A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种数据库交易结果确认方法、装置及系统 |
CN104216961A (zh) * | 2014-08-21 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN104715041A (zh) * | 2015-03-24 | 2015-06-17 | 深圳市乾华数据科技有限公司 | 一种数据库恢复方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874459A (zh) * | 2017-02-14 | 2017-06-20 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN106874459B (zh) * | 2017-02-14 | 2020-07-10 | 北京奇虎科技有限公司 | 流式数据存储方法及装置 |
CN108737246A (zh) * | 2018-05-07 | 2018-11-02 | 北京达佳互联信息技术有限公司 | 消息下发方法、装置、存储介质和服务器 |
CN112491857A (zh) * | 2020-11-20 | 2021-03-12 | 北京人大金仓信息技术股份有限公司 | 集合类型数据的传输方法、装置和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102640151B (zh) | 用于传输日志记录的方法和系统 | |
CN108733681B (zh) | 信息处理方法及装置 | |
CN105260464B (zh) | 数据存储结构的转换方法及装置 | |
CN108932313B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US8782101B1 (en) | Transferring data across different database platforms | |
CN108897874B (zh) | 用于处理数据的方法和装置 | |
CN108846753B (zh) | 用于处理数据的方法和装置 | |
CN105488050B (zh) | 一种数据库多索引方法、装置及系统 | |
CN106164865A (zh) | 用于数据复制的依赖性感知的事务批处理 | |
CN103810212A (zh) | 一种数据库索引的自动创建方法及系统 | |
US20140122455A1 (en) | Systems and Methods for Intelligent Parallel Searching | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN106156070B (zh) | 一种查询方法、文件合并方法与相关装置 | |
CN107329987A (zh) | 一种基于mongo数据库的搜索系统 | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
CN106021207A (zh) | 专利撰写系统及其方法 | |
CN105608103A (zh) | 数据存储结构的转换方法及装置 | |
CN106528896A (zh) | 一种数据库优化方法和装置 | |
CN114022148B (zh) | 基于区块链的交易冲突检测方法、装置、设备和存储介质 | |
CN109614411B (zh) | 数据存储方法、设备和存储介质 | |
WO2011074942A1 (en) | System and method of converting data from a multiple table structure into an edoc format | |
CN105302889B (zh) | 数据存储结构的转换方法及装置 | |
CN105045891A (zh) | 提高顺序表性能方法、系统、架构、优化方法及存储装置 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
CN106547843A (zh) | 多级分类查询方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160525 |
|
RJ01 | Rejection of invention patent application after publication |