CN109388659A - 数据存储方法、装置和计算机可读存储介质 - Google Patents
数据存储方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN109388659A CN109388659A CN201811144928.1A CN201811144928A CN109388659A CN 109388659 A CN109388659 A CN 109388659A CN 201811144928 A CN201811144928 A CN 201811144928A CN 109388659 A CN109388659 A CN 109388659A
- Authority
- CN
- China
- Prior art keywords
- attribute field
- node
- field section
- data
- checked
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据存储方法、装置和计算机可读存储介质,涉及数据库技术领域。本公开的方法包括:获取汇总配置元数据,汇总配置元数据包括预设的标志字段区间和预设汇总函数;根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据;根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对汇总数据进行存储;其中,区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。基于区间树的层级结构可以查询到不同区间长度内的汇总数据,提高了查询效率,节省了系统资源。
Description
技术领域
本公开涉及数据库技术领域,特别涉及一种数据存储方法、装置和计算机可读存储介质。
背景技术
随着互联网技术的发展,数据呈现爆炸式增长。数据的存储和处理技术对于应对海量数据的情况变得尤其重要。
大数据处理和分析技术越来越多的应用于各个行业,与之前的大数据分析不同,Hive SQL(Structured Query Language,结构化查询语言)和Spark SQL的出现让大部分的大数据分析师不再需要编写一个复杂的数据处理程序,而改为使用SQL语句对大数据表或者结构化数据进行查询。
目前,一般数据表中的每条数据都单独存储,需要对多条数据进行汇总查询的情况下,需要查询符合查询条件的所有数据。例如,统计订单表从2018年1月1日到2018年6月18日的订单总额度或者订单的最高额度等,需要读取2018年1月1日到2018年6月18日这个时间段内的所有的订单数据,并在金额字段上进行计算。
发明内容
发明人发现:目前的数据存储方式,对于需要对多条数据进行汇总查询的情况,查询效率较低。
本公开所要解决的一个技术问题是:如何提高汇总查询的查询效率。
根据本公开的一些实施例,提供的一种数据存储方法,包括:获取汇总配置元数据,汇总配置元数据包括预设的标志字段区间和预设汇总函数;根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据;根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对汇总数据进行存储;其中,区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。
在一些实施例中,根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总包括:从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据;其中,高维度的标志字段区间根据低维度的标志字段区间内汇总数据进行汇总。
在一些实施例中,区间树中叶子节点包括最低维度的标志字段区间的两个端点值和对应的汇总数据;区间树中非叶子节点的子节点按照标志字段区间值由小到大的顺序从左至右进行排列。
在一些实施例中,该方法还包括:获取用户的查询请求,查询请求包括:待查询标志字段区间,待查询汇总数据的类型;根据待查询标志字段区间在区间树中查找相匹配节点;根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据;将与待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
在一些实施例中,根据待查询标志字段区间,在区间树中查找相匹配的节点包括:在待查询标志字段区间与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点;或者在待查询标志字段区间的一部分与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配;或者在待查询标志字段区间被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配;或者在待查询标志字段区间的一部分被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。
在一些实施例中,根据待查询标志字段区间,在区间树中查找相匹配的节点包括:在区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;在区间树中相同层级的节点中,按照由左到右顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
在一些实施例中,该方法还包括:根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点;根据待插入节点的标志字段区间和区间树中各节点对应的预设最大标志字段区间,确定待插入节点的父节点;将待插入节点插入对应的父节点之下,并根据待插入节点的标志字段区间和汇总数据,修改待插入节点的上层节点的标志字段区间和汇总数据。
在一些实施例中,根据待插入节点的标志字段区间和区间树中各节点对应的预设最大标志字段区间,确定待插入节点的父节点包括:根据待插入节点的标志字段区间的维度,确定待插入节点在区间树中的层级;在待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含待插入节点的标志字段区间的节点,作为待插入节点的父节点。
在一些实施例中,标志字段包括:时间或编号;原始数据包括:订单数据或服务单数据。
根据本公开的另一些实施例,提供的一种数据存储装置,包括:元数据获取模块,用于获取汇总配置元数据,汇总配置元数据包括预设的标志字段区间和预设汇总函数;数据汇总模块,用于根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据;数据存储模块,用于根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对汇总数据进行存储;其中,区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。
在一些实施例中,数据汇总模块用于从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据;其中,高维度的标志字段区间根据低维度的标志字段区间内汇总数据进行汇总。
在一些实施例中,区间树中叶子节点包括最低维度的标志字段区间的两个端点值和对应的汇总数据;区间树中非叶子节点的子节点按照标志字段区间值由小到大的顺序从左至右进行排列。
在一些实施例中,该装置还包括:查询请求获取模块,用于获取用户的查询请求,查询请求包括:待查询标志字段区间,待查询汇总数据的类型;数据查询模块,用于根据待查询标志字段区间在区间树中查找相匹配节点;根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据;数据返回模块,用于将与待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
在一些实施例中,数据查询模块用于在待查询标志字段区间与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点;或者在待查询标志字段区间的一部分与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配;或者在待查询标志字段区间被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配;或者在待查询标志字段区间的一部分被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。
在一些实施例中,数据查询模块用于在区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;在区间树中相同层级的节点中,按照由左到右顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
在一些实施例中,该装置还包括:数据插入模块,用于根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点;根据待插入节点的标志字段区间和区间树中各节点对应的预设最大标志字段区间,确定待插入节点的父节点;将待插入节点插入对应的父节点之下,并根据待插入节点的标志字段区间和汇总数据,修改待插入节点的上层节点的标志字段区间和汇总数据。
在一些实施例中,数据插入模块用于根据待插入节点的标志字段区间的维度,确定待插入节点在区间树中的层级,在待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含待插入节点的标志字段区间的节点,作为待插入节点的父节点。
在一些实施例中,标志字段包括:时间或编号;原始数据包括:订单数据或服务单数据。
根据本公开的又一些实施例,提供的一种数据存储装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器设备中的指令,执行如前述任意实施例的数据存储方法。
根据本公开的再一些实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的数据存储方法。
本公开中在不同标志字段区间内对数据进行汇总,将每个标志字段区间值和对应的汇总数据生成节点,进一步按照各个标志字段区间之间的关系生成区间树。采用区间树的形式存储不同的标志字段区间内的汇总数据。当需要对多条数据的汇总数据进行查找时,通过匹配标志字段区间,即可在区间树中快速查询到一个区间内的多条数据的汇总数据。进一步,基于区间树的层级结构可以查询到不同区间长度内的汇总数据,提高了查询效率,节省了系统资源。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开的一些实施例的数据存储方法的流程示意图。
图2示出本公开的另一些实施例的区间树的示意图。
图3示出本公开的又一些实施例的数据存储方法的流程示意图。
图4示出本公开的再一些实施例的数据存储方法的流程示意图。
图5示出本公开的一些实施例的数据存储装置的结构示意图。
图6示出本公开的另一些实施例的数据存储装置的结构示意图。
图7示出本公开的又一些实施例的数据存储装置的结构示意图。
图8示出本公开的再一些实施例的数据存储装置的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开提出一种数据存储方法,下面结合图1描述本公开方法的一些实施例。
图1为本公开数据存储方法一些实施例的流程图。如图1所示,该实施例的方法包括:步骤S102~S106。
在步骤S102中,获取汇总配置元数据。
汇总配置元数据包括预设的标志字段区间和预设汇总函数。标志字段表示原始数据中可比较,可以划分为不同区间的字段,例如,原始数据为订单数据或服务单(例如售前或售后咨询单)数据,可以将时间字段或编号(例如订单编号、用户编号)字段等设置为标志字段。标识字段可以根据具体需求进行设置,方便后续的汇总查询。设置标志字段用于后续查询过程,可以直接利用标志字段进行查询。
预设的标志字段区间例如包括不同维度的预设标志字段区间,不同维度的标志字段区间对应不同的区间长度。例如,预设的最低维度的标志字段区间长度为1天,对应的预设的标志字段区间为1月1日0时至24时、1月2日0时至24时……高一维度的预设的标志字段区间长度为1个月,对应的预设的标志字段区间为1月1日至1月31日……之后按照维度由低到高,预设的标志字段区间长度依次为1个季度、1年等。
在步骤S104中,根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据。
预设汇总函数可以根据实际需求进行设置,可以设置多个预设汇总函数。例如,预设汇总函数为订单金额求和函数、订单金额最大值函数、订单数量统计函数、用户数量统计函数、订单金额最大的用户标识统计函数等。通过预设汇总函数可以对不同标志字段区间内的数据集进行汇总。
在一些实施例中,从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据。同一维度的各个标志字段区间的数据可以并行进行汇总。高维度的标志字段区间的数据集,根据低维度的标志字段区间内汇总数据进行汇总。例如,先对每天的订单数据进行汇总,汇总订单金额总和,进一步,根据每天的订单金额总和汇总每个月的订单金额总和,以此类推。这样能够减少计算量,提高计算效率。
可以采用Hive中的Map/Reduce工具读取标志字段区间对应的原始数据,进而汇总配置元数据对原始数据进行汇总。
在步骤S106中,根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对汇总数据进行存储。
区间树中每个节点包括标志字段区间值和对应的汇总数据。例如,节点包括:区间为:订单编号0001-0010(存储时可以存储区间的两个端点值),订单金额总和为10000。区间树包括不同层级的节点,层级最高的节点即根节点对应的标志字段区间的维度最高,最下层为叶子节点,对应的标志字段区间的维度最低。父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。父节点的标志字段区间为各个子节点的标志字段区间的并集,即父节点的标志字段区间的端点分别为各个子节点中标志字段区间端点的最小值和最大值。同一层的兄弟节点的标志字段区间可以是连续的。非叶子节点的子节点可以按照标志字段区间值由小到大的顺序从左至右进行排列。
下面以订单数据为例,结合图2对本公开的区间树进行描述。
如图2所示,区间树中标志字段区间为时间区间,汇总的是订单的总金额(sum(amount))和最大金额(max(amount))。根节点对应的是一年的订单数据的汇总,标志字段区间为2018年1月1日至2018年12月31日。根节点下一层的节点对应的是每个季度的订单数据的汇总,标志字段区间为2018年1月1日至2018年3月31日……区间树中第三层节点对应的是每个月的订单数据的汇总,标志字段区间为2018年1月1日至2018年1月31日……。区间树的叶子节点对应的是每日的订单数据的汇总,标志字段区间为2018年1月1日……
标志字段和标志字段区间都可根据实际需求进行设置,例如标志字段可以选取金额字段,标志字段区间可以设置为订单金额为[1,100],[101,200]等区间。预设汇总函数也可以根据实际需求进行设置。标志字段区间的维度也可以根据实际需求进行设置。例如,不同维度的标志字段区间长度设置为指数型递增的方式。例如,最低维度标志字段区间长度为20天,高一维度标志字段区间长度为21天,再高一维度标志字段区间长度为22天,以此类推。
上述实施例的方法可以离线执行,在不同标志字段区间内对数据进行汇总,将每个标志字段区间值和对应的汇总数据生成节点,进一步按照各个标志字段区间之间的关系生成区间树。采用区间树的形式存储不同的标志字段区间内的汇总数据。当需要对多条数据的汇总数据进行查找时,通过匹配标志字段区间,即可在区间树中快速查询到一个区间内的多条数据的汇总数据。进一步,基于区间树的层级结构可以查询到不同区间长度内的汇总数据,提高了查询效率,节省了系统资源。
下面结合图3描述基于区间树的存储方式,如何对数据进行查询的一些实施例。
图3为本公开数据存储方法另一些实施例的流程图。如图3所示,该实施例的方法包括:步骤S302~S308。
在步骤S302中,获取用户的查询请求。
查询请求包括:待查询标志字段区间,待查询汇总数据的类型。查询语句例如为Select Func1(column1),Func2(column2)…from tablewhere index>=MIN_INDEX_VALUEand index<=MAX_INDEX_VALUE。
Func1,Func2……FuncN代表作用于字段上的函数,例如sum(求和),avg(均值),min(最小值),max(最大值)。Column1,Column2……ColumnN:代表待查询的字段,例如金额、数量。FuncN和ColumnN共同作用可以表示待查询汇总数据的类型。Index表示待查询标志字段,比如订单编号,订单时间。Where后面的语句表示查询index在某个区间内的记录即待查询标志字段区间,形式上可以支持任意形式的查询区间。例如查询index大于2018年1月1日的记录可以写为where index>‘20180101’,在没有指定上界情况下,默认设置为整个区间内的最大值,如果没有下界的情况下类似的设置为最小值。
在步骤S304中,根据待查询标志字段区间在区间树中查找相匹配节点。
在一些实施例中,在区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;在区间树中相同层级的节点中,按照由左到右顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
进一步,在待查询标志字段区间与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点。待查询标志字段区间的两个端点与节点的标志字段区间的两个端点完全重合,表示待查询标志字段区间与该节点的标志字段区间完全重合。
或者,在待查询标志字段区间的一部分与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配。待查询标志字段区间包含节点的标志字段区间,表示待查询标志字段区间的一部分与该节点的标志字段区间完全重合。直至待查询标志字段区间整体匹配完成。
或者,在待查询标志字段区间被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配。直至待查询标志字段区间整体匹配完成。
或者,在待查询标志字段区间的一部分被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。直至待查询标志字段区间整体匹配完成。
如图2所示,例如查询2018年6月18日之前所有订单的金额总和。
(1)待查询标志字段区间为[20180101,20180618]。由根节点开始,[20180101,20180618]被包含在根节点的标志字段区间[20180101,20181231]内,则继续将[20180101,20180618]与根节点的子节点的标志字段区间进行匹配。
(2)在同一层级的节点中按照从左至右的顺序,首先将[20180101,20180618]与[20180101,20180131]进行比对,[20180101,20180618]的一部分与[20180101,20180331]完全重合,则[20180101,20180331]对应的节点为相匹配的节点。
(3)继续将待查询标志字段区间的剩余部分[20180401,20180618]继续与[20180101,20180331]的兄弟节点[20180401,20180630]进行匹配。[20180401,20180618]被包含在[20180401,20180630]中,则将[20180401,20180618]与[20180401,20180630]的子节点进行匹配。
(4)得到[20180401,20180430]、[20180501,20180531]对应的节点为相匹配的节点。
(5)将待查询标志字段区间的剩余部分[20180601,20180618]继续与[20180601,20180630]的子节点进行匹配,得到20180601、20180602……20180618对应的子节点为相匹配的节点。
可以看出,通过上述方法找到20个节点为与待查询标志字段区间相匹配的节点。如果采用订单逐条存储的方式,需要查询2018年6月18日之前的全部订单,订单数据可能达到上亿级别。通过上述实施例的数据存储和查询方法,明显提高了查询效率。
在步骤S306中,根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据。
节点中可能存储多种类型的汇总数据,例如订单总金额、订单涉及的用户数量等,从中读取与待查询汇总数据的类型相同的汇总数据。
在步骤S308中,将与待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
与待查询标志字段区间相匹配的节点可能存在多个,如上述实施例中查询2018年6月18日之前的订单总金额得到20个相匹配的节点。将这些节点的汇总数据进行汇总,即可得到查询结果。
上述实施例的方法,利用区间树存储汇总数据,基于用户的查询请求在区间树中查找相应的节点和节点中的汇总数据,提高了查询效率,节约系统资源。
区间树可以周期性进行更新,可以根据新的数据重新生成区间树,也可以在原有的区间树的基础上插入新的数据。下面结合图4描述区间树的更新的一些实施例。
图4为本公开数据存储方法另一些实施例的流程图。如图4所示,该实施例的方法包括:步骤S402~S406。
在步骤S402中,根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点。
可以周期性批量获取待插入的数据,例如,每周获取一次本周内新产生的数据作为待插入数据。待插入节点的生成方法可以参考前述实施例中节点的生成方法在此不再赘述。待插入数据跨越多个标志字段区间,则生成多个待插入节点
在步骤S404中,根据待插入节点的标志字段区间和区间树中各节点对应的预设最大标志字段区间,确定待插入节点的父节点。
不同节点设置对应的预设最大标志字段区间,例如,图2中叶子节点的父节点的最大标志字段区间为[20180101,20180131]等。在一些实施例中,根据待插入节点的标志字段区间的维度,确定待插入节点在区间树中的层级,在待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含待插入节点的标志字段区间的节点,作为待插入节点的父节点。例如,订单数据目前至汇总至5月15日,叶子节点的父节点中对应的标志字段区间包括[20180501,20180515],待插入节点包括5月16日的汇总数据。首先确定待插入节点为叶子节点,查找到[20180501,20180515]对应的节点的预设最大标志字段区间为[20180501,20180531],包含待插入节点的标志字段区间,则[20180501,20180515]对应的节点为待插入节点的父节点。
在不存在待插入节点的父节点的情况下,新建待插入节点的父节点。例如待插入节点为6月1日的汇总数据,当前区间树中叶子节点的父节点对应的标志字段区间只到5月31,则为待插入节点新建父节点。将新建父节点作为待插入节点,重复上述过程,直至将待插入节点插入区间树。新建父节点的标志字段区间根据待插入节点的标志字段区间确定。
在步骤S406中,将待插入节点插入对应的父节点之下,并根据待插入节点的标志字段区间和汇总数据,修改待插入节点的上层节点的标志字段区间和汇总数据。
例如,待插入节点包括5月16日的汇总数据,待插入节点插入后,其父节点对应的标志字段区间由[20180501,20180515]修改为[20180501,20180516],进一步,在待插入节点的标志字段区间的端点在其上层节点的标志字段区间之外的情况下,待插入节点的上层节点的标志字段区间需要被修改。待插入节点的祖父节点也可能进行相应的修改。同时,需要根据待插入节点的汇总数据,修改待插入节点上层各个节点的汇总数据。
还可以根据需求对区间树中的节点进行删除。首先在区间树中查找到待删除的数据,具体查找过程可以参考前述实施例数据查询的过程。待删除的数据可以对应多个节点。删除待删除的数据之后,需要将对应的节点以及该节点的上层节点的标志字段区间和汇总数据,根据删除的数据进行修改,在此不再赘述。
本公开还提供一种数据存储装置,下面结合图5进行描述。
图5为本公开数据存储装置的一些实施例的结构图。如图5所示,该实施例的装置50包括:元数据获取模块502,数据汇总模块504,数据存储模块506。
元数据获取模块502,用于获取汇总配置元数据,汇总配置元数据包括预设的标志字段区间和预设汇总函数。
数据汇总模块504,用于根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据。在一些实施例中,标志字段包括:时间或编号;原始数据包括:订单数据或服务单数据。
在一些实施例中,数据汇总模块504用于从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据;其中,高维度的标志字段区间根据低维度的标志字段区间内汇总数据进行汇总。
数据存储模块506,用于根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对汇总数据进行存储。
在一些实施例中,区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。区间树中叶子节点包括最低维度的标志字段区间的两个端点值和对应的汇总数据;区间树中非叶子节点的子节点按照标志字段区间值由小到大的顺序从左至右进行排列。
下面结合图6描述本公开数据存储装置的另一些实施例。
图6为本公开数据存储装置的另一些实施例的结构图。如图6所示,该实施例的装置60包括:元数据获取模块602,数据汇总模块604,数据存储模块606,分别与元数据获取模块502,数据汇总模块504,数据存储模块506实现相同或相似的功能。装置60还包括:查询请求获取模块608,数据查询模块610,数据返回模块612。
查询请求获取模块608,用于获取用户的查询请求,查询请求包括:待查询标志字段区间,待查询汇总数据的类型。
数据查询模块610,用于根据待查询标志字段区间在区间树中查找相匹配节点;根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据。
在一些实施例中,数据查询模块610用于在待查询标志字段区间与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点;或者在待查询标志字段区间的一部分与区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配;或者在待查询标志字段区间被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配;或者在待查询标志字段区间的一部分被包含在区间树中节点的标志字段区间内的情况下,将待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。
在一些实施例中,数据查询模块610用于在区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;在区间树中相同层级的节点中,按照由左到右顺序,将待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
数据返回模块612,用于将与待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
在一些实施例中,装置60还包括:数据插入模块614,用于根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点;根据待插入节点的标志字段区间和区间树中各节点对应的预设最大标志字段区间,确定待插入节点的父节点;将待插入节点插入对应的父节点之下,并根据待插入节点的标志字段区间和汇总数据,修改待插入节点的上层节点的标志字段区间和汇总数据。
在一些实施例中,数据插入模块614用于根据待插入节点的标志字段区间的维度,确定待插入节点在区间树中的层级,在待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含待插入节点的标志字段区间的节点,作为待插入节点的父节点。
本公开的实施例中的数据存储装置可各由各种计算设备或计算机系统来实现,下面结合图7以及图8进行描述。
图7为本公开数据存储装置的一些实施例的结构图。如图7所示,该实施例的装置70包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行本公开中任意一些实施例中的数据存储方法。
其中,存储器710例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)、数据库以及其他程序等。
图8为本公开数据存储装置的另一些实施例的结构图。如图8所示,该实施例的装置80包括:存储器810以及处理器820,分别与存储器710以及处理器720类似。还可以包括输入输出接口830、网络接口840、存储接口850等。这些接口830,840,850以及存储器810和处理器820之间例如可以通过总线860连接。其中,输入输出接口830为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口840为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口850为SD卡、U盘等外置存储设备提供连接接口。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (20)
1.一种数据存储方法,包括:
获取汇总配置元数据,所述汇总配置元数据包括预设的标志字段区间和预设汇总函数;
根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据;
根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对所述汇总数据进行存储;
其中,所述区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。
2.根据权利要求1所述的数据存储方法,其中,
所述根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总包括:
从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据;
其中,高维度的标志字段区间根据低维度的标志字段区间内汇总数据进行汇总。
3.根据权利要求1所述的数据存储方法,其中,
所述区间树中叶子节点包括最低维度的标志字段区间的两个端点值和对应的汇总数据;
所述区间树中非叶子节点的子节点按照标志字段区间值由小到大的顺序从左至右进行排列。
4.根据权利要求1所述的数据存储方法,还包括:
获取用户的查询请求,所述查询请求包括:待查询标志字段区间,待查询汇总数据的类型;
根据待查询标志字段区间在所述区间树中查找相匹配节点;
根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据;
将与所述待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
5.根据权利要求4所述的数据存储方法,其中,
所述根据待查询标志字段区间,在所述区间树中查找相匹配的节点包括:
在所述待查询标志字段区间与所述区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与所述待查询标志字段区间相匹配的节点;或者
在所述待查询标志字段区间的一部分与所述区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与所述待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配;或者
在所述待查询标志字段区间被包含在所述区间树中节点的标志字段区间内的情况下,将所述待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配;或者
在所述待查询标志字段区间的一部分被包含在所述区间树中节点的标志字段区间内的情况下,将所述待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将所述待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。
6.根据权利要求4所述的数据存储方法,其中,
所述根据待查询标志字段区间,在所述区间树中查找相匹配的节点包括:
在所述区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将所述待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;
在所述区间树中相同层级的节点中,按照由左到右顺序,将所述待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
7.根据权利要求1所述的数据存储方法,还包括:
根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点;
根据所述待插入节点的标志字段区间和所述区间树中各节点对应的预设最大标志字段区间,确定所述待插入节点的父节点;
将所述待插入节点插入对应的父节点之下,并根据所述待插入节点的标志字段区间和汇总数据,修改所述待插入节点的上层节点的标志字段区间和汇总数据。
8.根据权利要求7所述的数据存储方法,其中,
所述根据所述待插入节点的标志字段区间和所述区间树中各节点对应的预设最大标志字段区间,确定所述待插入节点的父节点包括:
根据所述待插入节点的标志字段区间的维度,确定所述待插入节点在所述区间树中的层级;
在所述待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含所述待插入节点的标志字段区间的节点,作为所述待插入节点的父节点。
9.根据权利要求1-8任一项所述的数据存储方法,其中,
所述标志字段包括:时间或编号;
所述原始数据包括:订单数据或服务单数据。
10.一种数据存储装置,包括:
元数据获取模块,用于获取汇总配置元数据,所述汇总配置元数据包括预设的标志字段区间和预设汇总函数;
数据汇总模块,用于根据预设汇总函数对不同预设的标志字段区间内的原始数据进行汇总,得到不同标志字段区间内的汇总数据;
数据存储模块,用于根据每个标志字段区间值和对应的汇总数据生成节点,并按照各个标志字段区间之间的关系生成区间树,以对所述汇总数据进行存储;
其中,所述区间树中父节点的标志字段区间长度为各个子节点的标志字段区间长度之和。
11.根据权利要求10所述的数据存储装置,其中,
所述数据汇总模块用于从最低维度的标志字段区间开始,按照维度由低到高,依次根据预设汇总函数汇总不同维度的标志字段区间内的数据;其中,高维度的标志字段区间根据低维度的标志字段区间内汇总数据进行汇总。
12.根据权利要求10所述的数据存储装置,其中,
所述区间树中叶子节点包括最低维度的标志字段区间的两个端点值和对应的汇总数据;
所述区间树中非叶子节点的子节点按照标志字段区间值由小到大的顺序从左至右进行排列。
13.根据权利要求10所述的数据存储装置,还包括:
查询请求获取模块,用于获取用户的查询请求,所述查询请求包括:待查询标志字段区间,待查询汇总数据的类型;
数据查询模块,用于根据待查询标志字段区间在所述区间树中查找相匹配节点;根据待查询汇总数据的类型,读取相匹配的节点中相应类型的汇总数据;
数据返回模块,用于将与所述待查询标志字段区间相匹配的节点中读取的汇总数据进行汇总,并返回至用户。
14.根据权利要求13所述的数据存储装置,其中,
所述数据查询模块用于在所述待查询标志字段区间与所述区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与所述待查询标志字段区间相匹配的节点;或者在所述待查询标志字段区间的一部分与所述区间树中节点的标志字段区间完全重合的情况下,则将该节点作为与所述待查询标志字段区间相匹配的节点,将待查询标志字段区间的剩余部分与该节点的兄弟节点继续进行匹配;或者在所述待查询标志字段区间被包含在所述区间树中节点的标志字段区间内的情况下,将所述待查询标志字段区间与该节点的子节点的标志字段区间继续进行匹配;或者在所述待查询标志字段区间的一部分被包含在所述区间树中节点的标志字段区间内的情况下,将所述待查询标志字段区间被包含的部分与该节点的子节点的标志字段区间继续进行匹配,将所述待查询标志字段区间的剩余部分与该节点的兄弟节点的标志字段区间继续进行匹配。
15.根据权利要求13所述的数据存储装置,其中,
所述数据查询模块用于在所述区间树中不同层级的节点中,按照由根节点到叶子节点的顺序,将所述待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配;在所述区间树中相同层级的节点中,按照由左到右顺序,将所述待查询标志字段区间的端点值与节点的标志字段区间的端点值进行匹配,以查找相匹配的节点。
16.根据权利要求10所述的数据存储装置,还包括:
数据插入模块,用于根据预设的标志字段区间和预设汇总函数,将待插入数据生成不同标志字段区间内的待插入汇总数据,并生成待插入节点;根据所述待插入节点的标志字段区间和所述区间树中各节点对应的预设最大标志字段区间,确定所述待插入节点的父节点;将所述待插入节点插入对应的父节点之下,并根据所述待插入节点的标志字段区间和汇总数据,修改所述待插入节点的上层节点的标志字段区间和汇总数据。
17.根据权利要求16所述的数据存储装置,其中,
所述数据插入模块用于根据所述待插入节点的标志字段区间的维度,确定所述待插入节点在所述区间树中的层级,在所述待插入节点的上一层节点中,查找对应的预设最大标志字段区间包含所述待插入节点的标志字段区间的节点,作为所述待插入节点的父节点。
18.根据权利要求10-17任一项所述的数据存储装置,其中,
所述标志字段包括:时间或编号;
所述原始数据包括:订单数据或服务单数据。
19.一种数据存储装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器设备中的指令,执行如权利要求1-9任一项所述的数据存储方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现权利要求1-9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144928.1A CN109388659B (zh) | 2018-09-29 | 2018-09-29 | 数据存储方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144928.1A CN109388659B (zh) | 2018-09-29 | 2018-09-29 | 数据存储方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388659A true CN109388659A (zh) | 2019-02-26 |
CN109388659B CN109388659B (zh) | 2021-06-29 |
Family
ID=65418724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811144928.1A Active CN109388659B (zh) | 2018-09-29 | 2018-09-29 | 数据存储方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388659B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309496A (zh) * | 2019-06-24 | 2019-10-08 | 招商局金融科技有限公司 | 数据汇总方法、电子装置及计算机可读存储介质 |
CN111352924A (zh) * | 2020-02-28 | 2020-06-30 | 中国工商银行股份有限公司 | 解决数据倾斜问题的方法及装置 |
CN112579641A (zh) * | 2019-09-30 | 2021-03-30 | 北京国双科技有限公司 | 数据的查询方法及装置、存储介质、电子设备 |
CN113505181A (zh) * | 2020-09-29 | 2021-10-15 | 西部证券股份有限公司 | 基于dolphindb数据库的衍生时序数据制作方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120036111A1 (en) * | 2007-12-06 | 2012-02-09 | Subhransu Basu | Virtual columns |
CN102508866A (zh) * | 2011-10-09 | 2012-06-20 | 中国电子科技集团公司第二十八研究所 | 基于数字寻址的指挥关系树结构化存储与快速处理方法 |
CN102567361A (zh) * | 2010-12-23 | 2012-07-11 | 金蝶软件(中国)有限公司 | 数据表格分层汇总的方法及装置 |
CN105393249A (zh) * | 2013-06-28 | 2016-03-09 | 微软技术许可有限责任公司 | 针对查询优化的范围分区统计数据的增量式维护 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
-
2018
- 2018-09-29 CN CN201811144928.1A patent/CN109388659B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120036111A1 (en) * | 2007-12-06 | 2012-02-09 | Subhransu Basu | Virtual columns |
CN102567361A (zh) * | 2010-12-23 | 2012-07-11 | 金蝶软件(中国)有限公司 | 数据表格分层汇总的方法及装置 |
CN102508866A (zh) * | 2011-10-09 | 2012-06-20 | 中国电子科技集团公司第二十八研究所 | 基于数字寻址的指挥关系树结构化存储与快速处理方法 |
CN105393249A (zh) * | 2013-06-28 | 2016-03-09 | 微软技术许可有限责任公司 | 针对查询优化的范围分区统计数据的增量式维护 |
CN106648446A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于时序数据的存储方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
LIN Y: "A dynamic method for metadata partitioning based on intensive access of spatial data", 《IEEE》 * |
李爽: "基于多级信息网格的海量遥感数据存储管理研究", 《测绘学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309496A (zh) * | 2019-06-24 | 2019-10-08 | 招商局金融科技有限公司 | 数据汇总方法、电子装置及计算机可读存储介质 |
CN110309496B (zh) * | 2019-06-24 | 2023-08-22 | 招商局金融科技有限公司 | 数据汇总方法、电子装置及计算机可读存储介质 |
CN112579641A (zh) * | 2019-09-30 | 2021-03-30 | 北京国双科技有限公司 | 数据的查询方法及装置、存储介质、电子设备 |
CN111352924A (zh) * | 2020-02-28 | 2020-06-30 | 中国工商银行股份有限公司 | 解决数据倾斜问题的方法及装置 |
CN111352924B (zh) * | 2020-02-28 | 2024-02-27 | 中国工商银行股份有限公司 | 解决数据倾斜问题的方法及装置 |
CN113505181A (zh) * | 2020-09-29 | 2021-10-15 | 西部证券股份有限公司 | 基于dolphindb数据库的衍生时序数据制作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109388659B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907244B2 (en) | Modifying field definitions to include post-processing instructions | |
US20220342875A1 (en) | Data preparation context navigation | |
CN108874971B (zh) | 一种应用于海量标签化实体数据存储的工具和方法 | |
CN109388659A (zh) | 数据存储方法、装置和计算机可读存储介质 | |
CN105550241B (zh) | 多维数据库查询方法及装置 | |
CN102426582B (zh) | 数据操作管理装置和数据操作管理方法 | |
US20170337229A1 (en) | Spatial indexing for distributed storage using local indexes | |
US10733172B2 (en) | Method and computing device for minimizing accesses to data storage in conjunction with maintaining a B-tree | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和系统 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN111078781A (zh) | 一种多源流式大数据融合汇聚处理框架模型实现方法 | |
CN108763323A (zh) | 基于资源集和大数据技术的气象格点文件应用方法 | |
CN113553458A (zh) | 图数据库中的数据导出方法及装置 | |
US20230385308A1 (en) | Conversion and migration of key-value store to relational model | |
CN111125045B (zh) | 一种轻量级etl处理平台 | |
CN112800054A (zh) | 数据模型的确定方法、装置、设备及存储介质 | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
US9092472B1 (en) | Data merge based on logical segregation | |
JPH09305622A (ja) | 文書検索機能を有するデータベース管理方法およびシステム | |
CN117520606B (zh) | 一种异构数据源导入图数据库的方法及装置 | |
WO2017115419A1 (ja) | 出力データの生成方法、計算機システム、及びプログラム | |
CN118467781A (zh) | 通用网状数据库的实现方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |