CN105260464A - 数据存储结构的转换方法及装置 - Google Patents
数据存储结构的转换方法及装置 Download PDFInfo
- Publication number
- CN105260464A CN105260464A CN201510672548.5A CN201510672548A CN105260464A CN 105260464 A CN105260464 A CN 105260464A CN 201510672548 A CN201510672548 A CN 201510672548A CN 105260464 A CN105260464 A CN 105260464A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- value
- converted
- data cell
- 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.)
- Granted
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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (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为一种内存型数据库,因此该存储方式受物理内存限制,无法实现大数据存储。
由此可见,如何实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统是目前急需解决的问题。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的实施例提出了一种数据存储结构的转换方法,包括:
提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键;
基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值;
根据所述转换存储结构,将所述键及所述值组成的数据键值对存储至键值数据库中。
其中,所述值设定规则具体包括:
当所述待转换数据的原始存储结构中包括第三数据单元时,将所述第三数据单元确定为转换存储结构中的值;
当所述待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
优选地,当所述原始存储结构为hash存储结构时,所述提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键的步骤,具体包括:
提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;
其中,所述基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值的步骤,具体包括:
提取所述待转换数据中的value数据单元,并将其确定为转换存储结构中的值。
优选地,当所述原始存储结构为set存储结构时,所述提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键的步骤,具体包括:
提取基于set存储结构的待转换数据中的key数据单元及member数据单元,并将其进行合并以确定为转换存储结构中的键;
其中,所述基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值的步骤,具体包括:
将转换存储结构中的值设为空值。
优选地,该方法还包括:
确定具有相同第一数据单元的待转换数据的数量;
根据所述转换存储结构,将以预定的数量标识位为键、及所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述待转换数据相关联地存储至所述键值数据库中。
其中,所述预定的数量标识位至少包括:
第一数据单元;可变量标识。
优选地,
数据存储结构的转换方法包括:
当对所述键值数据库进行添加和/或删除操作时,对与添加和/或删除的数据键值对相关联的数量键值对进行相应更新。
本发明的另一实施例还提出了一种数据存储结构的转换装置,包括:
键确定模块,用于提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键;
值确定模块,用于基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值;
数据键值对存储模块,用于根据所述转换存储结构,将所述键及所述值组成的数据键值对存储至键值数据库中。
其中,所述值设定规则具体包括:
当所述待转换数据的原始存储结构中包括第三数据单元时,将所述第三数据单元确定为转换存储结构中的值;
当所述待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
优选地,当所述原始存储结构为hash存储结构时,所述键确定模块具体用于提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;所述值确定模块具体用于提取所述待转换数据中的value数据单元,并将其确定为转换存储结构中的值。
优选地,当所述原始存储结构为set存储结构时,所述键确定模块具体用于提取基于set存储结构的待转换数据中的key数据单元及member数据单元,并将其进行合并以确定为转换存储结构中的键;所述值确定模块具体用于将转换存储结构中的值设为空值。
优选地,该装置还包括:
数量确定模块,用于确定具有相同第一数据单元的待转换数据的数量;
数量键值对存储模块,用于根据所述转换存储结构,将以预定的数量标识位为键、及所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述待转换数据相关联地存储至所述键值数据库中。
其中,所述预定的数量标识位至少包括:
第一数据单元;可变量标识。
优选地,该装置还包括更新模块:
更新模块,用于当对所述键值数据库进行添加和/或删除操作时,对与添加和/或删除的数据键值对相关联的数量键值对进行相应更新。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的数据存储结构的转换方法的流程图;
图2为本发明中一个优选实施例的数据存储结构的转换方法的流程图;
图3为本发明中另一优选实施例的数据存储结构的转换方法的流程图;
图4为本发明中另一实施例的数据存储结构的转换装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
图1为本发明实施例的数据存储结构的转换方法的流程图。
步骤S110:提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将第一数据单元及第二数据单元进行合并以确定为转换存储结构中的键;步骤S120:基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值;步骤S130:根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
步骤S110:提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将第一数据单元及第二数据单元进行合并以确定为转换存储结构中的键。
例如,以原始存储结构为hash存储结构为例,hash数据结构具体为:key-field-value,一个key对应一张hash表,在该hash表中,唯一的field对应一个value;key为第一数据单元,field为第二数据单元,首先,提取待转换数据中的第一数据单元即key,如“ID”,以及第二数据单元即field,如“f1”,并将key及value进行合并以确定为转换存储结构中的键,得到“IDf1”。
又例如,以原始存储结构为set存储结构为例,set数据结构具体为:key-member,一个key对应一个member集合,其中包括多个具有唯一性的member值;key为第一数据单元,member为第二数据单元,首先,提取待转换数据中的第一数据单元即key,如“ID”,以及第二数据单元即member,如“m1”,并将key及member进行合并以确定为转换存储结构中的键,得到“IDm1”。
步骤S120:基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值。
其中,值设定规则具体包括:
当待转换数据的原始存储结构中包括第三数据单元时,将第三数据单元确定为转换存储结构中的值;
当待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
例如,若待转换数据的原始数据结构中包含第三数据单元时,将第三数据单元所对应的值确定为转换存储结构中的值,如hash数据结构中key为第一数据单元,field为第二数据单元,value为第三数据单元,转换存储结构中的值即为value;若得到待转换数据的原始数据结构中不包含第三数据单元,将转换存储结构中的值设为空值,如set数据结构中不包含第三数据单元,转换存储结构中的值设为空值。
步骤S130:根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,对于hash存储结构,根据转换存储结构Key-Value,将数据键值对“IDf1-value(原hash结构中的value)”存储至键值数据库中;对于set存储结构,根据转换存储结构Key-Value,将数据键值对“IDm1-‘’(空值)”,存储至键值数据库中。
在一优选实施例图2中,当原始存储结构为hash存储结构时,步骤S210:提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;步骤S220:提取待转换数据中的value数据单元,并将其确定为转换存储结构中的值;步骤S230:根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,Redis存储系统中的hash数据结构,hash数据结构具体为:key-field-value,其是一个string数据类型的field(字段)和value(数据值)的hash映射表,一个key对应一张hash映射表,其中包括多个具有唯一性的field,一个field对应一个value。如下表1所示,该表示出了key值为“ID1”的hash的存储对象:
field | value |
f1 | a |
f2 | b |
f3 | c |
表1
首先,提取key值为“ID1”的hash结构数据中的key数据单元即“ID1”,及field数据单元即“f1”、“f2”和“f3”,并将key数据单元及field数据单元进行合并得到转换存储结构中的键“ID1f1”、“ID1f2”和“ID1f3”,由于hash结构中的field值具有唯一性,因此合并得到转换存储结构中的键也具有唯一性,hash存储结构包含value数据单元,将value数据单元“a”、“b”和“c”确定为转换存储结构中的值,根据转换存储结构Key-Value存储结构,将键及值组成的数据键值对,即键值对1:“ID1f1-a”,键值对2:“ID1f2-b”和键值对3:“ID1f3-c”存储至键值数据库中,确保了数据键值对存储的唯一性。
在另一优选实施例中,当原始存储结构为set存储结构时,步骤S310:提取基于set存储结构的待转换数据中的key数据单元及member数据单元,并将其进行合并以确定为转换存储结构中的键;步骤S320:将转换存储结构中的值设为空值;步骤S330:根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,Redis存储系统中的set数据结构具体为:key-member,其中,一个key对应一个member集合,其中包括多个具有唯一性的member值;首先,提取基于set存储结构的待转换数据中的key数据单元“ID3”及member数据单元“a”、“b”,并将其进行合并以确定为转换存储结构Key-Value中的键“ID3a”和“ID3b”,由于set数据结构的member值具有唯一性,因此,转换存储结构中的键“ID3a”及“ID3b”也具有唯一性,由于set数据结构不存在第三数据单元,因此将转换存储结构Key-Value中的值设为空值‘’,随后将数据键值对“ID3a-‘’(空值)”及“ID3b-‘’(空值)”存储至键值数据库中,确保了数据键值对存储的唯一性。
优选地(参照图1),该方法还包括步骤S140(图中未示出)和步骤S150(图中未示出);步骤S140:确定具有相同第一数据单元的待转换数据的数量;步骤S150:根据转换存储结构,将以预定的数量标识位为键、具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与待转换数据相关联地存储至所述键值数据库中。
其中,预定的数量标识位至少包括:
第一数据单元;可变量标识;
其中,数量标识位还可以包括其他相关信息,本发明对此不做限定。
例如,Redis存储系统中的hash数据结构的一组待转换数据,包含有两个key值“ID1”和“ID2”,key值为“ID1”的hash表中包含有1条数据:field为“f1”,value为“a”,key值为“ID2”的hash表中包含有2条数据:field为“f21”、value为“b”和field为“f22”、value为“c”;接着确定key值为“ID1”的待转换数据的数量为1,key值为“ID2”的待转换数据的数量为2,根据转换存储结构Key-Value,以预定义的数量标识位为键,如“ID1-size”和“ID2-size”,将数据键值对“ID1-size-1”通过相同的“ID1”与key值为“ID1”的hash表中的field为“f1”且value为“a”的一条待转换数据关联地存储至键值数据库中,并将数据键值对“ID2-size-2”通过相同的“ID2”与key值为“ID2”的hash表中的field为“f21”且value为“b”、field为“f22”且value为“c”的两条数据关联地存储至键值数据库中。
例如,接上例,待转换数据的第一数据单元分别为“ID1”和“ID2”,可变量标识为“size”,则预定的数量标识位可设定为“ID1-size”和“ID2-size”。根据可变量标识“size”则可识别该键值对为数量键值对。
其中,数量键值对与各个待转换数据相关联地方式为,数量键值对的键“ID1-size”中包括元素“ID1”,对应的待转换数据的数据键值对“ID1f1-a”、“ID1f2-b”和“ID1f3-c”的各个键“ID1f1”、“ID1f2”和“ID1f3”中均包括为元素“ID1”,其通过“ID1”可建立关联关系。
优选地(参照图1),该方法还包括步骤S160(图中未示出);步骤S160:
当对键值数据库进行添加和/或删除操作时,对与添加和/或删除的数据键值对相关联的数量键值对进行相应更新。
例如,接上例,在键值数据库中加入两条数据时,当前的数据键值对为“ID2-size-2”,如添加两条原始存储结构为hash存储结构的数据,一条数据的hash存储结构key-field-value为:“ID2-f23-d”,另一条数据的hash存储结构key-field-value为:“ID2-f24-e”;首先将该两条数据转换为Key-Value存储结构,即“ID2f23-d”和“ID2f24-d”;再将转换后的“ID2f23-d”和“ID2f24-d”存储至键值数据库中;随后将数据键值对“ID2-size-2”修改为“ID2-size-4”;接着,在键值数据库中删除一条Key-Value存储结构的数据“ID2-f23-d”时,则将数据键值对“ID2-size-4”修改为“ID2-size-3”。
在一具体应用场景中,需要存储一组set数据结构的具有相同key数据单元的待转换数据至键值数据库中,首先对该组待转换数据进行转换,分别提取多个待转换数据中的key数据单元“ID”,和member数据单元“a”、“b”、“c”,并将key数据单元及member数据单元分别进行合并以确定为转换存储结构中的键分别为“IDa”、“IDb”和“IDc”,由于set数据结构不存在第三数据单元,因此将转换存储结构中的值设为空值‘’,随后以Key-Value存储结构将数据键值对“IDa-‘’”和“IDb-‘’”和“IDc-‘’”存储至键值数据库中,同时确定数据键值对为“IDsize-3”;由于set数据结构的member数据单元具有唯一性,因此,在键值数据库中的键“IDa”、“IDb”和“IDc”也具有唯一性,当通过键值查找键值中包含有“ID”值的键时,可得到“IDa”、“IDb”和“IDc”,进一步通过拆分该组数据,可得到含有“ID”值的键具体包含的值为“a”、“b”、“c”,以此完成了在键值数据库中存储set数据结构的数据,并查找获取set数据结构中key值对应的member数据单元的数据。
图4为本发明中另一实施例的数据存储结构的转换的装置的结构示意图。
键确定模块410提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将第一数据单元及第二数据单元进行合并以确定为转换存储结构中的键;值确定模块420基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值;数据键值对存储模块430根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
本发明的实施例中,提出了一种数据存储结构的转换方案,通过将基于原始存储结构的数据转换存储为基于转换存储结构中的数据,实现对多种存储数据类型以统一的转换存储结构的方式进行数据存储。进一步的,将支持多种value类型的数据存储结构的Redis存储系统中的多种数据存储结构的数据,转存至仅支持无变形的键值对数据存储结构的LevelDB存储系统,实现了在保证较高的数据存储处理效率的前提下,将受物理内存限制的存储方式转换为以磁盘为数据存储目标的、不受物理内存限制的存储方式。通过本发明,最终可实现一种数据存储处理效率较高、既支持多种类型的数据存储结构、又不受物理内存限制的存储系统,由于该存储系统可对多种数据结构类型的海量数据进行高效存储,从而使得本方案的数据存储方式拥有较强的业务扩展性。
键确定模块410提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将第一数据单元及第二数据单元进行合并以确定为转换存储结构中的键。
例如,以原始存储结构为hash存储结构为例,hash数据结构具体为:key-field-value,一个key对应一张hash表,在该hash表中,唯一的field对应一个value;key为第一数据单元,field为第二数据单元,首先,提取待转换数据中的第一数据单元即key,如“ID”,以及第二数据单元即field,如“f1”,并将key及value进行合并以确定为转换存储结构中的键,得到“IDf1”。
又例如,以原始存储结构为set存储结构为例,set数据结构具体为:key-member,一个key对应一个member集合,其中包括多个具有唯一性的member值;key为第一数据单元,member为第二数据单元,首先,提取待转换数据中的第一数据单元即key,如“ID”,以及第二数据单元即member,如“m1”,并将key及member进行合并以确定为转换存储结构中的键,得到“IDm1”。
值确定模块420基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值。
其中,值设定规则具体包括:
当待转换数据的原始存储结构中包括第三数据单元时,将第三数据单元确定为转换存储结构中的值;
当待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
例如,若待转换数据的原始数据结构中包含第三数据单元时,将第三数据单元所对应的值确定为转换存储结构中的值,如hash数据结构中key为第一数据单元,field为第二数据单元,value为第三数据单元,转换存储结构中的值即为value;若得到待转换数据的原始数据结构中不包含第三数据单元,将转换存储结构中的值设为空值,如set数据结构中不包含第三数据单元,转换存储结构中的值设为空值。
数据键值对存储模块430根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,对于hash存储结构,根据转换存储结构Key-Value,将数据键值对“IDf1-value(原hash结构中的value)”存储至键值数据库中;对于set存储结构,根据转换存储结构Key-Value,将数据键值对“IDm1-‘’(空值)”,存储至键值数据库中。
在一优选实施例中,当原始存储结构为hash存储结构时,键确定模块410提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;值确定模块420提取待转换数据中的value数据单元,并将其确定为转换存储结构中的值;数据键值对存储模块430根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,Redis存储系统中的hash数据结构,hash数据结构具体为:key-field-value,其是一个string数据类型的field(字段)和value(数据值)的hash映射表,一个key对应一张hash映射表,其中包括多个具有唯一性的field,一个field对应一个value。如下表1所示,该表示出了key值为“ID1”的hash的存储对象:
field | value |
f1 | a |
f2 | b |
f3 | c |
表1
首先,提取key值为“ID1”的hash结构数据中的key数据单元即“ID1”,及field数据单元即“f1”、“f2”和“f3”,并将key数据单元及field数据单元进行合并得到转换存储结构中的键“ID1f1”、“ID1f2”和“ID1f3”,由于hash结构中的field值具有唯一性,因此合并得到转换存储结构中的键也具有唯一性,hash存储结构包含value数据单元,将value数据单元“a”、“b”和“c”确定为转换存储结构中的值,根据转换存储结构Key-Value存储结构,将键及值组成的数据键值对,即键值对1:“ID1f1-a”,键值对2:“ID1f2-b”和键值对3:“ID1f3-c”存储至键值数据库中,确保了数据键值对存储的唯一性。
在另一优选实施例中,当原始存储结构为set存储结构时,键确定模块410提取基于set存储结构的待转换数据中的key数据单元及member数据单元,并将其进行合并以确定为转换存储结构中的键;值确定模块420将转换存储结构中的值设为空值;数据键值对存储模块430根据转换存储结构,将键及值组成的数据键值对存储至键值数据库中。
例如,Redis存储系统中的set数据结构具体为:key-member,其中,一个key对应一个member集合,其中包括多个具有唯一性的member值;首先,提取基于set存储结构的待转换数据中的key数据单元“ID3”及member数据单元“a”、“b”,并将其进行合并以确定为转换存储结构Key-Value中的键“ID3a”和“ID3b”,由于set数据结构的member值具有唯一性,因此,转换存储结构中的键“ID3a”及“ID3b”也具有唯一性,由于set数据结构不存在第三数据单元,因此将转换存储结构Key-Value中的值设为空值‘’,随后将数据键值对“ID3a-‘’(空值)”及“ID3b-‘’(空值)”存储至键值数据库中,确保了数据键值对存储的唯一性。
优选地(参照图4),该装置还包括数量确定模块440(图中未示出)和数量键值对存储模块450(图中未示出);数量确定模块440确定具有相同第一数据单元的待转换数据的数量;数量键值对存储模块450根据转换存储结构,将以预定的数量标识位为键、具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与待转换数据相关联地存储至所述键值数据库中。
其中,预定的数量标识位至少包括:
第一数据单元;可变量标识;
其中,数量标识位还可以包括其他相关信息。
例如,Redis存储系统中的hash数据结构的一组待转换数据,包含有两个key值“ID1”和“ID2”,key值为“ID1”的hash表中包含有1条数据:field为“f1”,value为“a”,key值为“ID2”的hash表中包含有2条数据:field为“f21”、value为“b”和field为“f22”、value为“c”;接着确定key值为“ID1”的待转换数据的数量为1,key值为“ID2”的待转换数据的数量为2,根据转换存储结构Key-Value,以预定义的数量标识位为键,如“ID1-size”和“ID2-size”,将数据键值对“ID1-size-1”通过相同的“ID1”与key值为“ID1”的hash表中的field为“f1”且value为“a”的一条待转换数据关联地存储至键值数据库中,并将数据键值对“ID2-size-2”通过相同的“ID2”与key值为“ID2”的hash表中的field为“f21”、value为“b”以及field为“f22”、value为“c”的两条数据关联地存储至键值数据库中。
例如,接上例,待转换数据的第一数据单元分别为“ID1”和“ID2”,可变量标识为“size”,则预定的数量标识位可设定为“ID1-size”和“ID2-size”。根据可变量标识“size”则可识别该键值对为数量键值对。
其中,数量键值对与各个待转换数据相关联地方式为,数量键值对的键“ID1-size”中包括元素“ID1”,对应的待转换数据的数据键值对“ID1f1-a”、“ID1f2-b”和“ID1f3-c”的各个键“ID1f1”、“ID1f2”和“ID1f3”中均包括为元素“ID1”,其通过“ID1”可建立关联关系。
优选地(参照图4),该装置还包括更新模块(图中未示出);
更新模块当对键值数据库进行添加和/或删除操作时,对与添加和/或删除的数据键值对相关联的数量键值对进行相应更新。
例如,接上例,在键值数据库中加入两条数据时,当前的数据键值对为“ID2-size-2”,如添加两条原始存储结构为hash存储结构的数据,一条数据的hash存储结构key-field-value为:“ID2-f23-d”,另一条数据的hash存储结构key-field-value为:“ID2-f24-e”;首先将该两条数据转换为Key-Value存储结构,即“ID2f23-d”和“ID2f24-d”;再将转换后的“ID2f23-d”和“ID2f24-d”存储至键值数据库中;随后将数据键值对“ID2-size-2”修改为“ID2-size-4”;接着,在键值数据库中删除一条Key-Value存储结构的数据“ID2-f23-d”时,则将数据键值对“ID2-size-4”修改为“ID2-size-3”。
在一具体应用场景中,需要存储一组set数据结构的具有相同key数据单元的待转换数据至键值数据库中,首先对该组待转换数据进行转换,分别提取多个待转换数据中的key数据单元“ID”,和member数据单元“a”、“b”、“c”,并将key数据单元及member数据单元分别进行合并以确定为转换存储结构中的键分别为“IDa”、“IDb”和“IDc”,由于set数据结构不存在第三数据单元,因此将转换存储结构中的值设为空值‘’,随后以Key-Value存储结构将数据键值对“IDa-‘’”和“IDb-‘’”和“IDc-‘’”存储至键值数据库中,同时确定数据键值对为“IDsize-3”;由于set数据结构的member数据单元具有唯一性,因此,在键值数据库中的键“IDa”、“IDb”和“IDc”也具有唯一性,当通过键值查找键值中包含有“ID”值的键时,可得到“IDa”、“IDb”和“IDc”,进一步通过拆分该组数据,可得到含有“ID”值的键具体包含的值为“a”、“b”、“c”,以此完成了在键值数据库中存储set数据结构的数据,并查找获取set数据结构中key值对应的member数据单元的数据。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-OnlyMemory,只读存储器)、RAM(RandomAccessMemory,随即存储器)、EPROM(ErasableProgrammableRead-OnlyMemory,可擦写可编程只读存储器)、EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据存储结构的转换方法,其特征在于,包括:
提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键;
基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值;
根据所述转换存储结构,将所述键及所述值组成的数据键值对存储至键值数据库中。
2.根据权利要求1所述的数据存储结构的转换方法,其中,所述值设定规则具体包括:
当所述待转换数据的原始存储结构中包括第三数据单元时,将所述第三数据单元确定为转换存储结构中的值;
当所述待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
3.根据权利要求1或2所述的数据存储结构的转换方法,其中,当所述原始存储结构为hash存储结构时,所述提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键的步骤,具体包括:
提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;
其中,所述基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值的步骤,具体包括:
提取所述待转换数据中的value数据单元,并将其确定为转换存储结构中的值。
4.根据权利要求1或2所述的数据存储结构的转换方法,其中,当所述原始存储结构为set存储结构时,所述提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键的步骤,具体包括:
提取基于set存储结构的待转换数据中的key数据单元及member数据单元,并将其进行合并以确定为转换存储结构中的键;
其中,所述基于待转换数据的原始存储结构,通过值设定规则确定转换存储结构中的值的步骤,具体包括:
将转换存储结构中的值设为空值。
5.根据权利要求1-4中任一项所述的数据存储结构的转换方法,其中,该方法还包括:
确定具有相同第一数据单元的待转换数据的数量;
根据所述转换存储结构,将以预定的数量标识位为键、所述具有相同第一数据单元的待转换数据的数量为值组成的数量键值对与所述待转换数据相关联地存储至所述键值数据库中。
6.根据权利要求5所述的数据存储结构的转换方法,其中,所述预定的数量标识位至少包括:
第一数据单元;可变量标识。
7.根据权利要求1-4中任一项所述的数据存储结构的转换方法,其中,该方法还包括:
当对所述键值数据库进行添加和/或删除操作时,对与添加和/或删除的数据键值对相关联的数量键值对进行相应更新。
8.一种数据存储结构的转换装置,其特征在于,包括:
键确定模块,用于提取基于原始存储结构的待转换数据中的第一数据单元及第二数据单元,并将所述第一数据单元及所述第二数据单元进行合并以确定为转换存储结构中的键;
值确定模块,用于基于所述待转换数据的原始存储结构,通过值设定规则确定所述转换存储结构中的值;
数据键值对存储模块,用于根据所述转换存储结构,将所述键及所述值组成的数据键值对存储至键值数据库中。
9.根据权利要求8所述的数据存储结构的转换装置,其中,所述值设定规则具体包括:
当所述待转换数据的原始存储结构中包括第三数据单元时,将所述第三数据单元确定为转换存储结构中的值;
当所述待转换数据的原始存储结构中不包括第三数据单元时,将转换存储结构中的值设为空值。
10.根据权利要求8或9所述的数据存储结构的转换装置,其中,当所述原始存储结构为hash存储结构时,所述键确定模块具体用于提取基于hash存储结构的待转换数据中的key数据单元及field数据单元,并将其进行合并以确定为转换存储结构中的键;所述值确定模块具体用于提取所述待转换数据中的value数据单元,并将其确定为转换存储结构中的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510672548.5A CN105260464B (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510672548.5A CN105260464B (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260464A true CN105260464A (zh) | 2016-01-20 |
CN105260464B CN105260464B (zh) | 2018-09-07 |
Family
ID=55100154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510672548.5A Active CN105260464B (zh) | 2015-10-16 | 2015-10-16 | 数据存储结构的转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260464B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912665A (zh) * | 2016-04-12 | 2016-08-31 | 清华大学 | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 |
CN105930354A (zh) * | 2016-04-08 | 2016-09-07 | 四川师范大学 | 存储模型转换方法和装置 |
CN105956164A (zh) * | 2016-05-19 | 2016-09-21 | 海尔优家智能科技(北京)有限公司 | 一种存储数据的方法、装置及其对应的系统 |
CN107391632A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN108874811A (zh) * | 2017-05-10 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 一种数据恢复和迁移的方法和装置 |
CN109101635A (zh) * | 2018-08-16 | 2018-12-28 | 广州小鹏汽车科技有限公司 | 一种基于Redis Hash结构的数据处理方法及装置 |
CN109885577A (zh) * | 2019-03-11 | 2019-06-14 | Oppo广东移动通信有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN102597969A (zh) * | 2009-06-25 | 2012-07-18 | 西山修平 | 带属性的键值存储的数据库管理装置及其键值存储结构的高速缓存装置 |
CN103838827A (zh) * | 2014-01-24 | 2014-06-04 | 国家电网公司 | 电网调控信息管理系统记录关联方法 |
CN104216961A (zh) * | 2014-08-21 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN104715041A (zh) * | 2015-03-24 | 2015-06-17 | 深圳市乾华数据科技有限公司 | 一种数据库恢复方法及系统 |
CN104794247A (zh) * | 2015-05-14 | 2015-07-22 | 东南大学 | 一种多结构数据库集成查询方法 |
CN104794138A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种数据库交易结果确认方法、装置及系统 |
CN104980462A (zh) * | 2014-04-04 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 分布式计算方法、装置和系统 |
-
2015
- 2015-10-16 CN CN201510672548.5A patent/CN105260464B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102597969A (zh) * | 2009-06-25 | 2012-07-18 | 西山修平 | 带属性的键值存储的数据库管理装置及其键值存储结构的高速缓存装置 |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN104794138A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种数据库交易结果确认方法、装置及系统 |
CN103838827A (zh) * | 2014-01-24 | 2014-06-04 | 国家电网公司 | 电网调控信息管理系统记录关联方法 |
CN104980462A (zh) * | 2014-04-04 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 分布式计算方法、装置和系统 |
CN104216961A (zh) * | 2014-08-21 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN104715041A (zh) * | 2015-03-24 | 2015-06-17 | 深圳市乾华数据科技有限公司 | 一种数据库恢复方法及系统 |
CN104794247A (zh) * | 2015-05-14 | 2015-07-22 | 东南大学 | 一种多结构数据库集成查询方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930354B (zh) * | 2016-04-08 | 2020-02-14 | 四川师范大学 | 存储模型转换方法和装置 |
CN105930354A (zh) * | 2016-04-08 | 2016-09-07 | 四川师范大学 | 存储模型转换方法和装置 |
CN105912665B (zh) * | 2016-04-12 | 2019-05-03 | 清华大学 | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 |
CN105912665A (zh) * | 2016-04-12 | 2016-08-31 | 清华大学 | 一种Neo4j向关系型数据库的模型转换和数据迁移方法 |
CN105956164A (zh) * | 2016-05-19 | 2016-09-21 | 海尔优家智能科技(北京)有限公司 | 一种存储数据的方法、装置及其对应的系统 |
CN108874811A (zh) * | 2017-05-10 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 一种数据恢复和迁移的方法和装置 |
CN108874811B (zh) * | 2017-05-10 | 2021-01-26 | 北京京东尚科信息技术有限公司 | 一种数据恢复和迁移的方法和装置 |
CN107391632A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN107391632B (zh) * | 2017-06-30 | 2021-02-23 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN110196844A (zh) * | 2018-04-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN110196844B (zh) * | 2018-04-16 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种数据迁移方法、系统及存储介质 |
CN109101635A (zh) * | 2018-08-16 | 2018-12-28 | 广州小鹏汽车科技有限公司 | 一种基于Redis Hash结构的数据处理方法及装置 |
CN109101635B (zh) * | 2018-08-16 | 2020-09-11 | 广州小鹏汽车科技有限公司 | 一种基于Redis Hash结构的数据处理方法及装置 |
CN109885577A (zh) * | 2019-03-11 | 2019-06-14 | Oppo广东移动通信有限公司 | 数据处理方法、装置、终端及存储介质 |
CN109885577B (zh) * | 2019-03-11 | 2021-07-13 | Oppo广东移动通信有限公司 | 数据处理方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105260464B (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260464A (zh) | 数据存储结构的转换方法及装置 | |
CN108733681B (zh) | 信息处理方法及装置 | |
CN111046034B (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
CN102426609B (zh) | 一种基于MapReduce编程架构的索引生成方法和装置 | |
CN104866497B (zh) | 分布式文件系统列式存储的元数据更新方法、装置、主机 | |
CN107807932B (zh) | 一种基于路径枚举的层级数据管理方法和系统 | |
CN106933833B (zh) | 一种基于空间索引技术的位置信息快速查询方法 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
WO2017096892A1 (zh) | 索引构建方法、查询方法及对应装置、设备、计算机存储介质 | |
CN103870492A (zh) | 一种基于键排序的数据存储方法和装置 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN103699585A (zh) | 文件的元数据存储以及文件恢复的方法、装置和系统 | |
CA2524033A1 (en) | Methods and systems for joining database tables using indexing data structures | |
KR101575246B1 (ko) | SQLite 데이터베이스 파일 내 손상된 레코드의 복원 방법 | |
CN104834650A (zh) | 一种有效查询任务生成方法及系统 | |
CN105224534A (zh) | 一种请求响应的方法及装置 | |
CN105630934A (zh) | 一种数据统计方法及系统 | |
CN105159950A (zh) | 海量数据实时排序查询方法及系统 | |
CN103136244A (zh) | 基于云计算平台的并行数据挖掘方法及系统 | |
CN103226610B (zh) | 数据库表查询方法和装置 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN102867134A (zh) | 一种对基因序列片段进行拼接的系统和方法 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN113094442B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220728 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |