CN109739811B - 支持双维度查询海量监测数据的存储方法 - Google Patents
支持双维度查询海量监测数据的存储方法 Download PDFInfo
- Publication number
- CN109739811B CN109739811B CN201811509713.5A CN201811509713A CN109739811B CN 109739811 B CN109739811 B CN 109739811B CN 201811509713 A CN201811509713 A CN 201811509713A CN 109739811 B CN109739811 B CN 109739811B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- block
- point
- sub
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种支持双维度查询海量监测数据的存储方法,用于工业监测类系统实时采集数据时历史数据的存储及查询。该存储方法包括:创建数据文件群和索引文件;所述数据文件群包括按时间顺序排列的若干个数据文件;每个数据文件均包括若干数据块,每个数据块按采集点分为若干个子数据块;每个子数据块按采集点的ID顺序存储,同时存储有数据点的目录及索引信息;将一段时间内采集的历史数据存储在数据文件的同一数据块中;索引文件记录数据文件中数据的时间信息。该存储方式具有支持双维度查询和检索高效的优点。
Description
技术领域
本发明涉及海量监测数据存储与查询技术领域,具体的说,涉及了一种支持双维度查询海量监测数据的存储方法。
背景技术
铁路信号集中监测系统需要将采集到的状态量数据和模拟量数据,转换为浮点数和整数存储起来。但是,需要采集的路数较多,通常在几千路到几万路不等;且采集周期短,通常1秒钟左右,有时可能会更短。那么,采集的数据量就很大,一年最高就可达上万亿条数据,对于采集后数据的存储和后续的查询,都提出了很高的要求。
目前,铁路信号集中监测系统铁路信号集中监测系统需要对存储后的历史数据从两个不同的维度进行查询,分别为:(1)从单点数据的维度: 查询单个或几个少数数据点长时间跨度的数据,时间范围从几分钟到几天不等,可以认为从“纵向”对数据进行查询。(2)从多点数据的维度:查询多个数据点或所有数据点一个较短时间范围内的数据,查询范围通常在一个小时以内,可以认为从“横向”对数据进行查询。但是,通常采用的关系型数据库,按库表的方式存储,无法满足上述要求。
为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,从而提供一种支持双维度查询海量监测数据的存储方法。
为了实现上述目的,本发明所采用的技术方案是:一种支持双维度查询海量监测数据的存储方法,用于存储工业监测类系统采集的历史数据,包括:创建数据文件群和索引文件;所述数据文件群包括按时间顺序排列的若干个数据文件;每个数据文件均包括若干个数据块,按采集点将数据块分为若干个子数据块;一个子数据块存储一个采集点一段时间的历史数据,每个子数据块按ID顺序存储在数据块中;获取采集设备的历史数据,将所述历史数据存储在同一个数据块中;根据预设条件,当一个数据文件存储完毕后,将该数据文件中所有记录的时间信息存储在所述索引文件中。
基于上述,将所采集设备抽象处理为模拟量数据或状态量数据;所述模拟量数据包括开状态数据和模拟量数据,所述状态量数据包括继电器的触点状态、信号灯所显示的颜色信息等可以用计算机整数表示的数据,所述模拟量数据包括电压值和电流值等可以用计算机浮点数表示的数据;所述数据块包括子数据块1、子数据块2……子数据块n;所述子数据块n用于存储第n个采集点的历史数据,该第n个采集点的历史数据抽象为:数据点11、数据点12……数据点1n;其中,每个数据点存储数据的值及该值的时间信息。
本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说:
1)本发明提供了一种支持双维度查询海量监测数据的存储方法,用于存储工业监测类系统所采集的历史数据,满足了对存储后的历史数据从两个不同的维度进行查询;
2)纵向数据查询为:查询单个或几个数据点长时间跨度的数据,此类查询的特点是时间跨度长,数据点少;
由于,本发明中单个数据点的数据记录在数据文件的数据块中是存放在一起的,一次便可以读取单个数据点一段时间的所有数据,极大地提高了单点数据的查询速度;
3)横向数据查询为:查询多个数据点或所有数据点在一个较短时间范围内的数据,时间范围从几秒钟到几个小时不等,此类查询的特点是时间跨度比较短,数据点多;
由于,本发明中一个数据块中存放了所有数据点在一个时间段内的所有历史数据,进一步加快了数据的查询速度。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
实施例1
一种支持双维度查询海量监测数据的存储方法,用于存储工业监测类系统所采集的历史数据,包括:
创建数据文件群和索引文件;所述数据文件群包括按时间顺序排列的若干个数据文件;每个数据文件均包括若干个数据块,按采集点将数据块分为若干个子数据块;一个子数据块存储一个采集点一段时间的历史数据,每个子数据块按ID顺序存储在数据块中。
获取采集设备的历史数据,将所述历史数据存储在同一个数据块中;其中,将所采集设备抽象处理为模拟量数据或状态量数据;所述模拟量数据包括开状态数据和模拟量数据,所述状态量数据包括继电器的触点状态、信号灯所显示的颜色信息等可以用计算机整数表示的数据,所述模拟量数据包括电压值和电流值等可以用计算机浮点数表示的数据;
所述数据块包括子数据块1、子数据块2……子数据块n;
所述子数据块n用于存储第n个采集点的历史数据,该第n个采集点的历史数据抽象为:数据点11、数据点12……数据点1n;其中,每个数据点存储数据的值及该值的时间信息。
根据预设条件,当一个数据文件存储完毕后,将该数据文件中所有记录的时间信息存储在所述索引文件中。
具体的,每个所述数据块还包括数据点索引表,所述数据点索引表依次存储数据点总数、数据点ID号、数据点的数据偏移和数据点的数据长度。每个所述数据块存储预设时间范围内的火车车站的地面电气设备及信号设备的历史数据。所述预设时间范围根据实际情况,从几分钟到24小时灵活调整。
对存储后的历史数据从两个不同的维度进行查询;
(1)纵向数据查询为:查询单个数据点长时间跨度的数据,时间跨度从几秒钟到一个月甚至一年;此类查询的特点是时间跨度长,数据点少;
查询方法为:
输入待查询数据点的名称和时间范围;根据该时间范围读取索引文件,遍历从时间范围的开始时间到结束时间中包含的数据文件列表;逐个读取数据文件列表中的数据文件,从数据文件中获取需要查询历史数据,然后按顺序合并数据即可;单个数据文件的读取流程如下:
1)打开数据文件,读取该数据文件的目录块,获取该数据文件的开始时间和结束时间范围内的所有目录项列表;
2)遍历所述目录列表中的数据块,根据所述目录列表中的“数据块在文件中的偏移”信息,将文件读取指针移动到数据块在该数据文件中的偏移位置,读取该数据块头部的数据点索引表,获得待查询数据点在该数据块中的偏移位置,然后读取数据点的数据;
3)按顺序合并所有数据块中的数据;返回本数据文件中读取到的数据;由于,在每个数据块的数据点索引表中的数据点是按ID顺序存放,在查询时,可用二分法加快查找速度。
由于,本发明中单个数据点的数据记录在数据文件的数据块中是存放在一起的,一次便可以读取单个数据点一段时间的所有数据,极大地提高了单点数据的查询速度;
(2)横向数据查询为:查询多个数据点或所有数据点在一个较短时间范围内的数据,时间范围从几秒钟到几个小时不等,此类查询的特点是时间跨度比较短,数据点多;
查询方法为:
输入多个待查询的数据点的名称和时间范围;根据该时间范围读取索引文件,遍历从时间范围的开始时间到结束时间中包含的数据文件列表;逐个读取数据文件列表中的数据文件,从数据文件中获取所有符合条件的数据点历史数据,然后按顺序合并数据即可;单个数据文件的读取流程如下:
1)打开数据文件,读取该数据文件的目录块,获取该数据文件的开始时间和结束时间范围内的所有目录项列表;
2) 遍历所述目录列表中的数据块,根据所述目录列表中的“数据块在文件中的偏移”信息,将文件读取指针移动到数据块在该数据文件中的偏移位置,将整个数据块读取到计算机的内存中;
3)根据内存中数据块的数据点的数据点索引表,从数据点索引表中筛选待查询的数据点的数据;由于此时是在内存中操作,挑选数据点速度不受磁盘的限制;
4)按顺序合并所有内存中符合条件的数据;返回本数据文件中读取到的数据。
实施例2
本实施例与实施例1的区别在于:所述索引文件包括索引文件头、文件目录项数目和若干文件目录项;
一个文件目录项对应描述一个数据文件的开始时间、开始记录号、结束时间和结束记录号。
索引文件对多个数据文件中的数据进行描述,描述了各个数据文件中数据的开始和结束时间。查询数据时,先根据索引文件的内容,查找数据文件,可以避免遍历数据文件,加快查找速度。
所述数据文件包括:文件头,目录块,数据块。整个数据文件包括文件头、目录块和数据块,其中,文件头仅有一个,位于文件头部,大小固定。一个目录块描述多个数据块的数据信息,一个目录块可描述的数据块数目固定。当目录块中的目录项写满后,生成新的目录块,各个目录块首尾串接成一个单向链表。数据文件的整体结构如下表所示:
文件头格式:文件头对整个数据文件进行全局性的描述,记录了整个数据文件存储的数据的时间范围,数据文件的物理顺序,首目录块的位置等信息。其中“文件序号”为文件生成的物理顺序,每生成一个新的数据文件,文件号增一。文件头的整体结构如下表所示:
目录块:目录块由目录块标识、版本、目录块描述的数据的开始和结束时间、下一个目录块位置及目录项列表组成。一个目录块描述了固定数目的数据块的信息,具体数目根据需要设定。目录块的格式如下表所示:
目录项列表的格式如下表所示:
数据块:根据系统设定,将一段时间范围(10分钟到两个小时)内的所有数据存储到一条记录数据块中;在数据块中,各个数据点的数据记录顺序存放,数据块的头部有各个数据点的索引信息。数据块的结构如下表所示:
数据点索引表的结构如下表所示:
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (3)
1.一种支持双维度查询海量监测数据的存储方法,用于存储工业监测类系统采集的历史数据,其特征在于,包括:
创建数据文件群和索引文件;所述数据文件群包括按时间顺序排列的若干个数据文件;
每个数据文件均包括若干个数据块,按采集点将数据块分为若干个子数据块;
一个子数据块存储一个采集点一段时间的历史数据,每个子数据块按ID顺序存储在数据块中;
获取采集设备的历史数据,将所述历史数据存储在同一个数据块中;
根据预设条件,当一个数据文件存储完毕后,将该数据文件中所有记录的时间信息存储在所述索引文件中;
将所采集设备抽象处理为模拟量数据或状态量数据;
所述模拟量数据包括开状态数据和模拟量数据,所述状态量数据包括继电器的触点状态、信号灯所显示的颜色信息等可以用计算机整数表示的数据,所述模拟量数据包括电压值和电流值等可以用计算机浮点数表示的数据;
所述数据块包括子数据块1、子数据块2……子数据块n;
所述子数据块n用于存储第n个采集点的历史数据,该第n个采集点的历史数据抽象为:数据点11、数据点12……数据点1n;其中,每个数据点存储数据的值及该值的时间信息;
每个所述数据块还包括数据点索引表,所述数据点索引表依次存储数据点总数、数据点ID号、数据点的数据偏移和数据点的数据长度。
2.根据权利要求1所述的支持双维度查询海量监测数据的存储方法,其特征在于:每个所述数据块存储预设时间范围内的所采集的所有设备的历史数据。
3.根据权利要求1所述的支持双维度查询海量监测数据的存储方法,其特征在于:所述索引文件包括索引文件头、文件目录项数目和若干文件目录项;
一个文件目录项对应描述一个数据文件的开始时间、开始记录号、结束时间和结束记录号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811509713.5A CN109739811B (zh) | 2018-12-11 | 2018-12-11 | 支持双维度查询海量监测数据的存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811509713.5A CN109739811B (zh) | 2018-12-11 | 2018-12-11 | 支持双维度查询海量监测数据的存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739811A CN109739811A (zh) | 2019-05-10 |
CN109739811B true CN109739811B (zh) | 2023-03-14 |
Family
ID=66358789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811509713.5A Active CN109739811B (zh) | 2018-12-11 | 2018-12-11 | 支持双维度查询海量监测数据的存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739811B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110057407A (zh) * | 2019-05-27 | 2019-07-26 | 山东黄河河务局工程建设中心 | 一种大坝安全监测方法及系统 |
CN110968605A (zh) * | 2019-12-16 | 2020-04-07 | 成都长城开发科技有限公司 | 电表曲线数据的查找方法、装置 |
CN112084145A (zh) * | 2020-09-04 | 2020-12-15 | 深圳科安达电子科技股份有限公司 | 一种铁路信号集中监测系统数据存储读取方法 |
CN113312313B (zh) * | 2021-01-29 | 2023-09-29 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN114116795B (zh) * | 2021-11-01 | 2022-12-20 | 北京力控元通科技有限公司 | 一种数据存储和查询方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010078760A1 (zh) * | 2009-01-09 | 2010-07-15 | 成都市华为赛门铁克科技有限公司 | 一种文件存储方法、装置及文件删除方法和装置 |
CN102890722A (zh) * | 2012-10-25 | 2013-01-23 | 国家电网公司 | 应用于时序历史数据库的索引方法 |
CN102902797A (zh) * | 2012-10-11 | 2013-01-30 | 福建亿同世纪软件有限公司 | 一种大数据量设备实时监测数据的存储及检索方法 |
CN106844555A (zh) * | 2016-12-30 | 2017-06-13 | 江苏瑞中数据股份有限公司 | 一种用于电网wams系统的时序数据存储方法 |
-
2018
- 2018-12-11 CN CN201811509713.5A patent/CN109739811B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010078760A1 (zh) * | 2009-01-09 | 2010-07-15 | 成都市华为赛门铁克科技有限公司 | 一种文件存储方法、装置及文件删除方法和装置 |
CN102902797A (zh) * | 2012-10-11 | 2013-01-30 | 福建亿同世纪软件有限公司 | 一种大数据量设备实时监测数据的存储及检索方法 |
CN102890722A (zh) * | 2012-10-25 | 2013-01-23 | 国家电网公司 | 应用于时序历史数据库的索引方法 |
CN106844555A (zh) * | 2016-12-30 | 2017-06-13 | 江苏瑞中数据股份有限公司 | 一种用于电网wams系统的时序数据存储方法 |
Non-Patent Citations (1)
Title |
---|
工业历史数据库的研究;嵇月强等;《工业控制计算机》;20070825(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109739811A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739811B (zh) | 支持双维度查询海量监测数据的存储方法 | |
CN103605805B (zh) | 一种海量时序数据的存储方法 | |
CN104346357B (zh) | 一种嵌入式终端的文件存取方法及系统 | |
CN104765876B (zh) | 海量gnss小文件云存储方法 | |
CN101216821B (zh) | 数据采集系统的存储管理方法 | |
CN103714134B (zh) | 一种网络流量数据索引方法及系统 | |
US9223801B2 (en) | Information management method and information management apparatus | |
CN108460075B (zh) | 一种文件内容检索方法及系统 | |
CN102456055B (zh) | 兴趣点检索的方法及装置 | |
CN103186668B (zh) | 基于键值数据库的数据处理方法与装置以及数据存储系统 | |
CN103092848A (zh) | 一种图片存储与检索方法 | |
CN102375852A (zh) | 建立数据索引的方法、利用该索引查询数据的方法和系统 | |
CN113297135A (zh) | 数据处理方法以及装置 | |
CN102222099A (zh) | 一种数据存储、查找方法及装置 | |
CN103377210A (zh) | 建立增量型导航数据库的方法和对数据库进行更新的方法 | |
CN109726176B (zh) | 铁路信号电气设备数据的快速存储与查询方法 | |
EP3788505A1 (en) | Storing data items and identifying stored data items | |
CN105787090A (zh) | 一种电力数据的olap系统的索引建立方法和系统 | |
CN103198157A (zh) | 一种大地电场数据的压缩存储处理方法 | |
CN108108358B (zh) | 一种电能质量数据的存储和检索方法 | |
CN105068761A (zh) | 一种便于检索的视频截图存储方法和系统 | |
CN102110125B (zh) | 根据汉字快速查找兴趣点的检索方法 | |
CN111813773A (zh) | 一种电网抄表数据存储方法、上传方法、装置和存储装置 | |
CN112650453B (zh) | 一种用于存储、查询交通数据的方法和系统 | |
CN112684986A (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 |