CN105912666B - 一种面向云平台的混合结构数据高性能存储、查询方法 - Google Patents

一种面向云平台的混合结构数据高性能存储、查询方法 Download PDF

Info

Publication number
CN105912666B
CN105912666B CN201610224238.1A CN201610224238A CN105912666B CN 105912666 B CN105912666 B CN 105912666B CN 201610224238 A CN201610224238 A CN 201610224238A CN 105912666 B CN105912666 B CN 105912666B
Authority
CN
China
Prior art keywords
data
attribute
page
current
value
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.)
Active
Application number
CN201610224238.1A
Other languages
English (en)
Other versions
CN105912666A (zh
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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201610224238.1A priority Critical patent/CN105912666B/zh
Publication of CN105912666A publication Critical patent/CN105912666A/zh
Application granted granted Critical
Publication of CN105912666B publication Critical patent/CN105912666B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • G06F16/284Relational databases

Abstract

本发明公开了一种面向云平台的混合结构数据高性能存储、查询方法。本方法为:1)将云平台的数据集根据时间分段划分为一系列的存储页;然后分别将每一存储页存储到云平台中的一存储节点;2)云平台对当前收到的增量数据封装后发送给对应的存储节点,该存储节点根据该增量数据的时间戳确定是否需要建立新的存储页,如果需要,则根据当前时间戳创建新的存储页并建立页索引和属性索引存储结构;否则根据采样时间确定所属的时间分段位置,从该存储节点的数据集中获取对应的存储页;3)该存储节点将该封装数据存储到该存储页中并更新页索引;并且根据该数据属性集从该增量数据中提取对应属性值,然后根据属性值的规约区间更新属性索引存储结构。

Description

