连续时间段时间戳序号索引分钟冻结的存储和查找方法转让专利

申请号 : CN201711458509.0

文献号 : CN108255981B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐晴刘建周超龚丹田正其祝宇楠

申请人 : 国网江苏省电力有限公司电力科学研究院国家电网公司江苏省电力试验研究院有限公司

摘要 :

本发明公开了一种连续时间段时间戳序号索引分钟冻结的存储和查找方法,包括将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储;根据连续时间段,对分方案存储内的冻结数据提出识别和划分连续时间段;建立时间戳序号索引循环队列;根据建立的时间戳序号索引,提供基于时间戳序号索引的查找方法,得到该连续时间段内的任何一条记录的实际存储位置。本发明不用建立月索引表、日索引表、时索引表,就可以实现海量分钟冻结记录数据存储和查找方法,大大提高了查找效率,在提高查找效率之外,能大大压缩索引空间,有效压缩记录存储空间,具有良好的应用前景。

权利要求 :

1.一种连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:包括以下步骤,

步骤(A),将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储;

步骤(B),根据连续时间段,对分方案存储内的冻结数据提出识别和划分连续时间段,所述连续时间段,是指一个中间没有经历掉电或者改时间的连续自然时间段,在这个连续时间段内,前、后两个冻结点之间的时间间隔等于冻结周期;若发生掉电或者改时间,导致记录不连续的事件,则新建一个新的连续时间段;

步骤(C),建立时间戳序号索引循环队列,在步骤(B)每新建一个新的连续时间段为该连续时间段的第一条记录建立一个时间戳序号索引,所述时间戳序号索引,包含该连续时间段内第一条记录的时间戳以及第一条记录的序号;

步骤(D),根据建立的时间戳序号索引,提供基于时间戳序号索引的查找方法,采用二分法在时间戳序号索引循环队列进行查找,查找到用户请求记录所在的时间戳序号索引,得到对应的连续时间段内第一条记录的时间戳以及第一条记录的序号,从而计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置。

2.根据权利要求1所述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:步骤(A),将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储,要为每个方案划分存储记录的数据区物理块,同时为每个方案划分存储时间戳序号索引循环队列的索引区物理块,所述每个方案划分存储记录的数据区物理块的每个冻结数据的冻结周期相同,且每条冻结记录的数据长度是等长的,即数据区物理块为等长的循环队列数据区,知道一条记录的序号,根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值OFFSET,计算公式为OFFSET = (RCD_SEQ_NO % MAX )* RCRD_SZ,其中,RCD_SEQ_NO 为该记录的序号,MAX为分配给此分方案存储方案的最大存储空间条目数,RCRD_SZ 为单条记录的长度。

3.根据权利要求1所述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:所述若发生掉电或者改时间,导致记录不连续的事件,则新建一个新的连续时间段是指:若发生掉电或者改时间跨过对应的冻结周期,导致记录不连续的事件,则新建一个新的连续时间段。

4.根据权利要求1所述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:步骤(C),所述时间戳序号索引,包含该连续时间段内第一条记录的时间戳以及第一条记录的序号,所述时间戳为第一条记录发生时间相对冻结基准时间的分钟数,并占四个字节空间;所述第一条记录的序号为该条记录存储时,分配给该条记录的逻辑序号,序号从零开始,最近一条记录的序号为CNTS – 1,CNTS为该分方案存储方案的总记录条数,序号占四个字节空间。

5.根据权利要求4所述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:所述冻结基准时间为2000年1月1日0时0分。

6.根据权利要求2所述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,其特征在于:步骤(D),从而计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置,包括以下步骤,(D11),将用户请求时间减去此连续时间段上第一个记录点的时间戳得到一个时间差,将该时间差除以该分方案存储方案的冻结周期,得到用户请求记录为此连续时间段的第几条记录RCD_NUM;

(D12),根据得到的用户请求记录为此连续时间段的第几条记录RCD_NUM,计算出该用户请求记录的序号,该序号为时间戳序号索引保存的第一条记录的序号加上RCD_NUM,并根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。

说明书 :

连续时间段时间戳序号索引分钟冻结的存储和查找方法

技术领域

[0001] 本发明涉及智能电能表技术领域,具体涉及一种连续时间段时间戳序号索引分钟冻结的存储和查找方法。

背景技术

[0002] 随着国家经济技术的发展和人们生活水平的提高,电能已经成为了人们生产和生活中必不可少的二次能源,给人们的生产和生活带来了无尽的便利。电能表作为电力系统中计量电能的唯一部件,其重要性和可靠性不言而喻。
[0003] 分钟冻结是智能电表对电力系统运行过程中实时电力负荷运行状态、特征的记录,智能电表按用户设定的时间间隔周期记录分钟冻结记录,分钟冻结记录哪些数据对象由用户设定,每个数据对象记录的间隔周期和记录的最大深度用户可设。
[0004] 随着智能电网建设的深入和大数据技术的推广应用,智能电能表对分钟冻结的要求越来越高,最新的规范要求智能电能表能记录最近28800条分钟冻结记录,并要能支持按时间点,按时间段范围查找分钟冻结记录;随着用户对分钟冻结记录条数要求的增加,必然增加了分钟冻结的存储容量,更是加大了分钟冻结的查找难度,如如何快速高效的查找分钟冻结记录是当前需要解决的问题。目前,常用的电能表分钟冻结存储和查找方法,具体如下:
[0005] (1)顺序存储查找法,其基本原理是依次顺序存储分钟冻结记录,存储每条记录时同时存储记录的时标,查找时以时间作为索引在整个记录空间按二分法进行查找,其的缺点在于:要采用二分法遍历整个记录空间,随着记录条数的增加,查找指定时间点的记录需要的时间越长,查找的效率低,条数增加到一定条数时不能满足用户的需求;
[0006] (2)不采纳传统的二分法遍历整个记录空间,而是对于每类分钟冻结记录,建立月索引表、日索引表、时索引表,在存储每条记录时维护月索引表、日索引表、时索引表,然后查找时通过查找月索引表、日索引表、时索引表得到对应的记录,其的缺点在于:每当存储1类分钟冻结记录,要同时更新此类分钟冻结记录的月索引表、日索引表、时索引表,算法繁杂;查找1类分钟冻结记录,要依次查找月索引表、日索引表、时索引表才能得到此类分钟冻结记录某个小时内分钟冻结记录的起始地址,如果分钟冻结记录的存储时间间隔为1分钟(也就是此小时内有60个分钟冻结记录),还要在此类分钟冻结记录的60个记录中进行进一步的顺序查找才能得到这个小时内具体那个分钟的记录(如果是这个小时的59分的记录,要顺序查找59次才能得到59分的分钟冻结记录),而无法通过一次线性计算直接得到记录的地址;另外,通过建立月索引,顶多只能保存最近一年的数据,而不能保存最近多年的数据,要想保存的记录数多,则建立的月索引、日索引、小时索引也越多;
[0007] 如何克服上述问题,是当前急需要解决的。

发明内容

