CN105022791A - 一种新型的kv分布式数据存储方法 - Google Patents
一种新型的kv分布式数据存储方法 Download PDFInfo
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/28—Databases 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分布式数据存储方法。
背景技术
关系型数据库是支持关系模型的数据库,是目前使用最广泛的数据库系统,其中结构化查询语言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是通过唯一序列发生器得到。
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)
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)
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 | 深圳市同洲视讯传媒有限公司 | 一种分布式处理数据的系统及方法 |
-
2015
- 2015-06-19 CN CN201510350634.4A patent/CN105022791A/zh active Pending
Patent Citations (4)
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)
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 |