CN107544964A - 一种用于时序数据库的数据块存储方法 - Google Patents
一种用于时序数据库的数据块存储方法 Download PDFInfo
- Publication number
- CN107544964A CN107544964A CN201610463626.5A CN201610463626A CN107544964A CN 107544964 A CN107544964 A CN 107544964A CN 201610463626 A CN201610463626 A CN 201610463626A CN 107544964 A CN107544964 A CN 107544964A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- file
- time series
- chained list
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于时序数据库的数据块存储方法,如图2,使用大块连续的内存记录时序数据,然后在大块内存的写入文件中,这样极大地提高了时序数据库的吞吐量。由于更新数据和实时数据查询这些频繁的操作,而操作的是大块连续的内存,其处理效率也较为理想,能够满足大型时序数据的处理要求。在保存时序数据时,先保存索引,再保存实际数据块,如图3。在索引文件中每个数据库的记录都是按时间增加的,所以在查找时可以直接使用二分法的方法查找指定时间数据库,历史数据查找高效。
Description
技术领域
本发明涉及时序数据存储领域,可用于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返回。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (11)
1.一种用于时序数据库的数据块存储方法,其特征在于包括,
如图1,分配一大块内存,按一个记录的大小分为N块,然后将这N块内存按照链表的方式按顺序组织起来,该链表称为空闲链表。
2.如图2,使用映射表的方式记录ID、起始位置和结束位置的关系。
3.接收数据更新,首先判断在映射表中是否有当前ID。
4.从空闲链表中取出头结点,并将数据写入当前结点;在映射表中增加记录ID、起始位置和末尾位置都为该结点位置。
5.如图3,将整块数据写入文件,在索引文件中追加前数据块的起始时间、结束时间、数据块在文件中的位置和数据块大小,再重新按链表的方式按顺序组织N块内存,清空映射表。
6.接收查询请求,判断查询请求中有没有指定时间,有认为查询历史数据,转到7;否则查询实时数据,转到9。
7.打开索引文件,在索引文件中找到指定时间的数据块信息。
8.在数据文件中读取指定的数据块到内存中。
9.初始化结果集R,判断是否有指定条件;若没有指定,则将当前内存中的数据赋值到结果集R中,转到11;若有指定条件,则转到10。
10.根据条件1,查询当前内存中的记录,并将结果记录在R中;条件2及以上条件在R中查找,并将查询到的数据重新写入R中。
11.将结果集R返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610463626.5A CN107544964A (zh) | 2016-06-24 | 2016-06-24 | 一种用于时序数据库的数据块存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610463626.5A CN107544964A (zh) | 2016-06-24 | 2016-06-24 | 一种用于时序数据库的数据块存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107544964A true CN107544964A (zh) | 2018-01-05 |
Family
ID=60960956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610463626.5A Pending CN107544964A (zh) | 2016-06-24 | 2016-06-24 | 一种用于时序数据库的数据块存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544964A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399263A (zh) * | 2018-03-15 | 2018-08-14 | 北京大众益康科技有限公司 | 时序数据的存储和查询方法及存储和处理平台 |
CN108776704A (zh) * | 2018-06-12 | 2018-11-09 | 东方电子股份有限公司 | 一种基于回归分析的时序数据索引方法 |
CN110543496A (zh) * | 2019-09-06 | 2019-12-06 | 中国联合网络通信集团有限公司 | 用于时序数据库集群的数据处理方法和装置 |
CN111857581A (zh) * | 2020-07-06 | 2020-10-30 | 浙江鸿泉电子科技有限公司 | 一种数据存储的处理方法及系统 |
CN112052243A (zh) * | 2020-09-08 | 2020-12-08 | 贵州乌江水电开发有限责任公司东风发电厂 | 一种基于数据库技术的连续波形记录方法 |
CN112181973A (zh) * | 2019-07-01 | 2021-01-05 | 北京涛思数据科技有限公司 | 一种时序数据的存储方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、系统及数据缓存装置 |
CN102446184A (zh) * | 2010-10-12 | 2012-05-09 | 上海可鲁系统软件有限公司 | 一种基于时间序列的工业数据存储及索引方法 |
CN102890722A (zh) * | 2012-10-25 | 2013-01-23 | 国家电网公司 | 应用于时序历史数据库的索引方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
CN104077405A (zh) * | 2014-07-08 | 2014-10-01 | 国家电网公司 | 时序类型数据存取方法 |
CN104156385A (zh) * | 2014-06-24 | 2014-11-19 | 北京京东尚科信息技术有限公司 | 一种处理时间序列数据的方法和装置 |
CN105242882A (zh) * | 2015-10-13 | 2016-01-13 | 东方网力科技股份有限公司 | 时序数据的帧存储方法及装置、时序数据查询方法及装置 |
CN105469173A (zh) * | 2014-08-19 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种静态内存进行优化管理的方法 |
-
2016
- 2016-06-24 CN CN201610463626.5A patent/CN107544964A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、系统及数据缓存装置 |
CN102446184A (zh) * | 2010-10-12 | 2012-05-09 | 上海可鲁系统软件有限公司 | 一种基于时间序列的工业数据存储及索引方法 |
CN102890722A (zh) * | 2012-10-25 | 2013-01-23 | 国家电网公司 | 应用于时序历史数据库的索引方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
CN104156385A (zh) * | 2014-06-24 | 2014-11-19 | 北京京东尚科信息技术有限公司 | 一种处理时间序列数据的方法和装置 |
CN104077405A (zh) * | 2014-07-08 | 2014-10-01 | 国家电网公司 | 时序类型数据存取方法 |
CN105469173A (zh) * | 2014-08-19 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种静态内存进行优化管理的方法 |
CN105242882A (zh) * | 2015-10-13 | 2016-01-13 | 东方网力科技股份有限公司 | 时序数据的帧存储方法及装置、时序数据查询方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108399263A (zh) * | 2018-03-15 | 2018-08-14 | 北京大众益康科技有限公司 | 时序数据的存储和查询方法及存储和处理平台 |
CN108776704A (zh) * | 2018-06-12 | 2018-11-09 | 东方电子股份有限公司 | 一种基于回归分析的时序数据索引方法 |
CN108776704B (zh) * | 2018-06-12 | 2021-05-11 | 东方电子股份有限公司 | 一种基于回归分析的时序数据索引方法 |
CN112181973A (zh) * | 2019-07-01 | 2021-01-05 | 北京涛思数据科技有限公司 | 一种时序数据的存储方法 |
CN112181973B (zh) * | 2019-07-01 | 2023-05-30 | 北京涛思数据科技有限公司 | 一种时序数据的存储方法 |
CN110543496A (zh) * | 2019-09-06 | 2019-12-06 | 中国联合网络通信集团有限公司 | 用于时序数据库集群的数据处理方法和装置 |
CN111857581A (zh) * | 2020-07-06 | 2020-10-30 | 浙江鸿泉电子科技有限公司 | 一种数据存储的处理方法及系统 |
CN112052243A (zh) * | 2020-09-08 | 2020-12-08 | 贵州乌江水电开发有限责任公司东风发电厂 | 一种基于数据库技术的连续波形记录方法 |
CN112052243B (zh) * | 2020-09-08 | 2021-05-14 | 贵州乌江水电开发有限责任公司东风发电厂 | 一种基于数据库技术的连续波形记录方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107544964A (zh) | 一种用于时序数据库的数据块存储方法 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN104346357B (zh) | 一种嵌入式终端的文件存取方法及系统 | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
CN102663090B (zh) | 元数据查询方法和装置 | |
WO2020041928A1 (zh) | 数据存储方法、系统及终端设备 | |
CN103229164B (zh) | 数据访问方法和装置 | |
WO2018063585A1 (en) | Techniques to manage key-value storage at a memory or storage device | |
CN103049473A (zh) | 一种数据查询方法及装置 | |
US8676788B2 (en) | Structured large object (LOB) data | |
CN104090987A (zh) | 一种历史数据存储及索引方法 | |
CN105117355A (zh) | 存储器、存储器系统及其数据处理方法 | |
CN110362549A (zh) | 日志存储检索方法、电子装置及计算机设备 | |
CN104598519A (zh) | 一种基于连续内存的数据库索引系统及处理方法 | |
CN102184229A (zh) | 一种海量rfid标签信息的内存数据存储方法 | |
CN103186668A (zh) | 基于键值数据库的数据处理方法与装置以及数据存储系统 | |
CN109582598A (zh) | 一种基于外部存储实现高效查找哈希表的预处理方法 | |
CN109690522A (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
CN103488727A (zh) | 基于周期对数的二维时序数据存储和查询方法 | |
CN104021223A (zh) | 一种集群数据库测点的访问方法及装置 | |
CN104615459A (zh) | 一种MoCA设备参数配置方法及装置 | |
CN102651674B (zh) | 一种反射内存网数据传输方法 | |
CN108717448B (zh) | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 | |
CN110109763A (zh) | 一种共享内存管理方法及装置 | |
CN102650972A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180105 |
|
WD01 | Invention patent application deemed withdrawn after publication |