一种面向云平台的混合结构数据高性能存储、查询方法
技术领域
本发明涉及一种面向云平台的混合结构数据高性能存储、查询方法,属于计算机技术领域。
背景技术
近年来,随着移动互联网、云计算等技术的发展与应用,软件形态发生巨大变化,云化服务越来越成为新的软件模式。在这一模式下,云端应用依托云平台提供服务能力,用户利用网络访问平台中的服务资源,实现信息的交换与数据的处理。同时,在提供常规服务的过程中,从服务智能化的角度出发,云化服务结合大数据等手段,对用户的各种操作行为、监控数据、访问痕迹,系统日志等数据进行收集与综合处理,在这一基础上结合迭代性数据挖掘等手段对用户或对象的行为与状态进行预测与判断,从而实现更深层次的资源智能服务能力。这一新型的软件服务能力模式在智慧城市、电子商务、基于物联网的智能在线监控系统等领域具有广泛的应用。
在多数情况系,云平台需要通过多种来源收集用户\对象的行为与操作数据。这些数据汇聚在统一的存储与管理框架中,经过综合处理后,形成满足特定目的的模式与知识增量。因此,对海量、多源的行为与操作数据进行高性能存储与组织就成为云平台必不可少的组成部分。相对传统软件宿存的计算与存储环境,云平台中的行为与操作数据具有以下的基本特点:
1、数据来源复杂:通常情况下,云平台是一个开放性的架构。在平台中部署有多个应用服务系统。这些应用服务系统围绕用户\对象的特定服务需求形成完整的生态环境。因此,云端针对用户\对象的行为与操作数据处理需要从多个应用服务系统中获取;
2、数据规模巨大:云平台的核心目的之一是通过网络为更大规模的用户\对象提供在线资源服务能力。因此,相对传统的软件系统,在日常访问过程中,云端不同应用服务系统产生更大规模的数据量,通常情况下,日增量在千万条以上;
3、数据具有结构多样性与非一致性性:由于云端用户\对象的行为与操作数据来自多个应用服务系统,这些系统在构建过程中缺乏统一的数据规格,这就导致不同来源的数据在结构上存在多样性与异构性。同时,由于软件形态发生变化,云化模式进一步提高了软件版本演化与功能迭代的速度,这就导致同一应用服务系统在不同的阶段的数据在结构上也存在非一致性。
从对上层智能处理与分析支撑角度出发,云平台需要实现多源、异构以及海量数据的统一存储与组织。关系数据库(RDB)在数据存储与组织方面有广泛的应用。其以关系代数为基础,通过结构化库表实现数据的存储、管理与检索。由于其实现机制的特点,在关系数据库中以表的数据项定义实现数据结构化,在数据增量过程中通过B-Tree等方式针对特定的数据项建立索引。在数据查询过程中以关系代数为基础,通过数据表的裁剪、过滤等操作实现结果的提取。然而在云化模式下,上述的数据特点为云端通过关系数据库实现统一的数据存储与组织带来困难。由于数据资具有结构多样性与非一致性,平台无法建立统一的数据模型来准确描述多源数据的结构语义。同时,大规模数据增量也导致高性能检索的困难。
另一方面,关系数据库在应对大规模异构数据时的局限性推动了大数据技术的发展。作为大数据的支撑技术之一键值数据库(Key-Value)逐渐成为海量数据存储与组织的主要手段。这一数据库技术通过哈希等手段在数据的主键(key)与取值(value)之间建立映射关系。通过这一映射关系可以在查询过程中,通过主键快速定位对应数据取值的存储位置。同时,结合分布式存储架构可以有效第满足海量、非结构化数据存储与组织的要求。然而,键值数据库技术所能支撑的数据模型较为简单,同时,也无法建立有效的索引机制。因此,这一数据库技术无法满足复杂数据统计、分析活动中多值查询的需求,也无法解决软件版本演进与功能迭代场景下数据结构语义的变化情况。在本质上,数据存储过程中,无法针对属性建立可以快速检索的存储组织机制。在多数情况下只能依赖硬件资源的规模换取性能的保障,无形中造成存储系统较大的IT投资与运维规模。
如上所述,现有数据库技术的局限性影响了云端数据统一存储与组织的实现。针对这一问题本发明提出一种面向混合结构的高性能数据存储与组织技术。这一技术底层在时序与增量的基础上,以非结构化的方式实现多源、异构数据的统一分页存储。在这一基础上利用多值属性模型建立数据的值约束映射关系向量。在查询过程中。利用向量之间的快速交叉过滤实现海量数据的多值高性能查询保障。通过本发明所提出的技术可以有效满足云平台综合业务数据统一存储与组织的要求。
发明内容
本发明的目的之一在于克服现有技术中存在的问题,提供一种面向云平台的混合结构数据高性能存储、查询方法。
针对前述云平台多源、海量、结构非确定性数据统一存储与组织的要求,本发明提出一种面向云平台的混合结构数据高性能存储、查询方法。本发明在底层将多源数据以非结构化的方式,序列存储。同时,根据云平台数据增量的特点,以时序关系形成数据分页,降低单集数据的存储规模。在这一基础上,通过数据属性描述,实现数据业务相关结构定义。这一结构定义包括一组属性名称,在数据增量过程中,根据该结构定义中的属性名称,从数据中提取对应的取值,并将其映射在取值区间对应的归约索引向量中,即利用这一结构定义实现数据在属性维度的取值规约映射。由此,形成多值属性向量空间。这一空间一方面可以通过过滤实现快速检索,另一方面可以为海量数据的快速统计提供基础,满足云端上层数据处理与分析活动的要求。
本发明的技术方案为:
一种面向云平台的混合结构数据高性能存储方法,其步骤为:
1)将云平台的数据集dataStore根据时间分段划分为一系列的存储页dataPage;然后分别将每一存储页dataPage存储到云平台中的一存储节点;
2)云平台对当前收到的增量数据data,将其封装为D={data,propertySet,timeStamp},data={content,time};其中,增量数据data包括数据内容content以及采样时间time;timestamp为收到该增量数据的时间戳;propertySet为数据属性集,定义在数据内容content中获取对应属性的映射位置;
3)云平台根据增量数据的时间戳将该封装数据D发送给对应的存储节点,该存储节点根据该增量数据的时间戳确定是否需要建立新的存储页,如果需要,则根据当前时间戳创建新的存储页,并为该新存储页建立页索引和属性索引存储结构;如果不需要,则该存储节点根据该增量数据data的采样时间确定该增量数据data所属的时间分段位置,并根据该时间分段位置从该存储节点的数据集dataStore中获取对应的存储页;
4)该存储节点将该封装数据D存储到该存储页中并更新页索引;并且根据该数据属性集从该增量数据中提取对应属性的属性值,然后根据属性值的规约区间更新属性索引存储结构。
进一步的,所述数据属性集propertySet={(tagName,path)i|i=1,2,...n};其中tagName为属性名称,path为该属性在数据content中映射的路径位置,n为属性总数。
进一步的,将所述数据集dataStore划分为一系列的存储页dataPage的方法为:
dataStore={dataPagei|i=1,2,...n}
dataPage={timeSpanKey,{Dj|j=1,2,...n},mapIdx}
其中,timeSpanKey为时间分段标识,Dj为存储的第j个封装数据D;mapIdx为封装数据
的存储位置映射关系集合,即页索引。
进一步的,所述属性索引存储结构为二级索引comindex,每一存储页对应一二级索引comindex;其中,comIndex={pTagMapi|i=1,2,..n},pTagMapi为属性i的属性值域分布映射向量集合;pTagMapi={tagName,{valueArrayj|j=1,2,,n}},tagName为属性i的标识,valueArray为该属性i的属性值域区间的存储索引映射集合;valueArray={rangTag,{mapIndexk|k=1,2,...p}},rangeTag为属性值域区间的映射标,mapIndex为属性值域区间数据在页存储中的映射位置。
进一步的,更新属性索引存储结构的方法为:首先根据数据源的属性集合从增量数据中获取对应属性的属性取值;对于获取到的属性i的属性值,在属性索引存储结构中获取与当前属性i对应的取值索引向量空间;然后在当前取值索引向量空间中创建当前属性i的取值向量空间;然后在当前属性i对应的向量空间中获取覆盖当前取值的值域分区;如果未获取,则在当前属性向量空间中增加当前属性取值对应的值域分区,如果获取到值域分区,则在该值域分区中增加当前数据的页索引。
一种存储数据的查询方法,其步骤为:
1)根据查询请求提交的查询条件,将多值查询任务分解为多个单值查询任务并根据查询条件中的操作符建立该查询条件的二叉任务树;
2)遍历该二叉任务树,将操作符对应的中间节点连接的两个单值查询做交叉过滤,形成局部查询选集;
3)根据执行每一局部查询选集中的查询任务得到的查询结果,构建一查询结果选集;
4)从该查询结果选集的查询结果中提取属性取值向量中的页索引值,并通过该页索引值从存储页中提取数据,最终形成结果数据集。
进一步的,建立该二叉任务树的方法为:对于查询条件query;令i=1,检查当前i是否溢出了查询条件query中的条件属性与取值约束的关系的个数边界n-1,如果是则完成二叉任务树的构造;否则从查询条件query中提取当前第i个操作符号op以及该操作符op的左右两个连接条件;然后令该操作符op为二叉任务树的根root;如果该操作符op的左连接为已有二叉树,则将该二叉树作为当前所建二叉任务树的左子树与根root连接;将右连接作为当前所建二叉任务树的右叶节点;然后令i=i+1,直至完成二叉任务树的构造。
进一步的,建立该二叉任务树的方法为:首先扫描当前查询条件,对于其中的每一嵌套条件;然后将该嵌套条件作为一个子树独立构造;获取该嵌套条件的左操作符op,如果存在左操作符op,则将该子树作为二叉任务树的右子树连接;否则,获取该嵌套条件的右连接符,如果存在右连接符,则将当前子树作为二叉任务树的左子树连接。
和现有的Mysql、Hbase等相比,本发明的具有如下优势:
本发明能够支持500个以上存储节点的统一存储管理。写入效率相对传统的数据库系统提高12%,查询效率提高30%。
附图说明
图1为存储架构示意图;
图2为存储执行流程图;
图3为属性索引示意图;
图4为索引更新执行流程图;
图5为任务树构造执行流程图;
图6为任务树结构示意图;
图7为条件嵌套查询任务树构造执行流程图;
图8为查询任务树结构图;
图9为查任务分解执行流程;
图10为查询任务执行流程。
具体实施方式
下面通过具体实施例结合附图对本发明作更详细的说明。
针对云端多源、海量、结构非确定性数据统一管理与组织的需求,本发明提出一种高性能数据存储方法。这一技术在底层对数据进行非结构化的统一存储。同时在增量过程中,根据时序关系进行分页处理。在这一基础上,利用多属性定义的方式实现数据取值的规约映射。在这一基础上满足云平台对数据存储与检索的要求。其整体的存储架构如图1
具体实施内容如下:
1、海量数据非结构化混合存储与组织
在数据增量过程中,将数据记录以非结构化的方式实现分页存储。以及数据增量的特点,根据时序分段建立分页原则,降低数据集的规模。提高数据读写的效率。这一存储管理架构以分页的方式实现数据的混合存储管理。针对接入数据有如下定义:
D={data,propertySet,timeStamp},data={content,time}
将接入数据封装为统一的数据对象D,其由一个三元组构成:
data为原始数据,其结构定义分为两个部分:数据内容content以及采样时间time构成。针对数据具体的内容不做结构化定义;
propertySet为数据属性集定义。其由一组数据属性构成,定义在数据的content中获取对应属性的映射位置:
propertySet={(tagName,path)i|i=1,2,...n};其中tagName为属性的名称,path为该属性在数据content中映射的路径位置;
timestamp为系统接收到该数据的时间戳;
在整个存储环境中,云平台将数据集dataStore依据切分原则构成一系列的分页dataPage,然后分别将每一个分页存储在云平台一特定的存储节点,分页dataPage的定义如下:
其中:
timeSpanKey为时间分段标识,其依据时段切分(例如:一天),为该时间段映射为文本的取值;
Dj为存储的封装数据对象;
mapIdx为数据对象的存储位置映射关系集合;其映射数据记录的字节流起始位置;mapIdx={(idx,len)k|k=1,2,..n}。idx为当前数据记录的字节流起始位置,len为当前数据记录的长度。
数据插入过程如下:
i)接收数据data,将其封装为D:D=pack(data)
ii)依据数据采样时间(该数据的采样时间,即传感器的时间戳)确定其所属的时间分段位置,并根据时间分段位置从存储系统获取对应的存储页:
getPage(D)=dataPage,time∈data,timeSpanKey∈dataStore
iii)在所获取的存储页中存储数据D,在存储过程中,根据数据的采样时间time进行序列组织。
storeD(D,dataSotre)=D→dataSotre,
Di=D,time@data@Di-1<time@data@Di<time@data@Di+1
在上述过程中结合二分法等算法实现数据D在页中的快速排序;
iv)针对页的数据增量更新映射索引
idx(position(D,dataPage),len(D))→mapIdx,mapIdx∈dataPage
在页映射索引更新过程中记录增量数据D的起始位置以及标识信息idx。通过该信息,建立页存储的位置映射;
图2中展示了这一存储与组织的流程
如图2所示,其流程如下:
1、系统接收到增量数据
2、根据增量数据内的时间戳选择映射的存储节点;每一个存储节点存储特定一时间段内的数据,例如:节点A存储2016-01-01的数据;节点B存储2016-01-02的数据;
3、将当前增量数据发送给步骤2中映射的存储节点;
4、存储节点接收数据,根据数据内的时间戳判断是否需要建立新的存储页,如果需要则执行步骤5,否则执行步骤8;
5、根据当前时间戳创建新的存储页;
6、为新的存储页建立页索引mapIdx;
7、为当前存储页创建属性索引存储结构comindex;
8、获取写入当前增量数据的存储页、页索引以及属性索引文件的写操作权限;
9、锁定该存储页的写操作;为了防止并发写入导致的乱序问题通常进行锁定处理。
10、将当前增量数据写入该存储页,并更新页索引;
11、根据属性定义,从增量数据中抽取属性取值;
12、根据属性取值的规约区间更新索引;在创建库表时,人工设置规约区间范围;例如:设定规约区间长度为10,则形成0~10,11~20,21~30,…,这样的连续区间;
13、完成上述操做,解锁资源;
14、返回操作信息,结束;
2、数据增量过程中的向量索引维护
在数据增量过程中,底层存储内部,数据非结构化的管理基础上根据其属性建立索引。从业务的角度出发,一个数据具有多个属性(例如:一个温度传感的数据由传感器标识、采样值、采样时间等属性构成)。多个属性在取值索引的基础上,可以构成数据的多维索引空间。为了实现KV-RDB混合模式下的快速检索,本发明将数据多维属性在空间进行单维投影,根据投影的值域形成向量,构成的多值分布索引。在查询过程中,通过多个向量的交叉过滤实现数据的快速筛选。图3中展示了这一索引的基本架构。
在前述数据D的定义中存在属性定义propertySet,在数据增量的过程中,通过抽取其中的属性进行单维投影获取属性值域分布。
在存储架构中,一个存储页对应一个二级索引,其定义如下:
comIndex={pTagMapi|i=1,2,..n}其中
pTagMapi为某类数据特定属性值域分布映射向量集合,其定义如下:
pTagMapi={tagName,{valueArrayj|j=1,2,,n}}
其中tagName为属性i的标识,valueArray为该属性i的属性值域区间的存储索引映射集合。其定义如下:
valueArray={rangTag,{mapIndexk|k=1,2,...p}}
其中rangeTag为属性值域区间的映射标识。在存储框架,根据属性的类型映射为字符串或者值区间。mapIndex为属性值域区间数据在页存储中的映射位置。
在数据增量过程中,存储架构结合增量数据的属性集定义从其content中抽取属性取值,将属性取值与对应的pTagMap中值域区间进行对比,更新pTagMap中对应的索引向量。这一过程如下:
i)通过数据D获取其属性集合
path∈propertySet,propertySet∈D,data∈D
ii)将数据属性集property中的属性进行单维映射,
在索引更新过程中,根据pi的值域区间,将对应的映射向量更新
put(p,pTagMap)=pos(p)→valueArrayj,
value(p)∈value(rangeTag),rangeTag∈valueArray
由此形了索引的更新。
图4中展示了索引更新的基本流程,如图所示,这一过程如下:
1、数据增量过程中,master节点提交索引维护请求给worker节点,获取数据;该请求中包括数据在存储页中的指针位置;
2、根据数据源的属性集合从增量数据中获取对应属性的属性取值;
3、令i=1;
4、获取第i个属性与属性的取值,如未获取则执行步骤5,否则执行步骤6;
5、步骤4中未获取有效的属性取值,则在分页二级索引中为当前属性定义空间中的null取值向量中增加当前数据的页索引,执行步骤11;
6、在当前分页二级索引中获取与当前属性对应的取值索引向量空间;如未获取与当前属性取值对应的向量则执行步骤7,否则执行步骤8;
7、在当前取值索引向量空间中创建当前属性取值向量空间,执行步骤8;
8、在当前属性对应的取值索引向量空间中获取覆盖当前取值的值域分区,如果未获取则执行步骤9,否则执行步骤10;
9、在当前属性的取值索引向量空间中增加当前属性取值对应的值域分区;
10、在值域分区中增加当前数据的页索引;
11、完成当前属性索引空间的维护,令i=1+1;
12、完成全部属性维护则执行步骤13,否则执行步骤4;
13、完成索引维护,返回数据增量存储操作;
3、高性能数据多值查询
在查询过程中根据索引中属性取值的匹配实现数据的映射。这一过程由三个步骤完成:
1、多值查询任务分解:根据查询请求提交的查询条件,将多值查询任务分解为多个单值查询任务。同时,根据查询条件中的and、or等操作符建立二叉任务树。这一二叉任务数中的叶节点为具体的单值查询条件,中间节点为操作符。通过操作符连接两个查询任务。
2、任务执行:在查询任务分解的基础上,遍历二叉任务树,将操作符对应的中间节点连接的两个单值查询做交叉过滤,形成局部查询选集。将树中的全部任务依次完成后形成最终的查询结果选集。根据查询结果提取属性取值向量中页索引值,并通过该页索引值从存储页中提取数据,最终形成结果数据集。
1、多值任务分解与执行
如前所述,多值任务分解的目的是将查询条件分解为一个任务树。一个查询条件可以表达为如下形式:
qtask=(query,timespan)
qtask由一个二元组构成,其中query为查询条件
其中pn为查询条件中,某一属性,v为该属性的取值约束;
f(pn,v)为该属性与取值约束的关系;
op为属性取值约束之间的连接操作符,其取值为AND、OR、NOT;
当取值为AND时,表示f(pn,v)i与f(pn,v)i是并的关系
当取值为OR时,表示f(pn,v)i与f(pn,v)i是和的关系;
当取值为NOT时,表示f(pn,v)i与f(pn,v)i是并的关系
timespan为查询的时间窗口,用于约束当前查询的数据时间戳范围,其定义如下:
timespan={startTime,endTime}
其中startTime为当前查询任务需要检索的起始时间;
endTime为当前查询任务需要检索的截止时间;
当接收到这一查询请求时,将条件分解为多个f(pn,v)通过连接符连接的字符串,并将这一字符串构造成为二叉树。这一过程如下:
i)令i=1,从query中提取第一个连接符opi,并将opi连接的
f(pn,v)i与f(pn,v)i+1从query中截取;
ii)将上述提取的opi为二叉树的root节点,构造二叉树,f(pn,v)i与f(pn,v)i+1分别为该二叉树的左右叶节点;
iii)令i=i+1,i<n+1从截取后的query中继续提取连接符opi以及opi连接的f(pn,v)i+1,将opi作为二叉树的root节点,将原来的二叉树作为当前root的左子树,f(pn,v)i+1作为当前二叉树的右叶节点,并截取query;
iv)完成全部操作后形成任务二叉树。
图5中展示了这一二叉树的构造过程
其过程如下:
1、获取查询条件query;
2、令i=1;
3、检查当前i是否溢出了query中的条件属性与取值约束的关系f(pn,v)的个数边界n-1,如果是则执行步骤11;否则执行步骤4;Pn为属性的名字,V为该属性的取值,n标识一个查询条件中共有n个算式。
4、从query中提取当前第i个操作符号op;
5、提取该操作符op的左右两个连接条件;
6、令当前的op为树的root;
7、Op操作符的左连接为已有二叉树则执行步骤8,否则执行步骤9;
8、将已有二叉树作为当前二叉树的左子树与root连接;
9、将右连接作为当前二叉树的右叶节点;
10、令i=i+1,自行步骤3;
11、完成二叉树的构造,结束
经过上述过程,查询任务的约束条件变成一颗二叉任务树。这一任务书的叶节点为具体的属性与取值约束的关系定义f(pn,v),树中的节点为操作符op,例如一条查询任务的约束条件如:
Query=docname like‘beijing’AND createror=‘张三’AND operation=‘CREATE’
经过处理后查询任务树具体形式如图6
在查询任务中存在一定的查询条件嵌套情况,既:一个查询约束中部分查询条件用“()”包围,在查询执行过程中,需要将嵌套内容的结果作为一个备选集与其他查询条件进行计算。针对这一情况,在查询树的构造过程中,首先扫描当前查询条件的嵌套情况,如果具有嵌套的内容,则将其作为一个子树整体构造,而后根据其左右操作符与任务树中的其他叶节点连接。具体过程如图7:
这一流程如下:
1、扫描当前查询条件,提取嵌套条件;
2、将该嵌套条件作为一个子树独立构造;
3、获取当前嵌套条件的左操作符op;如果存在左操作符则执行步骤4,否则执行步骤5;
4、将该子树作为任务树的右子树连接;
5、获取当前嵌套条件的右连接符,如果存在右连接符则执行步骤6,否则执行步骤7;
6、将当前子树作为任务树的左子树连接;
7、如果当前查询条件中存在下一个嵌套条件则执行步骤2,否则结束;
例如一条查询任务的约束条件如
Query=docname like‘beijing’AND createror=‘张三’AND(operation=‘CREATE’or operation=’CHECK’)
经过处理后查询任务树具体形式如图8
2、查询任务执行
查询任务的执行由两个步骤构成
1、任务分解执行:主节点根据qtask中timespan约束的时间范围,检索满足当前查询时间约束覆盖的存储页存储节点与节点中的存储指针。根据存储页的分布,构造子任务集。这一子任务集对相关的存储节点进行统一访问,分发查询条件与相关的存储页存储指针;由存储节点在本地进行局部查询,完成全部查询后汇聚节点的查询结果,形成最终的任务结果;
2、存储节点本地查询:这一步骤中,节点接收子任务请求,依次打开本地相关的存储页存储文件,通过遍历查询任务二叉树在文件中过滤、筛选满足条件的数据。完成全部存储页存储文件的检查后,形成本地查询结果返回给主节点。
任务分解执行的流程如图9所示:
这一基本流程如下:
1、获取当前qtask中的timespan;
2、根据timespan中的起始、截止时间条件计算满足约束的存储页覆盖范围。获取对应的存储节点以及存储指针;
3、构造子任务,封装当前查询二叉树与任务请求;
4、将子任务分发给各个节点;
5、子节点接收到请求后,根据请求中的信息锁定本地相关的存储页;
6、令i=1
7、获取第i个存储页以及对应的属性取值索引空间;
8、在上述空间中,根据子任务中的约束条件query进行选集过滤,完后当前存储页查询;
9、令i=i+1;如果完成全部本地存储页查询执行步骤10,否则执行步骤7;
10、完成全部本地存储页的查询,汇聚结果返回主节点;
11、完成全部节点查询,主节点汇聚结果,返回;
12、当前查询任务结束;
在上述过程中,子节点在本地进行数据查询。其根据通过遍历任务二叉树对存储页中的内容进行匹配与过滤。一个查询任务被分解为一个二叉树后,经过遍历该数中的叶节点实现查询任务的执行。在查询过程中,首先从当前查询树的最左叶节点开始,通过该左叶节点与兄弟右节点构成一个过滤集操作。根据得到的过滤集操作提取对应的属性取值映射索引,经过过滤后形成一个选集。将该选集作为当前子数的查询结果与上一级的右叶节点继续过滤,直到完成全部叶节点的属性取值映射索引的过滤。
图10中展示了这一过程,其流程如下:
1、存储节点接收子任务请求;
2、获取任务树,从最左叶节点开始执行查询;
3、最左叶节点是操作符op则执行步骤9;否则执行步骤4;
4、获取当前最左叶节点的父节点(op)与右兄弟节点;
5、从当前存储页的属性索引中,获取与左右两个叶节点中属性定义和取值约束一致的两个向量;
6、根据父节点操作符op过滤两个向量,形成过滤结果集;
7、将当前任务树的左右子节点裁剪掉,并将步骤6中的结果集缓存在当前op节点中;
8、将当前op节点作为最左节点,如果当前任务已经完成全部叶节点裁剪则执行步骤15;否则执行步骤2;
9、获取当前左叶节点的右兄弟节点以及父节点(op);
10、根据右兄弟节点中条件定义获取当前存储页中对应属性取值的映射向量;执行步骤6;
11、完成任务树的全部过滤,根据过滤结果集向量映射的存储页中存储位置提取原始数据;本发明在存储节点本地完成任务树的遍历执行后形成候选索引结果集。再根据索引结果集中的位置指针从页存储中提取对应的原始数据与查询条件进一步对比,将满足条件的结果形成本地查询结果。
12、结果汇聚后返回。
结合以上手段,本发明提出了一种面向混合结构的高性能数据存储与组织技术,该技术适用于物联网、智慧城市等应用场景中云平台数据统一存储与查询需求。经过测试表明,本发明提出的技术相对传统的关系数据库与键值数据库在查询响应上性能提升13%。