[0008] 本发明的目的是克服现有的电能表分钟冻结存储和查找方法,所存在的问题。本发明的连续时间段时间戳序号索引分钟冻结的存储和查找方法,不用建立月索引表、日索引表、时索引表,就可以实现海量分钟冻结记录数据存储和查找方法,大大提高了查找效率,在提高查找效率之外,能大大压缩索引空间,有效压缩记录存储空间,具有良好的应用前景。
[0009] 为了达到上述目的,本发明所采用的技术方案是:
[0010] 一种连续时间段时间戳序号索引分钟冻结的存储和查找方法,包括以下步骤,[0011] 步骤(A),将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储;
[0012] 步骤(B),根据连续时间段,对分方案存储内的冻结数据提出识别和划分连续时间段,所述连续时间段,是指一个中间没有经历掉电或者改时间的连续自然时间段,在这个连续时间段内,前、后两个冻结点之间的时间间隔等于冻结周期;若发生掉电或者改时间,导致记录不连续的事件,则新建一个新的连续时间段;
[0013] 步骤(C),建立时间戳序号索引循环队列,在步骤(B)每新建一个新的连续时间段为该连续时间段的第一条记录建立一个时间戳序号索引,所述时间戳序号索引,包含该连续时间段内第一条记录的时间戳以及第一条记录的序号;
[0014] 步骤(D),根据建立的时间戳序号索引,提供基于时间戳序号索引的查找方法,采用二分法在时间戳序号索引循环队列进行查找,查找到用户请求记录所在的时间戳序号索引,得到对应的连续时间段内第一条记录的时间戳以及第一条记录的序号,从而计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置。
[0015] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,步骤(A),将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储,要为每个方案划分存储记录的数据区物理块,同时为每个方案划分存储时间戳序号索引循环队列的索引区物理块,所述每个方案划分存储记录的数据区物理块的每个冻结数据的冻结周期相同,且每条冻结记录的数据长度是等长的,即数据区物理块为等长的循环队列数据区,知道一条记录的序号,根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值OFFSET,计算公式为OFFSET=(RCD_SEQ_NO%MAX)*RCRD_SZ,其中,RCD_SEQ_NO为该记录的序号,MAX为分配给此分方案存储方案的最大存储空间条目数,RCRD_SZ为单条记录的长度。
[0016] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,所述若发生掉电或者改时间,导致记录不连续的事件,则新建一个新的连续时间段是指:若发生掉电或者改时间跨过对应的冻结周期,导致记录不连续的事件,则新建一个新的连续时间段。
[0017] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,步骤(C),所述时间戳序号索引,包含该连续时间段内第一条记录的时间戳以及第一条记录的序号,所述时间戳为第一条记录发生时间相对冻结基准时间的分钟数,并占四个字节空间;所述第一条记录的序号为该条记录存储时,分配给该条记录的逻辑序号,序号从零开始,最近一条记录的序号为CNTS–1,CNTS为该分方案存储方案的总记录条数,序号占四个字节空间。
[0018] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,所述冻结基准时间为2000年1月1日0时0分。
[0019] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,步骤(D),从而计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置,包括以下步骤,
[0020] (D11),将用户请求时间减去此连续时间段上第一个记录点的时间戳得到一个时间差,将该时间差除以该分方案存储方案的冻结周期,得到用户请求记录为此连续时间段的第几条记录RCD_NUM;
[0021] (D12),根据得到的用户请求记录为此连续时间段的第几条记录RCD_NUM,计算出该用户请求记录的序号,该序号为时间戳序号索引保存的第一条记录的序号加上RCD_NUM,并根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。
[0022] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,步骤(D),计算一个分方案存储方案中连续时间段内上N次记录的实际存储位置,包括以下步骤,[0023] (D21),上N次记录的序号SEQ_NO的计算公式为,SEQ_NO=CNTS–N;其中,CNTS为该分方案存储方案的总记录条数;
[0024] (D22),根据上N次记录的序号SEQ_NO,直接计算出上N次记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。
[0025] 前述的连续时间段时间戳序号索引分钟冻结的存储和查找方法,步骤(D),计算一个分方案存储方案中连续时间段内最早记录的实际存储位置,包括以下步骤,[0026] (D31),该分方案存储方案的时间戳序号索引循环队列的首指针所指向的时间戳序号索引为最早记录所在时间戳序号索引,从该时间戳序号索引直接获得最早记录的序号;
[0027] (D32),根据最早记录的序号,直接计算出最早记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。
[0028] 本发明的有益效果是:本发明的连续时间段时间戳序号索引分钟冻结的存储和查找方法,不用建立月索引表、日索引表、时索引表,就可以实现海量分钟冻结记录数据存储和查找方法,大大提高了查找效率,本发明的基于连续时间段时间戳序号索引,只有在用户改时间或发生掉电等特殊情况下才要建立新的索引,大大节省了索引空间,采用分方案的存储方案,每个节点不用存储记录发生时间,节省了数据空间,以每个时间点5字节计算(年月日时分),28800条记录可节省140KB存储空间,因此,在提高查找效率之外,能大大压缩索引空间,有效压缩记录存储空间,具有良好的应用前景。

附图说明

[0029] 图1是本发明的连续时间段时间戳序号索引分钟冻结的存储和查找方法的流程图;
[0030] 图2是本发明实施例的多个方案分别划分时间戳序号索引存储空间的示意图;
[0031] 图3是本发明实施例的数据结构存储体的示意图;
[0032] 图4是本发明实施例的记录存储流程的流程图;
[0033] 图5是本发明实施例的查找指定时间点记录流程的流程图;
[0034] 图6是本发明实施例的查找大于等于指定时间记录流程的流程图;
[0035] 图7是本发明实施例的查找指定时间范围记录流程的流程图;
[0036] 图8是本发明实施例的往历史时间改时间流程的流程图。

具体实施方式

