实时数据库补历史数据方法、系统、存储介质及服务器与流程

文档序号:28814215发布日期:2022-02-09 05:15阅读:207来源:国知局
实时数据库补历史数据方法、系统、存储介质及服务器与流程

1.本发明属于数据处理技术领域,具体涉及一种实时数据库补历史数据方法、系统、存储介质及服务器。


背景技术:

2.实时数据库强调接收数据的实时性,实时变化的数据直观地反应了工业企业生产过程各项指标的变动,对于过程监管和优化控制起了很大的作用。同时实时数据在概念上随着时间的推移都会成为历史数据,所以实时数据库也可以称为实时历史数据库,历史数据的存储对于未来进行宏观展示和数据分析等也提供了关键的帮助。而且根据生产数据的特性,通常很难得知哪些数据在未来是必须的,因此保存所有数据是防止关键信息丢失的最好方法。
3.在实际数据采集中,无法保证所有数据都完整、实时的传输并入库,有些数据会因为传输设备故障或生产设备本身的原因产生滞后或缺失,或者从其他地方迁移到新的数据库中。这些数据已经成为历史数据,无法像实时数据一样实时入库,因此要采用补历史数据的方式入库。补历史数据通常需要耗费大量系统资源,因为可能需要查找大量的存档文件并多次写入补历史数据,如果不进行特殊处理会造成系统性能大幅度下降,严重影响到实时数据入库。
4.通常实时数据库普遍采用了数据缓存策略来控制数据入库,在补历史数据任务较少的情况下,缓存机制可以保证系统的正常运作。但在有大量补历史数据需求时,设置再大的补历史缓存也会在归档时影响系统的整体性能,频繁的i/o操作严重拖慢了入库速度,造成数据滞后。同时,在实时数据库对存档文件进行备份、整理或建立索引等较为耗费资源的“大任务”操作时,现有的缓存策略也无法避免补历史数据抢占资源,如果此时进行“大任务”操作的服务崩溃,可能会造成数据丢失。


技术实现要素:

5.本发明的目的在于针对上述现有技术中的问题,提供一种实时数据库补历史数据方法、系统、存储介质及服务器,改进了补历史数据缓存机制,在现有数据缓存基础上添加,合理分配使用系统资源,保证实时数据正常传输不受补历史数据影响,保持实时数据库系统性能。
6.为了实现上述目的,本发明有如下的技术方案:
7.一种实时数据库补历史数据方法,包括以下步骤:
8.接收补历史数据以数据页为单位存储在补历史缓存队列中;
9.从补历史缓存队列中取出固定页数进行批量归档,遍历所有待归档数据页;取一个待归档数据页,对存档文件进行遍历,将待归档数据页与存档文件时间范围进行比较;根据时间范围比较结果,将落在当前存档文件的数据写入存档文件进行归档,如果待归档数据页存在剩余数据,则对待归档数据页进行数据页分割,再继续遍历下一个存档文件;
10.当待归档数据页中所有数据都归档后,停止遍历存档文件,继续取下一个待归档数据页。
11.作为本发明实时数据库补历史数据方法的一种优选方案,补历史数据的缓存文件由无效数据缓存文件、冷数据缓存文件、无存档文件缓存文件及大任务缓存文件构成;
12.补历史数据归档前,若数据为无效数据,则将数据写入无效数据缓存文件中,用于问题排查和数据恢复,当数据恢复后,数据由无效数据缓存文件进行数据归档;
13.当补历史数据结束时间距当前时间超过系统参数中冷数据时间且系统数据归档压力判断为大时,数据满足冷数据缓存条件;补历史数据归档前,若满足冷数据缓存条件,则将补历史数据写入冷数据缓存文件中,当系统参数中冷数据时间设为0或系统数据归档压力判断为小时,数据由冷数据缓存文件进行数据归档,所述的系统数据归档压力由cpu使用率和每秒归档数据量来判断,超过其中一个设定值即判断为压力大;
14.补历史数据归档时,若没有对应时间范围的存档文件,则将数据写入无存档文件缓存文件中,当对应时间存档文件被创建后,数据由无存档文件缓存文件进行数据归档;
15.系统进行存档文件备份、整理、移动及索引建立操作统称为大任务,优先级高于补历史数据归档,补历史数据归档时,若有大任务正在执行,则将数据写入大任务缓存文件中,当大任务结束后,数据由大任务缓存文件进行数据归档。
16.作为本发明实时数据库补历史数据方法的一种优选方案,如果存档文件全部遍历完待归档数据页中仍有数据,将剩余数据写入无存档文件缓存文件中,待后续归档。
17.作为本发明实时数据库补历史数据方法的一种优选方案,所述从补历史缓存队列中取出固定页数进行批量归档的固定页数为1024,若队列中不足1024页,等待10秒,若队列中仍未增加新页,则将当前所有数据进行归档,若存在未满数据页,可以设定强制归档时间,默认60秒,若强制归档时间内未满数据页无补历史数据写入,对未满数据页进行归档;若强制归档时间设为0,则不进行强制归档,待数据页写满后进行归档。
18.作为本发明实时数据库补历史数据方法的一种优选方案,所述的待归档数据页取出后,首先判断有效性,如果数据页头部id为0或数据页大小为0,则为无效数据页,写入无效数据缓存文件,继续取下一个待归档数据页。
19.作为本发明实时数据库补历史数据方法的一种优选方案,所述的待归档数据页判断为有效页后,若数据满足冷数据缓存条件,则写入冷数据缓存文件,继续取下一个待归档数据页;当冷数据缓存文件中数据待系统参数中冷数据时间设为0或系统数据归档压力判断为小时再继续进行归档。
20.作为本发明实时数据库补历史数据方法的一种优选方案,所述的补历史数据写入存档文件时,若系统有大任务在执行,将即将写入的补历史数据写入大任务缓存文件,若待归档数据页存在剩余数据,继续遍历下一个存档文件,否则继续取下一个待归档数据页;大任务缓存文件中的数据在大任务执行完后再写入存档文件。
21.本发明还提出一种实时数据库补历史数据系统,包括:
22.补历史数据接收模块,用于接收补历史数据以数据页为单位存储在补历史缓存队列中;
23.补历史数据归档模块,用于从补历史缓存队列中取出固定页数进行批量归档,遍历所有待归档数据页;取一个待归档数据页,对存档文件进行遍历,将待归档数据页与存档
文件时间范围进行比较;根据时间范围比较结果,将落在当前存档文件的数据写入存档文件进行归档,如果待归档数据页存在剩余数据,则对待归档数据页进行数据页分割,再继续遍历下一个存档文件;
24.待归档数据页跳转模块,用于当待归档数据页中所有数据都归档后,停止遍历存档文件,继续取下一个待归档数据页。
25.本发明还提出一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的实时数据库补历史数据方法的步骤。
26.本发明还提出一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的实时数据库补历史数据方法的步骤。
27.相较于现有技术,本发明至少具有如下的有益效果:
28.本发明从补历史缓存队列中取出固定页数进行批量归档,遍历所有待归档数据页,取一个待归档数据页,对存档文件进行遍历,将待归档数据页与存档文件时间范围进行比较,根据时间范围比较结果,将落在当前存档文件的数据写入存档文件进行归档,如果待归档数据页存在剩余数据,则对待归档数据页进行数据页分割,再继续遍历下一个存档文件,改进了补历史数据缓存机制,解决了系统资源使用分配问题,保证实时数据正常传输不受补历史数据影响。本发明采用补历史数据缓存文件来调控补历史数据归档,保证了系统性能与稳定性。
29.进一步的,本发明在补历史数据缓存队列基础上,添加了四种补历史缓存文件,其中无效数据缓存文件和冷数据缓存文件是在待归档数据进行归档前进行判断,先排除无效数据,防止存档文件中存储损坏、无效数据,保证存档文件有效利用率;判断数据有效后进行冷数据缓存判断,冷数据的存档文件时间久远,一般存储在机械硬盘中,写入数据需要较长的查找时间和较多的系统资源,在系统数据归档压力较大时进行会造成性能大幅度下降,因此,将满足条件的补历史数据先写入冷数据缓存文件可以有效地确保数据库性能不下降。
30.进一步的,本发明的无存档文件缓存文件和大任务缓存文件是在待归档数据进行归档时进行判断,将没有对应时间范围存档文件的数据页或分割后的剩余数据存入无存档文件缓存文件,保证数据完整性;在系统进行大任务时,将当前要写入存档文件的数据先写入大任务缓存文件,防止数据归档抢占系统资源,确保系统的稳定性同时防止数据丢失。
31.进一步的,本发明的强制归档设定可以在补少量历史数据的情况下,通过强制归档来避免了补历史数据一直在缓存中未归档而无法查询的情况,同时可以在多次的少量补历史数据情况下,设定不强制归档防止过多的未写满数据归档,从而造成的存档文件使用率下降,保证磁盘空间有效利用,增强了实时数据库灵活性。
附图说明
32.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
33.图1本发明实施例实时数据库补历史数据方法的缓存文件组成图;
34.图2本发明实施例实时数据库补历史数据方法流程示意图;
35.图3本发明实施例缓存文件的工作流程图。
具体实施方式
36.为使本发明的目的、技术方案及优点更加清楚、明确,以下结合具体实施方式与附图对本发明进一步详细说明。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
37.参见图1,本发明提出一种实时数据库补历史数据缓存方法,首先接收补历史数据以数据页为单位存储在补历史缓存队列中,该补历史数据的缓存文件按功能划分由无效数据缓存文件faultdatabuffer.dat s1、冷数据缓存文件earlydatabuffer.dat s2、无存档文件缓存文件noarcbuffer.dat s3以及大任务缓存文件bigjobbuffer.dat s4构成。
38.其中,无效数据缓存文件faultdatabuffer.dat s1与冷数据缓存文件earlydatabuffer.dat s2在补历史数据归档前进行条件判断,而无存档文件缓存文件noarcbuffer.dat s3与大任务缓存文件bigjobbuffer.dat s4在归档时进行条件判断。
39.参见图2,本发明实时数据库补历史数据方法的一种实施例,包括以下步骤:
40.步骤s11:接收补历史数据以数据页为单位存储在补历史缓存队列中。
41.步骤s12:进行补历史归档时,从队列中取出固定页数进行批量归档,首先遍历所有待归档数据页;其中固定页数为1024,而缓存队列中能存储的页数远大于1024,因此在进行大量的补历史操作时,一次选取1024个数据页进行批量归档可以在系统可承受压力范围内保证缓存队列不被写满。如果进行少量的补历史操作,队列中不足1024页,此时进行归档会等待10秒,若队列中仍未增加新页,则将当前所有已满数据页进行归档。遍历数据页时若最后存在未满数据页,按照设定的强制归档时间,超过强制归档时间将未满数据页也进行归档;若强制归档时间设为0,则不进行强制归档,待数据页写满后再进行归档。
42.步骤s13:取一个待归档数据页,对存档文件进行遍历,将待归档数据页与存档文件时间范围进行比较。
43.步骤s14:将落在当前存档文件的数据写入存档文件进行归档,若待归档数据页存在剩余数据,进行数据页分割,继续遍历下一个存档文件。
44.步骤s15:当待归档数据页中所有数据都归档后,停止遍历存档文件,继续取下一个待归档数据页。
45.参见图3,待归档数据页在进行归档之前,首先判断有效性,若数据页头部id为0或数据页大小为0则为无效数据页,写入无效数据缓存文件faultdatabuffer.dat,继续取下一个待归档数据页;无效数据缓存文件faultdatabuffer.dat用于问题排查或数据恢复后再继续进行归档。
46.判断为有效页后,若数据满足冷数据缓存条件,写入冷数据缓存文件earlydatabuffer.dat,继续取下一个待归档数据页;冷数据缓存文件earlydatabuffer.dat中数据待系统参数中冷数据时间设为0或系统数据归档压力判断为
小时再继续进行归档。
47.数据写入存档文件时,若系统有大任务在执行,将即将写入的数据写入大任务缓存文件bigjobbuffer.dat,若待归档数据页存在剩余数据,继续遍历下一个存档文件,否则继续取下一个待归档数据页;大任务缓存文件bigjobbuffer.dat中数据在大任务执行完后再写入存档文件。
48.步骤s16:若存档文件全部遍历完待归档数据页中仍有数据,将剩余数据写入无存档文件缓存文件noarcbuffer.dat中,待后续归档。
49.在另一种实施方式中,一种实时数据库补历史数据系统,包括:
50.补历史数据接收模块,用于接收补历史数据以数据页为单位存储在补历史缓存队列中;
51.补历史数据归档模块,用于从补历史缓存队列中取出固定页数进行批量归档,遍历所有待归档数据页;取一个待归档数据页,对存档文件进行遍历,将待归档数据页与存档文件时间范围进行比较;根据时间范围比较结果,将落在当前存档文件的数据写入存档文件进行归档,如果待归档数据页存在剩余数据,则对待归档数据页进行数据页分割,再继续遍历下一个存档文件;
52.待归档数据页跳转模块,用于当待归档数据页中所有数据都归档后,停止遍历存档文件,继续取下一个待归档数据页。
53.本发明另一实施例还提出一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现所述的实时数据库补历史数据方法的步骤。
54.本发明另一实施例还提出一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的实时数据库补历史数据方法的步骤。
55.示例性的,所述的计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在计算机可读存储介质中,并由所述处理器执行,以完成本技术所述的实时数据库补历史数据方法的步骤。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在服务器中的执行过程。
56.所述服务器可以是笔记本、台式电脑及云端服务器等计算设备。所述服务器可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述服务器还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如,所述服务器还可以包括输入输出设备、网络接入设备、总线等。
57.所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
58.所述存储器可以是所述服务器的内部存储单元,例如服务器的硬盘或内存。所述存储器也可以是所述服务器的外部存储设备,例如所述服务器上配备的插接式硬盘,智能
存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器还可以既包括所述服务器的内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机可读指令以及所述服务器所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
59.需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
60.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
61.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。
62.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
63.以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1