Claims (7)

1.一种面向云平台的混合结构数据高性能存储方法,其步骤为:
1)将云平台的数据集dataStore根据时间分段划分为一系列的存储页dataPage;然后分别将每一存储页dataPage存储到云平台中的一存储节点;
2)云平台对当前收到的增量数据data,将其封装为D={data,propertySet,timeStamp},data={content,time};其中,增量数据data包括数据内容content以及采样时间time;timestamp为收到该增量数据的时间戳;propertySet为数据属性集,定义在数据内容content中获取对应属性的映射位置;所述数据属性集propertySet={(tagName,path)i|i=1,2,...n};其中tagName为属性名称,path为该属性在数据content中映射的路径位置,n为属性总数;
3)云平台根据增量数据的时间戳将该封装数据D发送给对应的存储节点,该存储节点根据该增量数据的时间戳确定是否需要建立新的存储页,如果需要,则根据当前时间戳创建新的存储页,并为该新存储页建立页索引和属性索引存储结构;如果不需要,则该存储节点根据该增量数据data的采样时间确定该增量数据data所属的时间分段位置,并根据该时间分段位置从该存储节点的数据集dataStore中获取对应的存储页;
4)该存储节点将该封装数据D存储到该存储页中并更新页索引;并且根据该数据属性集从该增量数据中提取对应属性的属性值,然后根据属性值的规约区间更新属性索引存储结构。
2.如权利要求1所述的方法,其特征在于,将所述数据集dataStore划分为一系列的存储页dataPage的方法为:
dataStore={dataPagei|i=1,2,...n}
dataPage={timeSpanKey,{Dj|j=1,2,...n},mapIdx}
其中,timeSpanKey为时间分段标识,Dj为存储的第j个封装数据D;mapIdx为封装数据的存储位置映射关系集合,即页索引。
3.如权利要求1所述的方法,其特征在于,所述属性索引存储结构为二级索引comindex,每一存储页对应一二级索引comindex;其中,comIndex={pTagMapi|i=1,2,..n},pTagMapi为属性i的属性值域分布映射向量集合;pTagMapi={tagName,{valueArrayj|j=1,2,... n}},tagName为属性i的标识,valueArray为该属性i的属性值域区间的存储索引映射集合;valueArray={rangTag,{mapIndexk|k=1,2,...p}},rangeTag为属性值域区间的映射标,mapIndex为属性值域区间数据在页存储中的映射位置。
4.如权利要求1或3所述的方法,其特征在于,更新属性索引存储结构的方法为:首先根据数据源的属性集合从增量数据中获取对应属性的属性取值;对于获取到的属性i的属性值,在属性索引存储结构中获取与当前属性i对应的取值索引向量空间;然后在当前取值索引向量空间中创建当前属性i的取值向量空间;然后在当前属性i对应的向量空间中获取覆盖当前取值的值域分区;如果未获取,则在当前属性向量空间中增加当前属性取值对应的值域分区,如果获取到值域分区,则在该值域分区中增加当前数据的页索引。
5.一种基于权利要求1所述存储方法存储数据的查询方法,其步骤为:
1)根据查询请求提交的查询条件,将多值查询任务分解为多个单值查询任务并根据查询条件中的操作符建立该查询条件的二叉任务树;
2)遍历该二叉任务树,将操作符对应的中间节点连接的两个单值查询做交叉过滤,形成局部查询选集;
3)根据执行每一局部查询选集中的查询任务得到的查询结果,构建一查询结果选集;
4)从该查询结果选集的查询结果中提取属性取值向量中的页索引值,并通过该页索引值从存储页中提取数据,最终形成结果数据集。
6.如权利要求5所述的查询方法,其特征在于,建立该二叉任务树的方法为:对于查询条件query;令i=1,检查当前i是否溢出了查询条件query中的条件属性与取值约束的关系的个数边界n-1,如果是则完成二叉任务树的构造;否则从查询条件query中提取当前第i个操作符号op以及该操作符op的左右两个连接条件;然后令该操作符op为二叉任务树的根root;如果该操作符op的左连接为已有二叉树,则将该二叉树作为当前所建二叉任务树的左子树与根root连接;将右连接作为当前所建二叉任务树的右叶节点;然后令i=i+1,直至完成二叉任务树的构造。
7.如权利要求5所述的查询方法,其特征在于,建立该二叉任务树的方法为:首先扫描当前查询条件,对于其中的每一嵌套条件;然后将该嵌套条件作为一个子树独立构造;获取该嵌套条件的左操作符op,如果存在左操作符op,则将该子树作为二叉任务树的右子树连接;否则,获取该嵌套条件的右连接符,如果存在右连接符,则将当前子树作为二叉任务树的左子树连接。
CN201610224238.1A 2016-04-12 2016-04-12 一种面向云平台的混合结构数据高性能存储、查询方法 Active CN105912666B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610224238.1A CN105912666B (zh) 2016-04-12 2016-04-12 一种面向云平台的混合结构数据高性能存储、查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610224238.1A CN105912666B (zh) 2016-04-12 2016-04-12 一种面向云平台的混合结构数据高性能存储、查询方法

