CN115905122B - 一种飞行航迹数据存储及检索系统、方法及存储介质 - Google Patents
一种飞行航迹数据存储及检索系统、方法及存储介质 Download PDFInfo
- Publication number
- CN115905122B CN115905122B CN202310134016.0A CN202310134016A CN115905122B CN 115905122 B CN115905122 B CN 115905122B CN 202310134016 A CN202310134016 A CN 202310134016A CN 115905122 B CN115905122 B CN 115905122B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- index
- flight path
- primary
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000008707 rearrangement Effects 0.000 claims abstract description 4
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000001914 filtration Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000003111 delayed effect Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000000547 structure data Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- BULVZWIRKLYCBC-UHFFFAOYSA-N phorate Chemical compound CCOP(=S)(OCC)SCSCC BULVZWIRKLYCBC-UHFFFAOYSA-N 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
Abstract
本发明公开了一种飞行航迹数据存储及检索系统、方法及存储介质,属于数据处理技术领域,系统包括:文件结构,用于构成飞行航迹数据的存储形态,包括一级索引文件、二级索引文件以及数据文件;数据存储模块,用于根据文件结构的特点,通过利用多级索引对飞行航迹数据进行时间切片以及小范围时间重排,并将飞行航迹数据以索引分类的方式存储在文件结构中;数据检索模块,用于根据文件结构的特点,通过多级索引检索快速定位一级索引文件和二级索引文件中的飞行航迹数据,实现数据检索。本发明设计的航迹数据存储及快速检索回放方法,满足了高速存储从网络接口乱序到达的多种类型数据帧需求,和快速检索、定位、过滤、回放已存储的历史数据帧的需求。
Description
技术领域
本发明属于飞行数据处理技术领域,具体数据一种飞行航迹数据存储及检索系统、方法及存储介质。
背景技术
在飞行器监测中,空中数据多采用UDP不可靠传输机制收取轨迹、飞行姿态、相机影像、雷达遥感等各种类型的帧结构数据。且由于传感器众多,无线、卫星网络通信固有的物理干扰、信号抖动问题,以及UDP通信协议自身特点,导致地面接收站收取的数据帧在时间上很可能是延迟、乱序到达;同时由于飞行过程中态势数据具有传输快、精度高、数据量大的特点,在对飞行航迹的回溯时,需要快速定位轨迹点,找到相应的数据位置。
发明内容
针对现有技术中的上述不足,本发明提供的飞行航迹数据存储系统、方法及存储介质解决了现有技术难以实现高速存储大量不连续数据,且难以根据查询条件快速读取完整的飞行航迹数据的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种飞行航迹数据存储及检索系统,包括:
文件结构,用于构成飞行航迹数据的存储形态,包括一级索引文件、二级索引文件以及数据文件;
数据存储模块,用于根据文件结构的特点,通过利用多级索引对飞行航迹数据进行时间切片以及小范围时间重排,并将飞行航迹数据以索引分类的方式存储在文件结构中;
数据检索模块,用于根据文件结构的特点,通过多级索引检索快速定位一级索引文件和二级索引文件中的飞行航迹数据,实现数据检索。
进一步地,所述一级索引文件的帧结构包括一级索引文件头和若干一级索引块;
所述一级索引文件头包括开始时间戳、任务编号、索引块数量以及索引颗粒度;所述一级索引块包括一级索引对应的二级索引块偏移量、数据文件指针偏移量以及数据文件读取长度;
所述二级索引文件的帧结构包括二级索引文件头和若干二级索引块;
所述二级索引文件头为二级索引文件起始标识符;所述二级索引块包括P-Next索引偏移量、数据文件偏移量以及文件读取长度;
所述数据文件的帧结构包括数据文件头和若干封装的数据帧;
所述数据文件头为数据文件起始标识符;所述封装的数据帧为在每个数据帧的实际数据外层包裹帧首的数据帧长度标识、帧尾的数据帧类型标识、数据帧时间戳标识和数据帧结束标识。
进一步地,所述数据存储模块及数据检索模块对飞行航迹数据进行存储及检索时,一级索引文件对应的时间复杂度为O(1),二级索引文件对应的时间复杂度为O(n)。
本发明的有益效果为:本发明提供的飞行航迹数据存储系统采用以索引方式存储航迹的方法,通多级索引方式实现以空间换时间的数据存储机制,具备快速存储不连续数据,查询时间复杂度恒定的能力。
一种飞行航迹数据存储及检索方法,包括以下步骤:
S1、数据存储:基于文件结构的特点,采用多级索引将飞行航迹数据存储在文件结构中;其中,飞行航迹数据写入数据文件,其对应的索引文件以追加模式写入一级索引文件中,并在一级索引文件被占用的情况下,以插入模式写入二级索引文件;
S2、数据检索:基于查询条件,通过多级索引根据一级索引文件和二级索引文件的寻址模式,通过多级索引检索读取存储的飞行航迹数据,实现数据检索。
进一步地,所述步骤S1具体为:
S11、初始化任务索引集合,创建时序存储任务线程,同时实现NTP时间同步;
S12、获取待存储的飞行航迹数据的航迹数据帧;
S13、判断航迹数据帧的时间戳是否在当前时序存储任务的索引集合中;
若是,则进入步骤S14;
若否,则将其视为无效数据予以丢弃;
S14、在时序存储任务线程中,按照时序存储算法将航迹数据帧存入数据文件,并将其对应的索引帧写入一级索引文件或二级索引文件;
S15、判断当前时序存储任务是否到期;
若是,则进入步骤S16;
若否,则返回步骤S12;
S16、关闭一级索引文件、二级索引文件和数据文件的文件流,计算数据文件MD5值,并将元数据存储元数据表中,实现数据存储。
进一步地,所述步骤S11中,在创建时序存储任务线程时,创建时序存储任务文件夹,用于存储预设时间范围内数据文件、一级索引文件和二级索引文件,且其创建时间戳早于当前时间戳,关闭时间戳晚于预设时间范围对应的结束时间戳。
进一步地,所述步骤S14具体为:
S14-1、读取航迹数据帧的时间戳t 1;
S14-2、读取一级索引文件头,获取一级索引精度d;
S14-3、读取一级索引文件的起始时间戳T;
S14-4、读取最近一次的索引时间戳t 2;
S14-5、确定t 1-t 2的值;
当t 1-t 2>d时,进入步骤S14-6;
当t 1-t 2<0时,进入步骤S14-8;
S14-6、将航迹数据帧写入新增的一级索引块,进入步骤S14-9;
S14-7、将航迹数据帧写入当前一级索引块对应的数据文件中,进入步骤S14-9;
S14-8、计算t 1对应的一级索引块的起始偏移量,并根据其将航迹数据帧写入先前一级索引块对应的数据文件,进入步骤S14-9;
S14-9、完成航迹数据帧存入索引文件。
进一步地,所述步骤S14-6具体为:
A1、读取当前一级索引文件的最后一个索引块,并取其所记录的数据文件流偏移位置offset0;
A2、根据n=(t 1-t 2)/d计算需要新增的一级索引块的数量n;
A3、根据一级索引块的数量n,依次将待存储的航迹数据帧在数据文件中对应的文件流偏移位offset1、在二级索引文件中所对应的二级索引链表头流偏位移按一级索引块结构写入到新增的一级索引文件中;
其中,新增的前n-1个一级索引块记录的数据文件流偏位移为offset0,第n个一级索引块记录的数据文件偏移位置为offset1;
所述步骤S14-7具体为:
遍历二级索引块,并逐一对比时间戳,在满足t i <t 1<t j 的位置插入新的二级索引块,将其作为当前一级索引块对应的二级索引块,并将对应的航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号;
所述步骤S14-8具体为:
计算t 1对应的一级索引块在一级索引文件中的流偏位移Offset= (t 1-T)/d,并根据Offset访问一级索引文件,读取对应的一级索引块,然后遍历该一级索引块对应的二级索引块链表,并逐一对比二级索引的时间戳,在满足t i <t 1<t j 的位置插入新的二级索引块,并将航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号,T为起始时间戳。
进一步地,所述步骤S2具体为:
S21、根据查询条件,确定需要检索的飞行航迹数据对应的时序存储任务文件夹;
S22、通过索引寻址算法,计算定位需要检索的飞行航迹数据起始时间戳所在的索引块位置;
S23、基于一级索引文件和二级索引文件的寻址模式,按索引保存的时间戳顺序依次读取飞行航迹数据帧;
S24、在读取飞行航迹数据帧的过程中,根据定位的一级索引块,读取数据文件偏移量,并在数据中文件中偏移至开始位开始读取,进而确定需要检索的飞行航迹数据在一级索引文件对应的数据流;
S25、根据确定的数据流,进行数据帧读取;
当确定的数据流存在多个一级文件,则依次在对应一级索引文件中的一级索引块读取数据帧;
在读取一级索引文件中的数据帧时,若一级索引块下存在对应的二级索引块,则在读取一级索引块中的数据帧后,循环遍历其对应的二级索引块,读取其指向的数据帧,直到读取所有一级索引块和二级索引块中的数据帧;
S26、对于读取的数据帧,在数据文件中封装的数据帧中读取对应的数据类型,进而构成完整的航迹飞行数据,实现数据检索。
本发明的有益效果为:
(1)本发明提供的飞行航迹数据存储及检索方法,设计的航迹数据存储及快速检索回放方法,满足了高速存储从网络接口乱序到达的多种类型数据帧需求,和快速检索、定位、过滤、回放已存储的历史数据帧的需求;其中,存储服务的不间断数据写入速率要求>=64MBit/s,按照此速率连续存储一天的总数据量将>=5400GB,存储一周的总数据量将超过40TB。普通的关系型数据库(如MySQL、PostgreSQL)和典型的时间序列数据库(如Influxdb、TDengine)都无法支持这种体量的数据写入和后续的数据检索过滤需求,存储服务只能选择与文件系统进行直接交互。
(2)本发明方法采用了用存储空间换检索时间的一级索引文件的存储结构,每个一级索引块对应数据文件中的一个数据帧,形成以固定时间颗粒度(如10ms)为单位的连续数组型索引文件,其占用的存储空间随时间推移线性增长,空间复杂度为O(n)。在检索时,按照起止时间戳计算索引偏移量,进而快速定位数据文件。该计算的时间复杂度为O(1),从而实现了以空间换时间的算法思路。
(3)本发明方法中的二级索引文件允许乱序到达的数据帧按时间顺序依次插入存储,每个一级索引块对应一个二级索引块单向链表,用于存储在单位时间颗粒度(如10ms)内乱序到达的数据帧。链表中的每个二级索引块对应数据文件中的一个数据帧,并在插入新二级索引块时遍历整个链表、依次对比已有索引块与待插入索引块对应的时间戳大小,从而实现严格的按时序插入排序算法,以满足不连续的飞行航迹数据存储要求。
(4)本发明中采用了双层索引结构,大幅度提高索引的读写效率;一级索引(数组结构)的检索寻址时间复杂度为O(1),但不支持多数据帧存储和乱序插入;二级索引(单向链表结构)支持多数据帧存储和乱序插入,但检索寻址时间复杂度为O(n)。将一级索引与二级索引组合使用,每个二级索引链表的检索时间范围都被限制在一级索引块对应的单位时间颗粒度(如10ms)内,从而大幅度提高了二级索引的读写效率。
(5)本发明在存储数据时,采用了"预先分配"和"延迟关闭"机制;"预先分配"机制保证了在临界时间点附近进行跨文件存储时,对应"未来时间段"的时序存储任务文件和线程已完成初始化并准备就绪。"延迟关闭"机制保证了高速接收并写入数据帧时,对应的数据存储文件不会随着存储任务的到期而被强制关闭。
一种计算机存储介质,所述计算机存储介质执行计算机程序时,实现飞行航迹数据存储及检索方法。
本发明的有益效果为:本发明为实现飞行航迹数据存储及检索的计算机程序提供了对应的计算机可读存储介质,方便用户直接使用该存储介质实现数据的存储及检索回溯。
附图说明
图1为本发明提供的一级索引文件帧结构示意图。
图2为本发明提供的二级索引文件帧结构示意图。
图3为本发明提供的数据文件帧结构示意图。
图4为本发明提供的数据存储模块中的寻址模式示意图。
图5为本发明提供的飞行航迹数据存储方法流程图。
图6为本发明提供的查询结果返回一条记录示意图。
图7为本发明提供的查询结果返回多条记录示意图。
图8为本发明提供的一级索引文件偏移量计算示意图。
图9为本发明提供的一级索引文件对应数据流长度示意图。
图10为本发明提供的多记录一级索引文件计算示意图。
图11为本发明提供的二级索引链表遍历读取示意图。
图12为本发明提供的按数据类型过来读取数据帧示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例1:
本发明实施例提供了一种飞行航迹数据存储及检索系统,包括:
文件结构,用于构成飞行航迹数据的存储形态,包括一级索引文件、二级索引文件以及数据文件;
数据存储模块,用于根据文件结构的特点,通过利用多级索引对飞行航迹数据进行时间切片以及小范围时间重排,并将飞行航迹数据以索引分类的方式存储在文件结构中;
数据检索模块,用于根据文件结构的特点,通过多级索引检索快速定位一级索引文件和二级索引文件中的飞行航迹数据,实现数据检索。
在本发明实施例中飞行航迹数据是按时间序列排布的帧结构数据。
在本发明实施例中文件结构包括数据文件(uuid.dat)、一级索引文件(uuid.idx)、二级索引文件(uuid.edx),其为后缀名不同的3个同名文件。基于本实施例中的文件结构设计,在将数据帧写入数据文件的同时,向一级索引文件写入当前的流位置及块大小,没有数据写入时使用上一索引块内容占位。每个一级索引文件对应数据文件中的一个数据帧,形成以固定时间颗粒度(如10ms)为单位的连续数组数据,其占用的存储空间随时间线性增长,空间复杂度为O(n)。在检索时以按照起止时间戳计算索引偏移量的方式进行快速定位,计算的时间复杂度为O(1),从而实现了以空间换时间的换算思路;二级索引文件是一级索引文件的扩展,采用单向链表数据结构存储索引块,用于处理在某个一级索引块对应的单位时间颗粒度内,插入存储多个乱序到达的数据帧的问题。其中,一级索引文件是个大颗粒度索引,例如:1秒一个一级索引;二级索引是这一级索引内这一秒内的小颗粒度索引,例如10毫秒一个索引。
如图1所示,本实施例中的一级索引文件的帧结构包括一级索引文件头和若干一级索引块;其中,一级索引文件头为18个字节,每个一级索引块为20个字节;
具体地,一级索引文件头包括开始时间戳(startTimestamp)、任务编号(taskNo)、索引块数量(count)以及索引颗粒度(particle);所述一级索引块包括一级索引对应的二级索引块偏移量(edxOffset)、数据文件指针偏移量(datOffset)以及数据文件读取长度(length)。
在本实施例中,一级索引文件的数据结构为定长数组,每个一级索引块都代表一个单位时间颗粒度(如10ms、100ms),并对应二级索引文件的第一帧和数据流文件中的某一帧,用于按指定时间戳快速计算偏移量并定位索引文件。
如图2所示,本实施例中的二级索引文件的帧结构包括二级索引文件头和若干二级索引块;其中,二级索引文件头为8个字节,每个二级索引块为20个字节;
具体地,二级索引文件头为二级索引文件起始标识符;所述二级索引块包括P-Next索引偏移量(nextEdxOffset),即下一个二级索引块索的索引偏移量、数据文件偏移量(datOffset)以及文件读取长度(length)。
在本实施例中,二级索引文件的数据结构为单向链表,用于按毫秒级时间精度顺序插入在一级索引所对应的单位时间长度内收到的数据帧,每个二级索引块都对应数据流文件中的某一帧。
如图3所示,本实施例中的数据文件的帧结构包括数据文件头和若干封装的数据帧;
具体地,数据文件头为数据文件起始标识符;所述封装的数据帧为在每个数据帧的实际数据外层包裹帧首的数据帧长度标识(4字节)、帧尾的数据帧类型标识(1字节)、数据帧时间戳标识(8字节)和数据帧结束标识(5字节)。
在本发明实施例中,所述数据存储模块及数据检索模块对飞行航迹数据进行存储及检索时,一级索引文件对应的时间复杂度为O(1),二级索引文件对应的时间复杂度为O(n)。
具体地,对于数据存储模块,在存储航迹数据帧时,如图4所示,先以追加模式写入一级索引块,在一级索引被占用的情况下,再遍历二级索引链表,以插入模式写入二级索引块,考虑每毫秒写入10个数据帧的高速存储场景,当一级索引块对应的时间颗粒度为1ms时,对应每个二级索引链表的平均长度为10个二级索引块。由于一级索引块的分隔与缓冲作用,二级索引块的写入的时间复杂度显著降低。
实施例2:
本发明实施例提供了基于实施例1中的飞行航迹数据存储及检索系统实现飞行航迹数据存储及检索的具体方法,如图5所示,包括以下步骤:
S1、数据存储:基于文件结构的特点,采用多级索引将飞行航迹数据存储在文件结构中;其中,飞行航迹数据写入数据文件,其对应的索引文件以追加模式写入一级索引文件中,并在一级索引文件被占用的情况下,以插入模式写入二级索引文件;
S2、数据检索:基于查询条件,通过多级索引根据一级索引文件和二级索引文件的寻址模式,通过多级索引检索读取存储的飞行航迹数据,实现数据检索。
本发明实施例中的步骤S1具体为:
S11、初始任务索引集合,创建时序存储任务线程,同时实现NTP时间同步;
S12、获取待存储的飞行航迹数据的航迹数据帧;
S13、判断航迹数据帧的时间戳是否在当前时序存储任务的索引集合中;
若是,则进入步骤S14;
若否,则将其视为无效数据予以丢弃;
其中,无效数据是指不在当前存储时间范围内的,例如,因为网络问题收到了一个一小时前的数据,这种就是无效数据;
S14、在时序存储任务线程中,按照时序存储算法将航迹数据帧存入数据文件,并将其对应的索引帧写入一级索引文件或二级索引文件;
S15、判断当前时序存储任务是否到期;
若是,则进入步骤S16;
若否,则返回步骤S12;
S16、关闭一级索引文件、二级索引文件和数据文件的文件流,计算数据文件MD5值,并将元数据存储元数据表中,实现数据存储;其中,元数据包括时间戳、文件名以及校验值等。
本实施例中的步骤S11中,初始化数据存储服务包括NTP时间同步以及初始化当前任务索引集合。
本实施例的步骤S11中,创建时序存储任务线程包括创建时序存储任务文件夹以及在时序存储任务文件夹(以ISO8601日期格式标准命名)内创建一级索引文件、二级索引文件以及数据帧存储文件。
具体地,对于时序存储任务文件夹,在工程实践中,为了避免单个索引文件实践跨度过长,造成对应的单个数据文件过大、难以计算MD5散列值的问题,以及文件系统掉电崩溃导致索引损坏、大段数据无法读取的问题,设计分时段创建独立的时序存储文件及对应处理线程,如每5min创建一个时序存储任务文件夹,内含3个文件(一级索引文件“uuid.idx”、二级索引文件“uuid.edx”和数据文件“uuid.dat”),将时间戳标识在这5分钟范围内的数据帧存储到对应的数据文件中。时序存储任务文件夹目录结构如下:
├─2022-09-26T11_57_32.358+08_00
│53933560-6B4E-28A7-1DF2-91D3AA504DE4.idx(一级索引)
│53933560-6B4E-28A7-1DF2-91D3AA504DE4.edx(二级索引)
│53933560-6B4E-28A7-1DF2-91D3AA504DE4.dat(数据文件)
├─2022-09-26T12_00_00.000+08_00
│0CFEFA35-DD9E-7256-F6C9-280217FBE6F5.idx(一级索引)
│0CFEFA35-DD9E-7256-F6C9-280217FBE6F5.edx(二级索引)
│0CFEFA35-DD9E-7256-F6C9-280217FBE6F5.dat(数据文件)
├─2022-09-26T12_05_00.000+08_00
├─2022-09-26T12_10_00.000+08_00
……
其中,索引和数据文件以任务ID命名,对应其在索引及数据文件元数据表中的主键“任务ID”。
在本实施例中,为了实现严格连续的存储数据帧,时序存储任务文件夹及其对应的处理线程采取预先创建、延迟关闭的策略,其创建时间戳早于当前时间戳,关闭时间戳晚于预设时间范围对应的结束时间戳;例如当前时间为2022-09-26T12:05:00.000+08:00,则需创建文件夹为2022-09-26T12_10_00.000+08_00,需关闭索引和数据文件所在文件夹为2022-09-26T12_00_00.000+08_00。
本发明实施例的步骤S14具体为:
S14-1、读取航迹数据帧的时间戳t 1;
S14-2、读取一级索引文件头,获取一级索引精度d;
S14-3、读取一级索引文件的起始时间戳T;
S14-4、读取最近一次的索引时间戳t 2;
S14-5、确定t 1-t 2的值;
当t 1-t 2>d时,进入步骤S14-6;
当t 1-t 2<0时,进入步骤S14-8;
S14-6、将航迹数据帧写入新增的一级索引块,进入步骤S14-9;
S14-7、将航迹数据帧写入当前一级索引块对应的数据文件中,进入步骤S14-9;
S14-8、计算t 1对应的一级索引块的起始偏移量,并根据其将航迹数据帧写入先前一级索引块对应的数据文件,进入步骤S14-9;
S14-9、完成航迹数据帧存入索引文件。
本实施例的步骤S14-1还包括:
读取航迹数据帧,添加其对应的帧头、帧尾,并记录数据文件偏移量后存入数据文件中。
在本实施例的步骤S14-6中,在接收到t 1时刻数据时,需要对t 1-t 2时段的一级索引进行补全,且空缺数据(航迹数据流偏移位和二级索引链表头流偏移位)映射到最后一次时刻t 2上,基于此,本实施例的步骤S14-6具体为:
A1、读取当前一级索引文件的最后一个索引块,并取其所记录的数据文件流偏移位置offset0;
A2、根据n=(t 1-t 2)/d计算需要新增的一级索引块的数量n;
A3、根据一级索引块的数量n,依次将待存储的航迹数据帧在数据文件中对应的文件流偏移位offset1、在二级索引文件中所对应的二级索引链表头流偏位移按一级索引块结构写入到新增的一级索引文件中;
其中,新增的前n-1个一级索引块记录的数据文件流偏位移为offset0,第n个一级索引块记录的数据文件偏移位置为offset1。
本实施例的步骤S14-7具体为:
遍历二级索引块,并逐一对比时间戳,在满足t i <t 1<t j 的位置插入新的二级索引块,将其作为当前一级索引块对应的二级索引块,并将对应的航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号;
本实施例的步骤S14-8具体为:
计算t 1对应的一级索引块在一级索引文件中的流偏位移Offset= (t 1-T)/d,并根据Offset访问一级索引文件,读取对应的一级索引块,然后遍历该一级索引块对应的二级索引块链表,并逐一对比二级索引的时间戳,在满足t i <t 1<t j 的位置插入新的二级索引块,并将航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号,T为起始时间戳。
在对飞行航迹数据进行回溯时,需要按条件对所存储的航迹数据进行检索,定位航迹回放起始点,并连续读取航迹数据用于还原飞行情况。具体地,本实施例的步骤S2具体为:
S21、根据查询条件,确定需要检索的飞行航迹数据对应的时序存储任务文件夹;
S22、通过索引寻址算法,
计算定位需要检索的飞行航迹数据起始时间戳所在的索引块位置;
S23、基于一级索引文件和二级索引文件的寻址模式,按索引保存的时间戳顺序依次读取飞行航迹数据帧;
S24、在读取飞行航迹数据帧的过程中,根据定位的一级索引块,读取数据文件偏移量,并在数据中文件中偏移至开始位开始读取,进而确定需要检索的飞行航迹数据在一级索引文件对应的数据流;
S25、根据确定的数据流,进行数据帧读取;
当确定的数据流存在多个一级文件,则依次在对应一级索引文件中的一级索引块读取数据帧;
在读取一级索引文件中的数据帧时,若一级索引块下存在对应的二级索引块,则在读取一级索引块中的数据帧后,循环遍历其对应的二级索引块,读取其指向的数据帧,直到读取所有一级索引块和二级索引块中的数据帧;
S26、对于读取的数据帧,在数据文件中封装的数据帧中读取对应的数据类型,进而构成完整的航迹飞行数据,实现数据检索。
本实施例的步骤S21中,根据查询条件获得的一条查询记录如图6所示,获得的多条查询记录如图7所示。
本实施例的步骤S22中,在进行寻址时,如图8所示,通过计算筛选时间与索引文件所记录的起始时间的间隔差,每个间隔差为固定20字节,由此确定筛选的开始与结束时间的流位置。其公式为:I=18+(T-s)/ts*20,其中18为文件头的固定偏移位,T为需要查找的时间,s为一级索引文件的开始时间,ts为时间颗粒度。在查找过程中,时间复杂度固定为T(n)=O(1),因此可以忽略不计。
在本实施例的步骤S23中,如图9所示,读取数据文件偏移量datOffset,在数据文件中偏移至开始位读取,直到结束位偏移量datOffset+读取长度datLeng为筛选的数据流长度,进而确定需要检索的飞行航迹数据在一级索引文件对应的数据流。
本实施例的步骤S24中,如图10所示,存在多个一级索引文件时,依次执行对索引文件的查找和读取流程。如图11所示,在一级索引文件中,若某一级索引块下有对应的二级索引块链表,则在读取了该一级索引块后,需立即循环遍历对应的二级索引块,读取指向的数据帧。
本实施例的步骤S25中,如图12所示,数据类型在读取数据文件中的封装的数据帧时实现,每个封装数据帧尾都有一个字节标识了该数据帧的类型,在读取时只选择所需类型的数据帧进行回放即可。
实施例3:
本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,执行计算机程序时实现实施例2中飞行航迹数据存储及检索方法的步骤。本发明实施例中,计算机可读存储介质包括但不限于U盘、移动硬盘、只读存储器(ROM, Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要理解的是,术语“中心”、“厚度”、“上”、“下”、“水平”、“顶”、“底”、“内”、“外”、“径向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的设备或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含指明的技术特征的数量。因此,限定由“第一”、“第二”、“第三”的特征可以明示或隐含地包括一个或者更多个该特征。
Claims (4)
1.一种飞行航迹数据存储及检索方法,其特征在于,实现所述飞行航迹数据存储及检索方法的系统包括:
文件结构,用于构成飞行航迹数据的存储形态,包括一级索引文件、二级索引文件以及数据文件;
数据存储模块,用于根据文件结构的特点,通过利用多级索引对飞行航迹数据进行时间切片以及小范围时间重排,并将飞行航迹数据以索引分类的方式存储在文件结构中;
数据检索模块,用于根据文件结构的特点,通过多级索引检索快速定位一级索引文件和二级索引文件中的飞行航迹数据,实现数据检索;
所述一级索引文件的帧结构包括一级索引文件头和若干一级索引块;
所述一级索引文件头包括开始时间戳、任务编号、索引块数量以及索引颗粒度;所述一级索引块包括一级索引对应的二级索引块偏移量、数据文件指针偏移量以及数据文件读取长度;
所述二级索引文件的帧结构包括二级索引文件头和若干二级索引块;
所述二级索引文件头为二级索引文件起始标识符;所述二级索引块包括P-Next索引偏移量、数据文件偏移量以及文件读取长度;
所述数据文件的帧结构包括数据文件头和若干封装的数据帧;
所述数据文件头为数据文件起始标识符;所述封装的数据帧为在每个数据帧的实际数据外层包裹帧首的数据帧长度标识、帧尾的数据帧类型标识、数据帧时间戳标识和数据帧结束标识;
所述数据存储模块及数据检索模块对飞行航迹数据进行存储及检索时,一级索引文件对应的时间复杂度为O(1),二级索引文件对应的时间复杂度为O(n);
所述飞行航迹数据存储及检索方法包括以下步骤:
S1、数据存储:基于文件结构的特点,采用多级索引将飞行航迹数据存储在文件结构中;其中,飞行航迹数据写入数据文件,其对应的索引文件以追加模式写入一级索引文件中,并在一级索引文件被占用的情况下,以插入模式写入二级索引文件;
S2、数据检索:基于查询条件,通过多级索引根据一级索引文件和二级索引文件的寻址模式,通过多级索引检索读取存储的飞行航迹数据,实现数据检索;所述步骤S1具体为:
S11、初始化任务索引集合,创建时序存储任务线程,同时实现NTP时间同步;
所述步骤S11中,在创建时序存储任务线程时,创建时序存储任务文件夹,用于存储预设时间范围内数据文件、一级索引文件和二级索引文件,且其创建时间戳早于当前时间戳,关闭时间戳晚于预设时间范围对应的结束时间戳;
S12、获取待存储的飞行航迹数据的航迹数据帧;
S13、判断航迹数据帧的时间戳是否在当前时序存储任务的索引集合中;
若是,则进入步骤S14;
若否,则将其视为无效数据予以丢弃;
S14、在时序存储任务线程中,按照时序存储算法将航迹数据帧存入数据文件,并将其对应的索引帧写入一级索引文件或二级索引文件;
S15、判断当前时序存储任务是否到期;
若是,则进入步骤S16;
若否,则返回步骤S12;
S16、关闭一级索引文件、二级索引文件和数据文件的文件流,计算数据文件MD5值,并将元数据存储元数据表中,实现数据存储;
所述步骤S2具体为:
S21、根据查询条件,确定需要检索的飞行航迹数据对应的时序存储任务文件夹;
S22、通过索引寻址算法,计算定位需要检索的飞行航迹数据起始时间戳所在的索引块位置;
S23、基于一级索引文件和二级索引文件的寻址模式,按索引保存的时间戳顺序依次读取飞行航迹数据帧;
S24、在读取飞行航迹数据帧的过程中,根据定位的一级索引块,读取数据文件偏移量,并在数据中文件中偏移至开始位开始读取,进而确定需要检索的飞行航迹数据在一级索引文件对应的数据流;
S25、根据确定的数据流,进行数据帧读取;
当确定的数据流存在多个一级文件,则依次在对应一级索引文件中的一级索引块读取数据帧;
在读取一级索引文件中的数据帧时,若一级索引块下存在对应的二级索引块,则在读取一级索引块中的数据帧后,循环遍历其对应的二级索引块,读取其指向的数据帧,直到读取所有一级索引块和二级索引块中的数据帧;
S26、对于读取的数据帧,在数据文件中封装的数据帧中读取对应的数据类型,进而构成完整的航迹飞行数据,实现数据检索。
2.根据权利要求1所述的飞行航迹数据存储及检索方法,其特征在于,所述步骤S14具体为:
S14-1、读取航迹数据帧的时间戳t 1;
S14-2、读取一级索引文件头,获取一级索引精度d;
S14-3、读取一级索引文件的起始时间戳T;
S14-4、读取最近一次的索引时间戳t 2;
S14-5、确定t 1- t 2的值;
当t 1- t 2>d时,进入步骤S14-6;
当t 1- t 2<0时,进入步骤S14-8;
S14-6、将航迹数据帧写入新增的一级索引块,进入步骤S14-9;
S14-7、将航迹数据帧写入当前一级索引块对应的数据文件中,进入步骤S14-9;
S14-8、计算t 1对应的一级索引块的起始偏移量,并根据其将航迹数据帧写入先前一级索引块对应的数据文件,进入步骤S14-9;
S14-9、完成航迹数据帧存入索引文件。
3.根据权利要求2所述的飞行航迹数据存储及检索方法,其特征在于,所述步骤S14-6具体为:
A1、读取当前一级索引文件的最后一个索引块,并取其所记录的数据文件流偏移位置offset0;
A2、根据n=(t 1-t 2)/d计算需要新增的一级索引块的数量n;
A3、根据一级索引块的数量n,依次将待存储的航迹数据帧在数据文件中对应的文件流偏移位offset1、在二级索引文件中所对应的二级索引链表头流偏位移按一级索引块结构写入到新增的一级索引文件中;
其中,新增的前n-1个一级索引块记录的数据文件流偏位移为offset0,第n个一级索引块记录的数据文件偏移位置为offset1;
所述步骤S14-7具体为:
遍历二级索引块,并逐一对比时间戳,在满足t i<t 1<t j的位置插入新的二级索引块,将其作为当前一级索引块对应的二级索引块,并将对应的航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号;
所述步骤S14-8具体为:
计算t 1对应的一级索引块在一级索引文件中的流偏位移Offset = (t 1-T)/d,并根据Offset访问一级索引文件,读取对应的一级索引块,然后遍历该一级索引块对应的二级索引块链表,并逐一对比二级索引的时间戳,在满足t i<t 1<t j的位置插入新的二级索引块,并将航迹数据帧写入到数据文件中;其中,i和j为二级索引块序号,T为起始时间戳。
4.一种计算机存储介质,其特征在于,所述计算机存储介质,执行计算机程序时,实现如权利要求1-3任一所述的飞行航迹数据存储及检索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310134016.0A CN115905122B (zh) | 2023-02-20 | 2023-02-20 | 一种飞行航迹数据存储及检索系统、方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310134016.0A CN115905122B (zh) | 2023-02-20 | 2023-02-20 | 一种飞行航迹数据存储及检索系统、方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905122A CN115905122A (zh) | 2023-04-04 |
CN115905122B true CN115905122B (zh) | 2023-05-30 |
Family
ID=85744715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310134016.0A Active CN115905122B (zh) | 2023-02-20 | 2023-02-20 | 一种飞行航迹数据存储及检索系统、方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905122B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231826A (zh) * | 2011-03-14 | 2011-11-02 | 新奥特(北京)视频技术有限公司 | 一种支持ts流媒体文件帧精确定位的索引方法及系统 |
CN109712674A (zh) * | 2019-01-14 | 2019-05-03 | 深圳市泰尔迪恩生物信息科技有限公司 | 注释数据库索引结构、快速注释遗传变异的方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8229902B2 (en) * | 2006-11-01 | 2012-07-24 | Ab Initio Technology Llc | Managing storage of individually accessible data units |
CN103412962B (zh) * | 2013-09-04 | 2016-09-07 | 国家测绘地理信息局卫星测绘应用中心 | 一种海量瓦片数据的存储方法及读取方法 |
CN103678638B (zh) * | 2013-12-20 | 2018-10-19 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
CN105701096A (zh) * | 2014-11-25 | 2016-06-22 | 腾讯科技(深圳)有限公司 | 索引生成方法、数据查询方法、装置及系统 |
CN104881481B (zh) * | 2015-06-03 | 2018-05-01 | 广东省机电设备招标有限公司 | 一种存取海量时间序列数据的方法及装置 |
CN105893433A (zh) * | 2015-12-09 | 2016-08-24 | 乐视云计算有限公司 | 文件存储方法、访问方法及装置 |
CN106202558A (zh) * | 2016-07-29 | 2016-12-07 | 成都神州数码索贝科技有限公司 | 一种高效的安防行业音视频数据存储格式及其查询方法 |
CN107870973B (zh) * | 2017-09-20 | 2021-11-26 | 广东东为信息技术有限公司 | 一种加快多路监控同时回放的文件存储系统 |
US11023610B2 (en) * | 2019-01-23 | 2021-06-01 | Upguard, Inc. | Data breach detection and mitigation |
-
2023
- 2023-02-20 CN CN202310134016.0A patent/CN115905122B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231826A (zh) * | 2011-03-14 | 2011-11-02 | 新奥特(北京)视频技术有限公司 | 一种支持ts流媒体文件帧精确定位的索引方法及系统 |
CN109712674A (zh) * | 2019-01-14 | 2019-05-03 | 深圳市泰尔迪恩生物信息科技有限公司 | 注释数据库索引结构、快速注释遗传变异的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115905122A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7742414B1 (en) | Lightweight indexing for fast retrieval of data from a flow-level compressed packet trace | |
CN107870973B (zh) | 一种加快多路监控同时回放的文件存储系统 | |
CN103092848A (zh) | 一种图片存储与检索方法 | |
CN102096698B (zh) | 一种视频数据存储格式、存储方法及检索方法 | |
CN101351845B (zh) | 记录装置、记录方法和记录程序、以及摄像装置、摄像方法和摄像程序 | |
CN106649722B (zh) | 一种监控系统高频数据的存储及查询方法 | |
CN107229620B (zh) | 一种视频数据的存储方法及装置 | |
CN108460075B (zh) | 一种文件内容检索方法及系统 | |
CN101534408B (zh) | 动态码率传输流媒体流的存储、播放和异常检测方法 | |
CN102204266B (zh) | 线性提示视频流 | |
CN107545064A (zh) | 行车记录装置在文件名编码中加入日期和时间信息的机制 | |
CN115905122B (zh) | 一种飞行航迹数据存储及检索系统、方法及存储介质 | |
CN106970935B (zh) | 实时数据存储结构、数据写入方法及数据读取方法 | |
CN111163297A (zh) | 一种实现视频监控云存储高并发和快速回放的方法 | |
US8230125B2 (en) | Methods for reserving index memory space in AVI recording apparatus | |
CN102231827B (zh) | 一种支持ps流媒体文件直接帧精确定位的索引方法 | |
CN104702874A (zh) | 一种面向视频监控的文件存储方法 | |
CN117149081B (zh) | 一种基于zns固态硬盘的时序数据库存储引擎构建方法 | |
CN114363304B (zh) | Rtp视频流存储、播放方法及装置 | |
WO2022126551A1 (zh) | 一种时序数据的存储方法 | |
CN112181973B (zh) | 一种时序数据的存储方法 | |
WO2011070725A1 (ja) | 情報処理装置、情報処理方法およびプログラム | |
CA2505741C (en) | Method for recording data, method for retrieving sets of data, data file, data structure and medium carrying such data | |
CN109062991B (zh) | 一种车载监控数据检索方法及系统 | |
CN114090577A (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 |