[0037] 下面将结合说明书附图,对本发明作进一步的说明。
[0038] 本发明的连续时间段时间戳序号索引分钟冻结的存储和查找方法,如图1所示,包括以下步骤,
[0039] 步骤(A),将冻结周期间隔相同的冻结数据一起存储,冻结周期间隔不同的冻结数据分别存储,形成分方案存储,要为每个方案划分存储记录的数据区物理块,同时为每个方案划分存储时间戳序号索引循环队列的索引区物理块,所述每个方案划分存储记录的数据区物理块的每个冻结数据的冻结周期相同,且每条冻结记录的数据长度是等长的,即数据区物理块为等长的循环队列数据区,知道一条记录的序号,根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值OFFSET,计算公式为OFFSET=(RCD_SEQ_NO%MAX)*RCRD_SZ,其中,RCD_SEQ_NO为该记录的序号,MAX为分配给此分方案存储方案的最大存储空间条目数,RCRD_SZ为单条记录的长度,
[0040] 分钟冻结作为一种周期冻结,周期冻结就是冻结对象按设定的间隔周期进行冻结,比如每间隔1分钟冻结一次或间隔5分钟冻结一次或间隔15分钟冻结一次,步骤(A)是建立在对电能表周期性冻结特性的认识和挖掘上,第一个特性就是如果将冻结周期间隔相同的冻结数据一起存储,间隔不同的分别存储,则每次冻结时间到时,存储的每一条记录数据大小是相同的,如此按时间顺序存储下来的记录队列是等长的记录队列,数据存储是等长存储,这是周期性冻结的第一个特性;
[0041] 步骤(B),根据连续时间段,对分方案存储内的冻结数据提出识别和划分连续时间段,所述连续时间段,是指一个中间没有经历掉电或者改时间的连续自然时间段,在这个连续时间段内,前、后两个冻结点之间的时间间隔等于冻结周期;若发生掉电或者改时间,导致记录不连续的事件,则新建一个新的连续时间段,步骤(B)表现了周期性冻结的第二个特性,也是最重要的一个特性,如果不出现掉电、改时间等突发性的事件或操作(只有掉电或改时间会导致周期性冻结的冻结记录不连续),周期性冻结都是按时间顺序连续存储的(连续存储是指队列中前后两条记录的时间差正好等于冻结周期),只要知道这个连续时间段第一条记录所在位置,就可以计算出这个连续时间段内任何一条记录的存储位置,从而将这个连续时间段内的任何一条记录快速查找出来;而现代化的电网,出现停电的局面更是少之又少(一般,一年内很少出现多次停电,就我所在的台区,最近几年更是没有一次停电,就算是一些特殊地区一年停电100次,也只是将一年的时间分成了100个连续时间段,一年停电100次,这个是比较骇人听闻的);
[0042] 步骤(C),建立时间戳序号索引循环队列,在步骤(B)每新建一个新的连续时间段为该连续时间段的第一条记录建立一个时间戳序号索引,所述时间戳序号索引,包含该连续时间段内第一条记录的时间戳以及第一条记录的序号,所述时间戳为该连续时间段的第一条记录发生时间相对冻结基准时间的分钟数,并占四个字节空间;所述第一条记录的序号为该条记录存储时,分配给该条记录的逻辑序号,序号从零开始,最近一条记录的序号为CNTS–1,CNTS为该分方案存储方案的总记录条数,序号占四个字节空间,本发明的冻结基准时间为2000年1月1日0时0分,根据需要进行调节,本发明时间戳序号索引的建立规则,具体如下:
[0043] 1)时间戳序号索引为循环队列,循环使用,由首指针start指向队列头(也就是有效的第一个索引),由尾指针end指向队列尾(也就是有效的最后一个索引);
[0044] 2)此方案的第一条记录(也就是电能表第一次上电运行后记录的第一条记录)需新建第一个时间戳序号索引;
[0045] 3)电能表掉电、往未来时间改时间(即时间变大)导致记录不连续时,此时需新建一个时间戳序号索引,以此确保每个索引指向一个连续时间段内的第一条记录,确保了为每个连续时间段新建了一条时间戳序号索引,确保了一个索引所索引的记录在时间上是连续的、无断点;
[0046] 4)往历史时间改时间(即时间变小),将被覆盖区域内的所有记录对应的队列尾时间戳序号索引无效掉,此后记录的新记录新建时间戳序号索引;
[0047] 5)时间戳序号索引对应连续时间段记录达到设定的单个时间戳序号索引最大记录数时,新建一个时间戳序号索引(此条规则不是必须的,可选部署,只要时间戳序号索引队列大小大于可能出现的掉电或改时间次数);
[0048] 步骤(D),根据建立的时间戳序号索引,提供基于时间戳序号索引的查找方法,采用二分法在时间戳序号索引循环队列进行查找,查找到用户请求记录所在的时间戳序号索引,得到对应的连续时间段内第一条记录的时间戳以及第一条记录的序号,从而计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置,
[0049] 其中,计算出该连续时间段内任何一条记录的发生时间和记录序号,并根据记录序号,得到该连续时间段内的任何一条记录的实际存储位置,包括以下步骤,[0050] (D11),将用户请求时间减去此连续时间段上第一个记录点的时间戳得到一个时间差,将该时间差除以该分方案存储方案的冻结周期,得到用户请求记录为此连续时间段的第几条记录RCD_NUM,。
[0051] (D12),根据得到的用户请求记录为此连续时间段的第几条记录RCD_NUM,计算出该用户请求记录的序号,该序号为时间戳序号索引保存的第一条记录的序号加上RCD_NUM,并根据该记录的序号,直接计算出此条记录在物理空间的存储偏移值,即得到此条记录的实际存储位置;
[0052] 计算一个分方案存储方案中连续时间段内上N次记录的实际存储位置,包括以下步骤,
[0053] (D21),上N次记录的序号SEQ_NO的计算公式为,SEQ_NO=CNTS–N;其中,CNTS为该分方案存储方案的总记录条数;
[0054] (D22),根据上N次记录的序号SEQ_NO,直接计算出上N次记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。
[0055] 计算一个分方案存储方案中连续时间段内最早记录的实际存储位置,包括以下步骤,
[0056] (D31),该分方案存储方案的时间戳序号索引循环队列的首指针所指向的时间戳序号索引为最早记录所在时间戳序号索引,从该时间戳序号索引直接获得最早记录的序号;
[0057] (D32),根据最早记录的序号,直接计算出最早记录在物理空间的存储偏移值,即得到此条记录的实际存储位置。
[0058] 根据本发明的连续时间段时间戳序号索引分钟冻结的存储和查找方法,介绍一具体实施例,
[0059] (1)将所有要进行冻结的分钟冻结记录数据对象进行分类,将存储的冻结周期相同的分为1类,形成一个存储方案,依据此方案内的数据项,计算出此方案每一条记录长度为PER_LEN,如此共形成多个方案;
[0060] (2)根据用户要求的存储深度决定分配给此方案的最大存储空间条目数MAX,将分配给分钟冻结记录的物理存储空间进行划分,每个存储方案划分一个记录数据区物理空间块,每类物理空间块大小为MAX*PER_LEN;划分形成的物理空间块,如图2所示,为多个方案分别划分时间戳序号索引存储空间,依据可能出现的掉电或改时间情况确定每个方案索引条目数,也可以依据每个方案的最大存储空间条目数MAX,以及单个时间戳序号索引最大记录数确定每个方案索引条目数;一个时间戳序号索引循环队列,如图3所示,为每个方案设计方案数据结构存储体,方案数据结构存储体保存方案当前冻结关联对象项;每个方案当前记录数CNTS以及当前时间戳序号索引首指针(start)、尾指针(end);每个方案存储第一条记录时,在时间戳序号索引队列中新建第一个时间戳序号索引,其中索引内第一条记录的时间戳为此条记录相对于基准时间的分钟数,而索引内第一条记录的序号SEQ_NO为0;电能表掉电后再上电、往未来时间改时间(即时间变大),如果检测到掉电时间和上电时间之间存在跨冻结周期的情况、或者改时间导致跨冻结周期,即下一条新冻结记录与最近一条冻结记录在时间上不连续,中间有断点,则下次记录新的冻结记录时将时间戳序号索引尾指针后移,并为此新记录新建时间戳序号索引,记录存储流程,如图4所示,根据冻结周期和当前时间判断冻结周期是否到;依据当前记录数CNTS作为当前记录序号,根据记录序号计算记录存储位置存储记录;判定是否是一个新的连续时间段,如果是一个新的连续时间段则在时间戳序号索引循环队列新建一条时间戳序号索引;当前记录数CNTS加1;
[0061] (3)查找指定时间点的记录:
[0062] 时间戳序号索引循环队列中每个索引是按每个连续时间段的时间先后顺序进行排列的,是个有序的升序队列,所以采用二分法在时间戳序号索引循环队列中查找就可以得到指定时间对应的时间戳序号索引,获得对应的时间戳序号索引就可以获得时间戳序号索引对应的连续时间段上第一个记录点的时间,将用户请求时间减去此连续时间段上第一个记录点的时间得到一个时间差,将此时间差除以此方案的冻结周期得到用户请求记录是此连续时间段的第几条记录(设为RCD_NUM),如果RCD_NUM大于等于此时间戳下记录条数(依据计算一个时间戳下实际记录条数的方法可以获得此时间戳下记录条数),则用户请求时间点不存在记录,否则RCD_NUM小于此时间戳下记录条数,则用户请求记录的序号(设为RCD_SEQ_NO)为SEQ_NO+RCD_NUM,如此就得到用户所请求记录的记录序号;
[0063] 由于本发明是按照不同的冻结周期进行分方案存储的,每个方案内的每一条记录都是等长的,所以根据记录序号(RCD_SEQ_NO)能计算出此条记录在分配给此方案记录的物理空间偏移OFFSET,公式为OFFSET=(RCD_SEQ_NO%MAX)*RCRD_SZ,MAX为分配给此方案的最大存储空间条目数,具体流程,如图5所示,
[0064] (4)查找大于等于指定时间记录流程:
[0065] 此流程用于查找一条时间大于等于用户指定时间的记录,如果存在等于用户指定时间的记录则返回此记录,否则继续查找一条时间大于用户指定时间的记录,具体流程,如图6所示,流程说明如下:
[0066] 将用户请求的指定时间转换为4字节的距离基准时间分钟数时间戳;
[0067] 将用户请求时间的时间戳按冻结周期对齐;
[0068] 在时间戳序号索引循环队列首指针和尾指针之间进行二分法查找;如果查找失败则返回无记录;
[0069] 计算此时间戳序号索引下实际记录条数;
[0070] 计算用户请求时间是时间戳序号索引下第几条记录(此条数设为RCD_NUM);
[0071] 如果RCD_NUM小于此时间戳序号索引下实际记录条数,则得到用户请求时间对应记录的记录序号为时间戳序号索引下第一条记录序号SEQ_NO+RCD_NUM;否则取当前时间戳的下个时间戳为查找记录所在时间戳序号索引,得到用户指定时间后的第一条记录的记录序号为此时间戳序号索引下第一条记录序号SEQ_NO;
[0072] (5)找指定时间范围内的记录,具体流程,如图7所示,流程说明如下:
[0073] 判定结束时间,如果用户请求的结束时间大于最后一条记录时间,则将查找的结束时间置为最后一条记录时间;
[0074] 调用查找大于等于指定时间记录接口获得起始时间对应记录序号和位置;
[0075] 调用查找大于等于指定时间记录接口获得结束时间对应记录序号和位置;
[0076] (6)查找上N次记录
[0077] 用户请求查找记录时,本模块通过序号SEQ_NO(序号为一条记录存储时,分配给该条记录的逻辑序号,序号从0开始,最近一条记录的序号为CNTS-1)索引每一条记录,上N次记录序号的计算公式为:SEQ_NO=CNTS–N;
[0078] (7)查找最早记录
[0079] 时间戳序号索引循环队列首指针所指向的时间戳序号索引就是最早记录所在时间戳序号索引,从此时间戳序号索引直接获得最早记录的序号SEQ_NO;
[0080] (8)当发生往历史时间改时间(即时间变小),移动时间戳序号索引循环队列尾指针将被覆盖区域内的所有记录对应的队列尾时间戳序号索引无效掉,此后新记录冻结记录时新建时间戳序号索引;往历史时间改时间处理流程,如图8所示。
[0081] 综上所述,本发明的连续时间段时间戳序号索引的分钟冻结存储和查找方法,包括将冻结周期相同的冻结数据对象一起存储,冻结周期不同的分别存储,形成按冻结周期相同的对象一起存储的分方案存储;依据掉电或改时间这些特定事件和操作识别和划分连续时间段,在存储记录时为每个新的连续时间段建立时间戳序号索引,时间戳序号索引保存了此连续时间段的第一条记录的时间戳以及第一条记录的序号;基于连续时间段的时间戳序号索引循环队列的二分法查找,就可以查找到用户请求记录所在的时间戳序号索引,得到此连续时间段内第一条记录的发生时间和第一条记录的序号,由此可以计算出此连续时间段内任何一条记录的发生时间和记录序号,依据记录序号就可以计算出任何一条记录的实际存储位置,由此完成对任何一条记录的查找;通过采用此方法的基于连续时间段的时间戳序号索引能大大减少为查找记录所必须建立的索引存储空间,同时提高海量分钟冻结数据的查找效率,具有良好的应用前景。
[0082] 以上描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。