Publications (2)

Publication Number Publication Date
CN105912666A CN105912666A (zh) 2016-08-31
CN105912666B true CN105912666B (zh) 2019-06-25

Family

ID=56745894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610224238.1A Active CN105912666B (zh) 2016-04-12 2016-04-12 一种面向云平台的混合结构数据高性能存储、查询方法

Country Status (1)

Country Link
CN (1) CN105912666B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107134041A (zh) * 2017-04-26 2017-09-05 成都国星通信有限公司 一种景区客流量数据采集系统与方法
CN107169075A (zh) * 2017-05-10 2017-09-15 深圳大普微电子科技有限公司 基于特征分析的数据存取方法、存储设备及存储系统
CN107967331A (zh) * 2017-11-27 2018-04-27 国家海洋环境预报中心 匹配于高性能计算机结构的数据整理方法
CN107967361B (zh) * 2017-12-22 2019-05-10 北京明朝万达科技股份有限公司 一种数据库的增量处理方法和系统
CN108664662B (zh) * 2018-05-22 2021-08-31 上海交通大学 时间旅行和时态聚合查询处理方法
CN109145643B (zh) * 2018-08-23 2019-04-26 安思瀚 一种基于私有云的个人多源数据管理方法与系统
CN109947796B (zh) * 2019-04-12 2021-04-30 北京工业大学 一种分布式数据库系统查询中间结果集的缓存方法
CN111930751A (zh) * 2020-08-31 2020-11-13 成都四方伟业软件股份有限公司 一种时序数据的存储方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103412897A (zh) * 2013-07-25 2013-11-27 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
CN104216987A (zh) * 2014-09-04 2014-12-17 浪潮通用软件有限公司 一种基于时间戳且支持删除操作的增量数据捕获方法
CN105224546A (zh) * 2014-06-04 2016-01-06 阿里巴巴集团控股有限公司 数据存储和查询方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103412897A (zh) * 2013-07-25 2013-11-27 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
CN105224546A (zh) * 2014-06-04 2016-01-06 阿里巴巴集团控股有限公司 数据存储和查询方法及设备
CN104216987A (zh) * 2014-09-04 2014-12-17 浪潮通用软件有限公司 一种基于时间戳且支持删除操作的增量数据捕获方法

