一种新型的KV分布式数据存储方法技术

技术编号:12277362 阅读:50 留言:0更新日期:2015-11-05 03:21
本发明专利技术公开了一种新型的KV分布式数据存储方法,包括如下步骤:S1分布化存储,将每一行数据分为定性字段及定量字段,分别把定性字段构成的表称为键表,把定量字段构成的表称为值表,并在两个表之间引入中间Key,S2对分布化存储的数据进行查询操作,本发明专利技术通过结合SQL与KV的优点,解决在实际应用中,当数据的结构和规模复杂而又庞大时,单一使用SQL存储和KV存储都不能满足实际需要的问题。

【技术实现步骤摘要】

本专利技术涉及一种分布式的存储系统,特别涉及一种新型的KV分布式数据存储方 法。
技术介绍
关系型数据库是支持关系模型的数据库,是目前使用最广泛的数据库系统,其中 结构化查询语言SQL是最重要的关系数据库操作语言,SQL语言简洁、简单好学,有强大的 数据分析能力(分组、联表、嵌套查询等),大部分数据都可以很方便地写入关系型数据库 中,也可以用SQL强大的表达能力进行多方面数据处理与分析,从而大大简化系统的复杂 度和开发部署难度,因此也使其应用相当广泛。对于数据量不大,例如千万级的统计系统, SQL是相对比较好的解决方案。但对于海量的存储系统,SQL单机运行的特性将成为整个系 统的瓶颈,主要表现在容量和速度两个方面。若继续使用关系型数据库,其付出的硬件和运 行维护的成本要远远高出其带来的便利性。 键-值(Key-Value)存储型数据库是非关系数据库中应用较广的一种。典型的 KV存储系统可以说与关系型数据库完全相反,不支持复杂表结构,不支持复杂查询,但易扩 展、查询速度快、支持大数据量高速写入查询等特点,这也是在海量信息时代KV系统越来 越多的被使用的原因。但是典型KV系统更多的侧重在Key与Value的存储,而有时候我们 也还需要关注Key本身的一些信息,例如要按"学院+年级+课程"统计学生及格率,如何 罗列这些所有的组合呢?如果是用SQL系统,那么用GROUPBY语句就能完成要求。而在KV 的情况下,显然"学院+年级+课程"的每一个组合都对应一个Key,通过枚举所有的组合并 不是一个可行的方案,因为"学院+年级+课程"都是在不断变化的,所以就需要有一套数 据结构,专门来维持类似SQL中的这些关系信息。关系数据库之所以强大就在于提供了在 指定关系上处理数据的能力,而典型KV系统却完全丢弃了关系信息,使得其应用场景远低 于关系型数据库。
技术实现思路
为了克服现有技术存在的缺点与不足,本专利技术提供一种新型的KV分布式数据存 储方法。 本专利技术采用如下技术方案: -种新型的KV分布式数据存储方法,包括如下步骤: S1分布化存储,具体为:将每一行数据分为定性字段及定量字段,然后对数据表 按照定性字段及定量字段进行拆分,由定性字段构成的表称为键表即KT,定量字段构成的 表称为值表即VT,并在两个表之间引入中间Key,所述中间Key是通过唯一序列发生器得 至IJ,例如递增序列,将KT、中间key保存在关系型数据表中,VT保存在KV存储系统中,进而 完成了整个系统的分布化存储; S2对分布化存储的数据进行查询操作,包括如下步骤: S2. 1查询键表,得到定性字段的关系表及中间key列表; S2. 2查询值表,具体为,在KV存储系统中,Key和存储节点是固定映射关系,根据 该映射关系将中间key列表按照存储节点并行下发到各个数据存储节点进行查询,得到数 据集; S2. 3根据中间Key列表对关系表和数据集进行联合,得到合并表; S2. 4在合并表上做分组及汇总操作。 所述S1中还包括KT同构及VT同构化处理过程。 所述S2.4具体为: 分组下发查询与汇总同时下发,不下发汇总得到数据集记录条数为N,下发汇总后 的记录条数为M,则N> =M,下发汇总后,数据集操作条数降为原来条数的M/N,所述M、N均 为正整数。 所述中间key是通过唯一序列发生器得到。 本专利技术的有益效果: (1)本专利技术充分结合了SQL数据库系统和KV存储系统的优点,支持复杂的数据结 构和复杂查询,普通KV型存储只支持少量的数据结构,和类似GET/SET这样的简单查询,但 本专利技术可以支持任意的复杂数据结构和类似SQL的复杂查询方式; (2)支持横向扩展和海量数据存储,通常SQL数据库系统一般是运行在单一机器 上的,当数据量增大的时候就会遇到空间和性能的瓶颈,本专利技术可以在横向上像普通KV存 储系统那样任意的扩展机器,理论上不会遇到空间和性能的瓶颈; (3)高速的查询性能,本专利技术可以在查询阶段利用并行计算,在各个存储节点上并 行执行查询,因而大大加快了数据的查询速度。【附图说明】 图1是本专利技术数据表拆分图; 图2是本专利技术的S-KV系统结构图; 图3是本专利技术的KT树形结构图。【具体实施方式】 下面结合实施例及附图,对本专利技术作进一步地详细说明,但本专利技术的实施方式不 限于此。 实施例 -种新型的KV分布式数据存储方法,包括如下步骤: 对于关系数据库中的某一行数据来说,数据字段可能会很多,但基本上可以分成 两类,即定性字段和定量字段。数据库名和表名是一张表所有行共有的属性,则实际上是两 个隐含的定性字段,定性字段表示了该行是什么,而定量字段则表示有多少。对于SQL查询 来说,关系操作(分组、联合等)基本上都是针对定性字段,汇总操作(SUM、C0UNT等)则基 本都在定量字段上进行。如果将定性字段称之为键,定量字段称之为值,那么传统的关系型 数据也可以看成是一种形式的KV数据。 S1分布化存储,具体为:在实际应用中,定性字段和定量字段的数据量差别是非 常大的。例如一个博客系统,定性字段为栏目加作者,定量字段为博主发表的每一篇文章, 后者的数据量比前者高了两个数量级,而如果用关系型数据库来存储这些数据的话,实际 上定性字段会有非常多冗余。在S-KV系统中,我们对典型的数据表做了拆分,定性字段和 定量字段分为两张表,并引入一个中间Key,如图1所示,将定性字段构成的表称为键表(下 称KT),右边由定量字段构成的表称为值表(下称VT),则原表可看作是KT和VT根据中间 key联表所得。因为关系操作都在KT,而KT的数据量小,因此KT和中间key类似一个关系 型数据库,;而VT的结构类似于一个典型的KV系统,可以将KT、中间key保存在关系型数 据库中,VT保存在KV存储系统中,进而完成了整个系统的分布化存储。 分布化存储后往往存在多张数据表的,当前第1页1 2 本文档来自技高网
...

【技术保护点】
一种新型的KV分布式数据存储方法,其特征在于,包括如下步骤:S1分布化存储,具体为:将每一行数据分为定性字段及定量字段,然后对数据表按照定性字段及定量字段进行拆分,由定性字段构成的表称为键表即KT,定量字段构成的表称为值表即VT,并在两个表之间引入中间Key,将KT、中间key保存在关系型数据表中,VT保存在KV存储系统中,进而完成了整个系统的分布化存储;S2对分布化存储的数据进行查询操作,包括如下步骤:S2.1查询键表,得到定性字段的关系表及中间key列表;S2.2查询值表,具体为,在KV存储系统中,Key和存储节点是固定映射关系,根据该映射关系将中间key列表按照存储节点并行下发到各个数据存储节点进行查询,得到数据集;S2.3根据中间Key列表对关系表和数据集进行联合,得到合并表;S2.4在合并表上做分组及汇总操作。

【技术特征摘要】

【专利技术属性】
技术研发人员:邓晓燕
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1