CN105022791A - 一种新型的kv分布式数据存储方法 - Google Patents

一种新型的kv分布式数据存储方法 Download PDF

Info

Publication number
CN105022791A
CN105022791A CN201510350634.4A CN201510350634A CN105022791A CN 105022791 A CN105022791 A CN 105022791A CN 201510350634 A CN201510350634 A CN 201510350634A CN 105022791 A CN105022791 A CN 105022791A
Authority
CN
China
Prior art keywords
data
key
field
qualitative
storage
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
Application number
CN201510350634.4A
Other languages
English (en)
Inventor
邓晓燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201510350634.4A priority Critical patent/CN105022791A/zh
Publication of CN105022791A publication Critical patent/CN105022791A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种新型的KV分布式数据存储方法
技术领域
本发明涉及一种分布式的存储系统,特别涉及一种新型的KV分布式数据存储方法。
背景技术
关系型数据库是支持关系模型的数据库,是目前使用最广泛的数据库系统,其中结构化查询语言SQL是最重要的关系数据库操作语言,SQL语言简洁、简单好学,有强大的数据分析能力(分组、联表、嵌套查询等),大部分数据都可以很方便地写入关系型数据库中,也可以用SQL强大的表达能力进行多方面数据处理与分析,从而大大简化系统的复杂度和开发部署难度,因此也使其应用相当广泛。对于数据量不大,例如千万级的统计系统,SQL是相对比较好的解决方案。但对于海量的存储系统,SQL单机运行的特性将成为整个系统的瓶颈,主要表现在容量和速度两个方面。若继续使用关系型数据库,其付出的硬件和运行维护的成本要远远高出其带来的便利性。
键-值(Key-Value)存储型数据库是非关系数据库中应用较广的一种。典型的KV存储系统可以说与关系型数据库完全相反,不支持复杂表结构,不支持复杂查询,但易扩展、查询速度快、支持大数据量高速写入查询等特点,这也是在海量信息时代KV系统越来越多的被使用的原因。但是典型KV系统更多的侧重在Key与Value的存储,而有时候我们也还需要关注Key本身的一些信息,例如要按“学院+年级+课程”统计学生及格率,如何罗列这些所有的组合呢?如果是用SQL系统,那么用GROUP BY语句就能完成要求。而在KV的情况下,显然“学院+年级+课程”的每一个组合都对应一个Key,通过枚举所有的组合并不是一个可行的方案,因为“学院+年级+课程”都是在不断变化的,所以就需要有一套数据结构,专门来维持类似SQL中的这些关系信息。关系数据库之所以强大就在于提供了在指定关系上处理数据的能力,而典型KV系统却完全丢弃了关系信息,使得其应用场景远低于关系型数据库。
发明内容
为了克服现有技术存在的缺点与不足,本发明提供一种新型的KV分布式数据存储方法。
本发明采用如下技术方案:
一种新型的KV分布式数据存储方法,包括如下步骤:
S1分布化存储,具体为:将每一行数据分为定性字段及定量字段,然后对数据表按照定性字段及定量字段进行拆分,由定性字段构成的表称为键表即KT,定量字段构成的表称为值表即VT,并在两个表之间引入中间Key,所述中间Key是通过唯一序列发生器得到,例如递增序列,将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、COUNT等)则基本都在定量字段上进行。如果将定性字段称之为键,定量字段称之为值,那么传统的关系型数据也可以看成是一种形式的KV数据。
S1分布化存储,具体为:在实际应用中,定性字段和定量字段的数据量差别是非常大的。例如一个博客系统,定性字段为栏目加作者,定量字段为博主发表的每一篇文章,后者的数据量比前者高了两个数量级,而如果用关系型数据库来存储这些数据的话,实际上定性字段会有非常多冗余。在S-KV系统中,我们对典型的数据表做了拆分,定性字段和定量字段分为两张表,并引入一个中间Key,如图1所示,将定性字段构成的表称为键表(下称KT),右边由定量字段构成的表称为值表(下称VT),则原表可看作是KT和VT根据中间key联表所得。因为关系操作都在KT,而KT的数据量小,因此KT和中间key类似一个关系型数据库,;而VT的结构类似于一个典型的KV系统,可以将KT、中间key保存在关系型数据库中,VT保存在KV存储系统中,进而完成了整个系统的分布化存储。
分布化存储后往往存在多张数据表的,通过拆分后得到多个值表和键表,一方面多个不同的KT和VT会使系统的维护成本增大,另一方面一些KV型的存储系统不支持复杂结构的数据,进而导致VT难以处理。因此必须将KT和VT的结构进行简化和统一,包括同构VT及同构KT,具体为:
同构VT:对于一张关系型数据库中的数据表,若将每列的列名定义:定性字段为Fi,定量字段为Gj,则该数据表可以表述为如表1所示,其中所有的Fi列构成了KT,所有的Gj列构成了VT。通常构成VT的列之间是相互独立的,于是对于表1中的每一列Gj可以将Gj本身作为一个定性的值加入到KT表里,因此表1可以变换为表2所示。
表1
表2
将表2按照S1所述的规则拆分成两张表,则VT的结构如表3所示。所有的关系型数据库表都可按表2和表3的方式变换和拆分,而拆分后的VT表都如表3所示是同构的,因此可以将所有VT表合并,并存储在一个典型的KV存储系统里面,记为RVT。
表3
对于表3中的KT中,每一行数据构成了一个集合,rowi={Ki1,Ki2…Kin,Gj},整个KT则是{rowi}(1≤i≤n),虽然rowi中的各个元素之间的顺序是可以任意的,但通常查询操作都是按照一定的主键顺序进行的,例如学生信息查询是按照(学校—>学院—>专业)这样的顺序,很少采用(学院—>专业—>学校)这样的顺序。因此可以进行如下的简化和假设,即rowi的元素的是有序的,顺序为(Ki1->Ki2->...Kin->Gj),那么键表KT可以等价于一个树形结构,如图3,树形结构每个节点可以用二元的关系表表示[7-9],某一节点Nij=(Kij,Pij),Kij表示自己,Pij表示父节点。特别地,对于第n层,Nin=(Kin,Pin)是叶子节点,没有子层次,则对应一个Keyij。于是KT等价于Nij的集合,即KT={Nij},对于这样一个集合,其每一个元素都是同构的,可以记录在一个同构的表里,记为RKT,如表4所示。用RKT和RVT替换KT和VT,这时整个S-KV系统的数据结构已经得到了简化和统一,可维护维护性得到极大地提高。
表4
Ki1 null null
Ki2 Ki1 null
…… …… null
Kin Ki(n-1) null
Gj Kin Keyij
S2维持复杂查询能力,对数据的查询操作具体如下:
S2.1查询键表
首先进行键表的查询,得到包含定性字段的关系表及中间key列表;
S2.2查询值表
如图2所示,一般来说,查询VT是整个查询流程中最耗时的一个步骤,因为VT的数据量很大。但是VT实际上是一个KV型的存储系统,而KV存储一般是分布式的,且Key和存储节点是有固定映射关系。因此在查询VT时根据映射关系将Key按存储节点并行下发到各个数据存储节点上进行查询。假设有N个数据存储节点,则经过并行下发优化后的查询时间将缩短为原来的1/N。
S2.3根据中间Key列表对关系表和数据集进行联合,得到合并表;
S2.4在合并表上做分组及汇总操作
在分组下发查询的同时也可以同时进行下发汇总,通常的SUM、COUNT等汇总都可以下发,假设不下发汇总得到数据集记录条数为N,下发汇总后的记录条数为M,可以看出N>=M,那么通过下发汇总可以使第S2.3合并操作的数据集的大小下降为原来的M/N,S2.4分组和汇总操作的数据集的大小也下降为原来的M/N。若M越小,则提高速度的效果越明显。
一种新型的KV分布式存储(S-KV系统)的方法,S-KV存储系统是关系型数据库和KV型存储的综合,对复杂查询、海量查询、容灾都能提供比较好的支持。特别地,当KT为空时,S-KV存储系统就退化为普通的KV型存储系统,而当VT为空时,S-KV存储系统就退化为普通的关系型存储系统。对于S-KV系统的两种衍生结构,各有其优缺点,可以根据具体的情况采用最适合的结构。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (4)