Also Published As

Publication number Publication date
CN105912666A (zh) 2016-08-31

Similar Documents

Publication Publication Date Title
CN105912666B (zh) 一种面向云平台的混合结构数据高性能存储、查询方法
Pahins et al. Hashedcubes: Simple, low memory, real-time visual exploration of big data
CN104881424B (zh) 一种基于正则表达式的电力大数据采集、存储及分析方法
CN105069703B (zh) 一种电网海量数据管理方法
CN105122243B (zh) 用于半结构化数据的可扩展分析平台
CN107122443B (zh) 一种基于Spark SQL的分布式全文检索系统及方法
Deng et al. Trajectory indexing and retrieval
CN102915365A (zh) 基于Hadoop的分布式搜索引擎构建方法
CN102073708A (zh) 面向大规模不确定图数据库的子图查询方法
CN106528793A (zh) 一种分布式空间数据库的时空分片存储方法
Nayyar et al. Comprehensive analysis & performance comparison of clustering algorithms for big data
Zhang et al. Effectively indexing the uncertain space
CN112214488A (zh) 一种欧式空间数据索引树及构建和检索方法
Larriba-Pey et al. Introduction to graph databases
Li et al. Efficient path query processing over massive trajectories on the cloud
Alkathiri et al. Geo-spatial big data mining techniques
Zhu et al. Scalable temporal clique enumeration
Kosmatopoulos et al. HiNode: an asymptotically space-optimal storage model for historical queries on graphs
Zhou et al. Sequence pattern matching over event data with temporal uncertainty
Chang et al. A computation-oriented multimedia data streams model for content-based information retrieval
Fagroud et al. IOT Search Engines: Exploratory Data Analysis
Manta-Caro et al. Advances in real-time indexing models and techniques for the web of things
Eftekhar et al. Partitioning and ranking tagged data sources
He et al. JUST-Traj: A Distributed and Holistic Trajectory Data Management System
Li et al. A novel approach for mining probabilistic frequent itemsets over uncertain data streams

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