当前位置: 首页 > 专利查询>吴建凰专利>正文

一种用于时序数据库的数据块存储方法技术

技术编号:16969594 阅读:56 留言:0更新日期:2018-01-07 06:33
本发明专利技术公开了一种用于时序数据库的数据块存储方法,如图2,使用大块连续的内存记录时序数据,然后在大块内存的写入文件中,这样极大地提高了时序数据库的吞吐量。由于更新数据和实时数据查询这些频繁的操作,而操作的是大块连续的内存,其处理效率也较为理想,能够满足大型时序数据的处理要求。在保存时序数据时,先保存索引,再保存实际数据块,如图3。在索引文件中每个数据库的记录都是按时间增加的,所以在查找时可以直接使用二分法的方法查找指定时间数据库,历史数据查找高效。

【技术实现步骤摘要】
一种用于时序数据库的数据块存储方法
本专利技术涉及时序数据存储领域,可用于GPS、环境温度、湿度、风向、PM2.5等带时间标签数据的存储。
技术介绍
时序数据库广泛应用于各个领域,例如GPS、环境温度、湿度、风向、PM2.5等带时间标签的数据。同时,时序数据库有很多类型,例如PTimeDb、蜂鸟数据库、inflluxdb时序数据库等。其中,PTimeDb是唯一在相关行业中有商业应用的时序数据库,具有较高的吞吐量和并发效率。但是,这些时序数据库存在着不同的缺点,例如没有明确适应的时序数据类型、并发量不够、吞吐量不够、查询效率不能满足某些应用等。针对GPS类型的时序数据库,要求有很高的插入效率与实时查询效率。例如,100万量车每秒提交GPS数据,这样就需要100万每秒的插入效率,而一天就需要存储860亿个GPS数据;如果前端有10万个用户就需要10万次每秒的查询效率,一天需要执行86亿次查询。GPS数据的查询很多需要区域查询,如果使用上文提到的数据库均很难满足要求。如果使用数据块的存储方法,先将数据在内存中组织成块,等大块内存都用完后将数据写入文件中,能够有效地解决大量数据的插入与查询问题。
技术实现思路
本专利技术提供一种用于时序数据库的数据块存储方法,以解决时序数据写入与查询的问题。具体步骤如下:S1:如图1,分配一大块内存,按一个记录的大小分为N块,然后将这N块内存按照链表的方式按顺序组织起来,该链表称为空闲链表。S2:如图2,使用映射表的方式记录ID、起始位置和结束位置的关系。S3:接收数据更新,首先判断在映射表中是否有当前ID。没有转到S4,否则转到S7。S4:判断空闲链表是否为空;不为空转到S5,为空转到S6。S5:从空闲链表中取出头结点,并将数据写入当前结点。在映射表中增加记录ID,起始位置和末尾位置都为该结点位置。转S3继续更新数据,转S10进行数据查询。S6:如图3,将整块数据写入文件,在索引文件中追加前数据块的起始时间、结束时间、数据块在文件中的位置和数据块大小;再重新按链表的方式按顺序组织N块内存,清空映射表。转S3则继续处理当前接收的数据。S7:判断空闲链表是否为空,不为空转到S8,为空转到S9。S8:从空闲链表中取出头结点,并将数据写入当前结点。更新映射表中对应ID的结束位置为该结点位置。转S3继续更新数据,转S10进行数据查询。S9:将整块数据写入文件,在索引文件中追加记录当前数据块的起始时间和结束时间。转S3继续处理当前接收的数据。S10:接收查询请求,判断查询请求中有没有指定时间。有认为查询历史数据,转到S11;否则查询实时数据,转到S13。S11:打开索引文件,在索引文件中找到指定时间的数据块信息。S12:在数据文件中读取指定的数据块到内存中。S13:初始化结果集R。判断是否有指定条件,若没有指定,则将当前内存中的数据赋值到结果集R中,转到S15;若有指定条件,则转到S14。S14:根据条件1,查询当前内存中的记录,并将结果记录在R中。条件2及以上条件在R中查找,并将查询到的数据重新写入R中。S15:将结果集R返回。附图说明图1是数据块的内存组织关系。图2是映射表与数据块组织的关系。图3是历史数据块的存储方式。具体实施方式运动中的车辆包含ID、实时GPS和实时速度信息,以下结合运动中的车辆信息对本专利技术作进一步详细说明,但不作为对本专利技术的限定。包括步骤如下:S1:如图1,分配一个100MB的内存,一个记录需要100字节,将这100MB内存分为N个100字节的内存块,然后将这N个内存块按照链表的方式按顺序组织起来,该链表称为空闲链表。S2:如图2,使用哈希映射表的方式记录ID、起始位置和结束位置的关系。S3:接收数据更新,首先判断在哈希映射表中是否有当前ID。没有转到S4,否则转到S7。S4:判断空闲链表是否为空,不为空转到S5,为空转到S6。S5:从空闲链表中取出头结点,并将接收的ID、GPS和速度信息写入当前结点。在哈希映射表中增加记录当前ID,起始位置和末尾位置都为该结点的内存地址。转S3继续更新数据,转S10进行数据查询。S6:如图3,将整块数据写入记录文件,在索引文件中追加前数据块的起始时间、结束时间、数据块在文件中的位置和数据块大小。重新按链表的方式按顺序组织N块内存,清空映射表。转S3继续处理当前接收的数据。S7:判断空闲链表是否为空,不为空转到S8,为空转到S9。S8:从空闲链表中取出头结点,并将数据写入当前结点。更新映射表中对于ID的结束位置为该结点位置。转S3继续更新数据,转S10进行数据查询。S9:将整块数据写入文件,在索引文件中追加记录当前数据块的起始时间和结束时间。转S3继续处理当前接收的数据。S10:接收查询请求,判断查询请求中有没有指定时间。有认为查询历史数据转到S11;否则查询实时数据,转到S13。S11:打开索引文件,在索引文件中找到指定时间的数据块信息。S12:在数据文件中读取指定的数据块到内存中。S13:初始化结果集R。判断是否有指定条件,若没有指定,则将当前内存中的数据赋值到结果集R中,转到S15;若有指定条件,则转到S14。S14:根据条件1,查询当前内存中的记录,并将结果记录在R中。条件2及以上条件在R中查找,并将查询到的数据重新写入R中。S15:将结果集R返回。上述说明示出并描述了本专利技术的若干优选实施例,但如前所述,应当理解本专利技术并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述专利技术构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本专利技术的精神和范围,则都应在本专利技术所附权利要求的保护范围内。本文档来自技高网...
一种用于时序数据库的数据块存储方法

【技术保护点】
一种用于时序数据库的数据块存储方法,其特征在于包括,如图1,分配一大块内存,按一个记录的大小分为N块,然后将这N块内存按照链表的方式按顺序组织起来,该链表称为空闲链表。

【技术特征摘要】
1.一种用于时序数据库的数据块存储方法,其特征在于包括,如图1,分配一大块内存,按一个记录的大小分为N块,然后将这N块内存按照链表的方式按顺序组织起来,该链表称为空闲链表。2.如图2,使用映射表的方式记录ID、起始位置和结束位置的关系。3.接收数据更新,首先判断在映射表中是否有当前ID。4.从空闲链表中取出头结点,并将数据写入当前结点;在映射表中增加记录ID、起始位置和末尾位置都为该结点位置。5.如图3,将整块数据写入文件,在索引文件中追加前数据块的起始时间、结束时间、数据块在文件中的位置和数据块大小,再重...

【专利技术属性】
技术研发人员:吴建凰
申请(专利权)人:吴建凰
类型:发明
国别省市:福建,35

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

1