1.一种新型的KV分布式数据存储方法,其特征在于,包括如下步骤:
S1分布化存储,具体为:将每一行数据分为定性字段及定量字段,然后对数据表按照定性字段及定量字段进行拆分,由定性字段构成的表称为键表即KT,定量字段构成的表称为值表即VT,并在两个表之间引入中间Key,将KT、中间key保存在关系型数据表中,VT保存在KV存储系统中,进而完成了整个系统的分布化存储;
S2对分布化存储的数据进行查询操作,包括如下步骤:
S2.1查询键表,得到定性字段的关系表及中间key列表;
S2.2查询值表,具体为,在KV存储系统中,Key和存储节点是固定映射关系,根据该映射关系将中间key列表按照存储节点并行下发到各个数据存储节点进行查询,得到数据集;
S2.3根据中间Key列表对关系表和数据集进行联合,得到合并表;
S2.4在合并表上做分组及汇总操作。
2.根据权利要求1所述的存储方法,其特征在于,S1中还包括KT同构及VT同构化处理过程。
3.根据权利要求1所述的存储方法,其特征在于,所述S2.4具体为:
分组下发查询与汇总同时下发,不下发汇总得到数据集记录条数为N,下发汇总后的记录条数为M,则N>=M,下发汇总后,数据集操作条数降为原来条数的M/N,所述M、N均为正整数。
4.根据权利要求1所述的存储方法,其特征在于,所述中间key是通过唯一序列发生器得到。
CN201510350634.4A 2015-06-19 2015-06-19 一种新型的kv分布式数据存储方法 Pending CN105022791A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510350634.4A CN105022791A (zh) 2015-06-19 2015-06-19 一种新型的kv分布式数据存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510350634.4A CN105022791A (zh) 2015-06-19 2015-06-19 一种新型的kv分布式数据存储方法

Publications (1)

Publication Number Publication Date
CN105022791A true CN105022791A (zh) 2015-11-04

Family

ID=54412761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510350634.4A Pending CN105022791A (zh) 2015-06-19 2015-06-19 一种新型的kv分布式数据存储方法

Country Status (1)

Country Link
CN (1) CN105022791A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975345A (zh) * 2016-05-20 2016-09-28 江苏得得空间信息科技有限公司 一种基于分布式内存的视频帧数据动态均衡存储管理方法
CN108694219A (zh) * 2017-04-12 2018-10-23 腾讯科技(深圳)有限公司 一种数据处理方法及装置
CN109032766A (zh) * 2018-06-14 2018-12-18 阿里巴巴集团控股有限公司 一种事务处理方法、装置及电子设备
CN110324371A (zh) * 2018-03-29 2019-10-11 北京忆芯科技有限公司 基于区块的分布式kv存储系统
CN112579592A (zh) * 2019-09-30 2021-03-30 北京国双科技有限公司 同构数据存储方法及装置
CN116483886A (zh) * 2023-04-10 2023-07-25 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542893B1 (en) * 2000-02-29 2003-04-01 Unisys Corporation Database sizer for preemptive multitasking operating system
CN101183368A (zh) * 2007-12-06 2008-05-21 华南理工大学 联机分析处理中分布式计算及查询海量数据的方法和系统
CN102193917A (zh) * 2010-03-01 2011-09-21 中国移动通信集团公司 一种数据处理和查询方法和装置
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542893B1 (en) * 2000-02-29 2003-04-01 Unisys Corporation Database sizer for preemptive multitasking operating system
CN101183368A (zh) * 2007-12-06 2008-05-21 华南理工大学 联机分析处理中分布式计算及查询海量数据的方法和系统
CN102193917A (zh) * 2010-03-01 2011-09-21 中国移动通信集团公司 一种数据处理和查询方法和装置
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975345A (zh) * 2016-05-20 2016-09-28 江苏得得空间信息科技有限公司 一种基于分布式内存的视频帧数据动态均衡存储管理方法
CN105975345B (zh) * 2016-05-20 2019-03-15 江苏得得空间信息科技有限公司 一种基于分布式内存的视频帧数据动态均衡存储管理方法
CN108694219A (zh) * 2017-04-12 2018-10-23 腾讯科技(深圳)有限公司 一种数据处理方法及装置
CN110324371A (zh) * 2018-03-29 2019-10-11 北京忆芯科技有限公司 基于区块的分布式kv存储系统
CN110324371B (zh) * 2018-03-29 2021-03-12 北京忆芯科技有限公司 基于区块的分布式kv存储系统
CN109032766A (zh) * 2018-06-14 2018-12-18 阿里巴巴集团控股有限公司 一种事务处理方法、装置及电子设备
CN112579592A (zh) * 2019-09-30 2021-03-30 北京国双科技有限公司 同构数据存储方法及装置
CN116483886A (zh) * 2023-04-10 2023-07-25 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法
CN116483886B (zh) * 2023-04-10 2024-04-02 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法

Similar Documents

Publication Publication Date Title
CN105022791A (zh) 一种新型的kv分布式数据存储方法
CN102737033B (zh) 数据处理设备及其数据处理方法
CN102033938B (zh) 基于二级映射的集群动态扩展方法
CN103491187A (zh) 一种基于云计算的大数据统一分析处理方法
CN103020301B (zh) 一种多维度数据查询和存储方法及系统
US20150205885A1 (en) CREATING NoSQL DATABASE INDEX FOR SEMI-STRUCTURED DATA
US9946752B2 (en) Low-latency query processor
CN103268336A (zh) 一种快数据和大数据结合的数据处理方法及其系统
CN104391948A (zh) 数据仓库的数据标准化构建方法及系统
CN103412897A (zh) 一种基于分布式结构的并行数据处理方法
CN104102710A (zh) 一种海量数据查询方法
CN109710618A (zh) 知识图谱数据关系分离的混合存储方法及系统
CN103823846A (zh) 一种基于图论的大数据存储及查询方法
CN105164673A (zh) 跨数据库和文件系统的查询一体化
CN107330098B (zh) 一种自定义报表的查询方法、计算节点及查询系统
CN104216961A (zh) 一种数据处理方法和装置
CN104081397A (zh) 创建归档模型
CN104699857A (zh) 基于知识工程的大数据存储方法
CN104239470A (zh) 一种面向分布式环境的空间数据复合处理系统和方法
CN104268158A (zh) 一种结构化数据分布式索引及检索方法
CN105550351B (zh) 旅客行程数据即席查询系统及方法
CN105159925A (zh) 一种数据库集群数据分配方法及系统
CN104699815A (zh) 数据处理方法和系统
CN104462095A (zh) 一种查询语句公共部分的提取方法及装置
CN101840427A (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20151104

WD01 Invention patent application deemed withdrawn after publication