CN117742938A - 历史趋势数据管理方法及装置 - Google Patents
历史趋势数据管理方法及装置 Download PDFInfo
- Publication number
- CN117742938A CN117742938A CN202311608887.8A CN202311608887A CN117742938A CN 117742938 A CN117742938 A CN 117742938A CN 202311608887 A CN202311608887 A CN 202311608887A CN 117742938 A CN117742938 A CN 117742938A
- Authority
- CN
- China
- Prior art keywords
- data block
- bit number
- data
- idle
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000013523 data management Methods 0.000 title claims abstract description 29
- 238000004590 computer program Methods 0.000 claims description 17
- 230000003139 buffering effect Effects 0.000 claims description 3
- 239000002699 waste material Substances 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种历史趋势数据管理方法及装置。其中,该方法包括:申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。本申请解决了集散控制系统行业中采用共享内存存储历史趋势数据时存在内存浪费和资源不足的技术问题。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种历史趋势数据管理方法及装置。
背景技术
随着DCS(Distributed Control System,集散控制系统)技术的发展,数据处理的量级增加明显,为了提高数据处理的效率,有效利用计算机资源,通常利用共享内存的方式进行数据缓存。在现有的DCS行业系统中,历史趋势数据处理常面临两个问题:内存浪费和资源不足。由于历史趋势数据通常以连续的时间间隔被记录,固定大小的共享内存段不适合保存不断增长的历史数据。此外,在组态太大但实际数据量不大的情况下,传统的按照位号分配共享内存分配方式也会导致内存浪费。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种历史趋势数据管理方法及装置,以至少解决集散控制系统行业中采用共享内存存储历史趋势数据时存在内存浪费和资源不足的技术问题。
根据本申请实施例的一个方面,提供了一种历史趋势数据管理方法,包括:申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
可选地,在将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域之后,方法还包括:获取集散控制系统中所有位号的位号信息,并将位号信息存储至头部区域;建立每个位号的索引信息,其中,索引信息中包括位号对应的数据块链表的首地址信息,首地址信息为空时表示位号暂无对应的数据块链表、暂未存储对应的运行数据。
可选地,将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,包括:对于每个位号,在获取到位号的运行数据时,确定位号对应的数据块链表的首地址信息是否为空;若首地址信息为空,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址写入目标数据块链表的首地址信息中;若首地址信息不为空,确定位号对应的数据块链表的链尾数据块节点是否存在剩余存储容量;若链尾数据块节点存在剩余存储容量,确定链尾数据块节点为目标数据块节点,将位号的运行数据缓存至目标数据块节点中;若链尾数据块节点不存在剩余存储容量,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址链接至链尾数据块节点的尾地址。
可选地,空闲数据块缓存池中的所有数据块节点的存储容量均相同,申请第二预设容量的第二共享内存作为扩展数据区域,包括:申请数据块节点存储容量的整数倍大小容量的第二共享内存作为扩展数据区域。
可选地,周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,包括:对于每个位号,每经过第一预设时间段,将位号在第一预设时间段内缓存的所有运行数据存储至位号对应的历史趋势数据文件中,其中,每个位号对应一个历史趋势数据文件。
可选地,将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中,包括:对于每个位号,将位号对应的数据块链表的数据块节点中的运行数据清空,并将清空后的数据块节点释放回空闲数据块缓存池中;将头部区域中位号对应的数据块链表的首地址信息清空。
可选地,对于空闲数据块缓存池中的任一空闲数据块节点,若空闲数据块节点经过第二预设时间段后仍未被使用,将空闲数据块节点从空闲数据块缓存池中删除,释放空闲数据块节点对应的共享内存。
根据本申请实施例的另一方面,还提供了一种历史趋势数据管理装置,包括:初始化模块,用于申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;缓存模块,用于实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;存储模块,用于周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的计算机程序,其中,非易失性存储介质所在设备通过运行该计算机程序执行上述的历史趋势数据管理方法。
根据本申请实施例的另一方面,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行上述的历史趋势数据管理方法。
在本申请实施例中,申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中,通过动态扩展共享内存并按实际数据量重复使用共享内存的方式管理DCS系统中的历史趋势数据,可以有效利用计算机内存资源,并且适用于不同数据缓存场景,有效解决了集散控制系统行业中采用共享内存存储历史趋势数据时存在内存浪费和资源不足的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的计算机终端的结构示意图;
图2是根据本申请实施例的一种可选的历史趋势数据管理方法的流程示意图;
图3是根据本申请实施例的一种可选的索引信息的结构示意图;
图4是根据本申请实施例的一种可选的运行数据缓存的流程示意图;
图5是根据本申请实施例的一种可选的历史趋势数据管理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,首先对本申请实施例描述过程中出现的部分名词或术语翻译解释如下:
集散控制系统:是以微处理器为基础,采用控制功能分散、显示操作集中、兼顾分而自治和综合协调的设计原则的新一代仪表控制系统。
共享内存:一种用于多个进程或线程之间共享数据的机制。它是一块被映射到多个进程或线程地址空间中的内存区域,使得它们可以直接访问相同的内存内容,而无需进行数据拷贝。
位号:用于标识和访问设备、传感器、执行器或其他实体的唯一标识符。
实施例1
根据本申请实施例,提供了一种历史趋势数据管理方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现历史趋势数据管理方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的历史趋势数据管理方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请实施例提供了一种历史趋势数据管理方法,如图2所示,该方法包括如下步骤:
步骤S202,申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;
步骤S204,实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;
步骤S206,周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
以下结合具体的实施过程对历史趋势数据管理方法的各步骤进行说明。
作为一种可选的实施方式,在将第一共享内存划分完头部区域和数据区域之后,获取集散控制系统中所有位号的位号信息,并将位号信息存储至头部区域;建立每个位号的索引信息,其中,索引信息中包括该位号对应的数据块链表的首地址信息,首地址信息为空时表示该位号暂无对应的数据块链表、暂未存储对应的运行数据。
其中,数据区域中是以数据块节点的形式存储数据,头部区域是以位号ID建立数据块的索引信息,在接收到新的运行数据时,可以通过其对应的首地址信息确定该运行数据缓存到的数据块节点,数据链表中数据区域的数据块节点可以是一个或多个,图3示出了一种可选的索引信息的结构示意图。
具体地,可以通过如下方式将运行数据缓存至目标数据块节点:对于每个位号,在获取到位号的运行数据时,首先确定该位号对应的数据块链表的首地址信息是否为空;若首地址信息为空,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址写入目标数据块链表的首地址信息中;若首地址信息不为空,确定该位号对应的数据块链表的链尾数据块节点是否存在剩余存储容量;若链尾数据块节点存在剩余存储容量,确定链尾数据块节点为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中;若链尾数据块节点不存在剩余存储容量,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址链接至链尾数据块节点的尾地址。
具体而言,在首地址信息为空或者链尾数据块节点不存在剩余存储容量时,需要在空余数据块缓存池中寻找新的数据块节点,此时需要继续判断空闲数据块缓存池中的所有数据块节点是否均被使用,如果空闲数据块缓存池中的所有数据块节点均被使用则需要申请第二预设容量的第二共享内存作为扩展数据区域。
由于所有数据块节点的大小均相同,因此可以申请数据块节点存储容量的整数倍大小容量的第二共享内存作为扩展数据区域,进一步地,数据块节点的存储容量可以根据实际的业务需求限制大小进行设置,例如可以设置为每个数据块节点最多存储600个节点数,相应地,共享内存总大小也可以根据实际需求设置,例如可以设置为2G。
图4示出了一种可选的运行数据缓存的流程示意图,具体包括以下流程:
S1,获取位号m的运行数据;
S2,确定位号m对应的数据块链表的首地址信息是否为空,如果首地址信息为空则执行步骤S3,否则执行步骤S4;
S3,确定空闲数据块缓存池中是否有空闲数据块节点,如果有空闲数据块节点则执行步骤S5,否则执行步骤S8之后再执行步骤S5;
S4,确定位号m的数据块链表的链尾数据块节点是否存在剩余存储容量,如果存在剩余容量则执行步骤S9,否则执行步骤S6;
S5,获取新的数据块节点,将该运行数据缓存至该数据块节点,并将该数据块节点的首地址写入该数据块链表的首地址信息中;
S6,确定空闲数据块缓存池中是否有空闲数据块节点,如果有空闲数据块节点则执行步骤S7,否则执行步骤S8之后再执行步骤S7;
S7,获取新的数据块节点,并将位号m的运行数据直接缓存至该空闲数据块节点,并将该节点的首地址链接至链尾数据块节点的尾地址;
S8,申请第二共享内存作为扩展数据区域,并将其初始化至空闲数据块缓存池中;
S9,将位号m的运行数据直接缓存至该数据块节点。
可选地,周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,可以通过如下方式进行:对于每个位号,每经过第一预设时间段,将该位号在第一预设时间段内缓存的所有运行数据存储至该位号对应的历史趋势数据文件中,其中,每个位号对应一个历史趋势数据文件。
其中,第一预设时间段可以根据实际需求自行设置,在本申请实施例中,将第一预设时间段设置为10分钟,每隔10分钟即对缓存的位号数据保存到历史趋势数据文件,可以回收相应的数据块节点以供后续新的运行数据使用,可以提高数据块节点的利用率,减少不必要的资源浪费。
在位号中缓存的所有运行数据存储至该位号对应的历史趋势数据文件之后,将该位号对应的数据链表的数据块节点释放回空闲数据块缓存池中,具体可以通过如下方式进行:对于每个位号,将该位号对应的数据块链表的数据块节点中的运行数据清空,并将清空后的数据块节点释放回空闲数据块缓存池中;将头部区域中该位号对应的数据块链表的首地址信息清空。
为了进一步提高DCS系统中的内存管理和数据保存的效率,可以对一定时间内数据块节点中未使用的共享内存进行回收,保证共享内存利用最大化。
可选地,对于空闲数据块缓存池中的任一空闲数据块节点,若空闲数据块节点经过第二预设时间段后仍未被使用,将空闲数据块节点从空闲数据块缓存池中删除,释放空闲数据块节点对应的共享内存。
相应地,第二预设时间也可以根据实际需求自行设置,在本申请实施例中将其设置为30分钟,即记录空闲数据块节点的最后一次时间,如果最后一次使用时间距离当前时间已经超过30分钟,就将该节点认为是空闲数据块节点,对其进行删除并释放其对应的共享内存。
在本申请实施例中,申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中,通过动态扩展共享内存并按实际数据量重复使用共享内存的方式管理DCS系统中的历史趋势数据,可以有效利用计算机内存资源,并且适用于不同数据缓存场景,有效解决了集散控制系统行业中采用共享内存存储历史趋势数据时存在内存浪费和资源不足的技术问题。
实施例2
根据本申请实施例,还提供了一种用于实现实施例1中的历史趋势数据管理方法的历史趋势数据管理装置,如图5所示,该历史趋势数据管理装置中至少包括:初始化模块51,缓存模块52和存储模块53,其中:
初始化模块51,用于申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;
缓存模块52,用于实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;
存储模块53,用于周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
以下结合具体的实施过程对历史趋势数据管理装置的各模块功能进行具体说明。
作为一种可选的实施方式,在初始化模块将第一共享内存划分完头部区域和数据区域之后,获取集散控制系统中所有位号的位号信息,并将位号信息存储至头部区域;建立每个位号的索引信息,其中,索引信息中包括该位号对应的数据块链表的首地址信息,首地址信息为空时表示该位号暂无对应的数据块链表、暂未存储对应的运行数据。
其中,数据区域中是以数据块节点的形式存储数据,头部区域是以位号ID建立数据块的索引信息,在接收到新的运行数据时,可以通过其对应的首地址信息确定该运行数据缓存到的数据块节点,数据链表中数据区域的数据块节点可以是一个或多个图3示出了一种可选的索引信息的结构示意图。
具体地,缓存模块可以通过如下方式将运行数据缓存至目标数据块节点:对于每个位号,在获取到该位号的运行数据时,首先确定该位号对应的数据块链表的首地址信息是否为空;若首地址信息为空,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址写入目标数据块链表的首地址信息中;若首地址信息不为空,确定该位号对应的数据块链表的链尾数据块节点是否存在剩余存储容量;若链尾数据块节点存在剩余存储容量,确定链尾数据块节点为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中;若链尾数据块节点不存在剩余存储容量,从空闲数据块缓存池中获取任一空闲数据块节点作为目标数据块节点,将该位号的运行数据缓存至目标数据块节点中,并将目标数据块节点的首地址链接至链尾数据块节点的尾地址。
具体而言,在首地址信息为空或者链尾数据块节点不存在剩余存储容量时,需要在空余数据块缓存池中寻找新的数据块节点,此时需要继续判断空闲数据块缓存池中的所有数据块节点是否均被使用,如果空闲数据块缓存池中的所有数据块节点均被使用则需要申请第二预设容量的第二共享内存作为扩展数据区域。
由于所有数据块节点的大小均相同,因此可以申请数据块节点存储容量的整数倍大小容量的第二共享内存作为扩展数据区域,进一步地,数据块节点的存储容量可以根据实际的业务需求限制大小进行设置,例如可以设置为每个数据块节点最多存储600个节点数,相应地,共享内存总大小也可以根据实际需求设置,例如可以设置为2G。
图4示出了一种可选的运行数据缓存的流程示意图,具体包括以下流程:
S1,获取位号m的运行数据;
S2,确定位号m对应的数据块链表的首地址信息是否为空,如果首地址信息为空则执行步骤S3,否则执行步骤S4;
S3,确定空闲数据块缓存池中是否有空闲数据块节点,如果有空闲数据块节点则执行步骤S5,否则执行步骤S8之后再执行步骤S5;
S4,确定位号m的数据块链表的链尾数据块节点是否存在剩余存储容量,如果存在剩余容量则执行步骤S9,否则执行步骤S6;
S5,获取新的数据块节点,将该运行数据缓存至该数据块节点,并将该数据块节点的首地址写入该数据块链表的首地址信息中;
S6,确定空闲数据块缓存池中是否有空闲数据块节点,如果有空闲数据块节点则执行步骤S7,否则执行步骤S8之后再执行步骤S7;
S7,获取新的数据块节点,并将位号m的运行数据直接缓存至该空闲数据块节点,并将该节点的首地址链接至链尾数据块节点的尾地址;
S8,申请第二共享内存作为扩展数据区域,并将其初始化至空闲数据块缓存池中;
S9,将位号m的运行数据直接缓存至该数据块节点。
可选地,存储模块周期性地将各个位号已缓存的所有运行数据存储至历史趋势数据文件,可以通过如下方式进行:对于每个位号,每经过第一预设时间段,将该位号在第一预设时间段内缓存的所有运行数据存储至该位号对应的历史趋势数据文件中,其中,每个位号对应一个历史趋势数据文件。
其中,第一预设时间段可以根据实际需求自行设置,在本申请实施例中,将第一预设时间段设置为10分钟,每隔10分钟即对缓存的位号数据保存到历史趋势数据文件,可以回收相应的数据块节点以供后续新的运行数据使用,可以提高数据块节点的利用率,减少不必要的资源浪费。
在位号中缓存的所有运行数据存储至该位号对应的历史趋势数据文件之后,将该位号对应的数据链表的数据块节点释放回空闲数据块缓存池中,具体可以通过如下方式进行:对于每个位号,将该位号对应的数据块链表的数据块节点中的运行数据清空,并将清空后的数据块节点释放回空闲数据块缓存池中;将头部区域中位号对应的数据块链表的首地址信息清空。
为了进一步提高DCS系统中的内存管理和数据保存的效率,可以对一定时间内数据块节点中未使用的共享内存进行回收,保证共享内存利用最大化。
可选地,对于空闲数据块缓存池中的任一空闲数据块节点,若空闲数据块节点经过第二预设时间段后仍未被使用,将空闲数据块节点从空闲数据块缓存池中删除,释放空闲数据块节点对应的共享内存。
相应地,第二预设时间也可以根据实际需求自行设置,在本申请实施例中将其设置为30分钟,即记录空闲数据块节点的最后一次时间,如果最后一次使用时间距离当前时间已经超过30分钟,就将该节点认为是空闲数据块节点,对其进行删除并释放其对应的共享内存。
需要说明的是,本申请实施例中的历史趋势数据管理装置中的各模块与实施例1中的历史趋势数据管理方法的各实施步骤一一对应,由于实施例1中已经进行了详尽的描述,本实施例中部分未体现的细节可以参考实施例1,在此不再过多赘述。
实施例3
根据本申请实施例,还提供了一种非易失性存储介质,该非易失性存储介质包括存储的计算机程序,其中,非易失性存储介质所在设备通过运行该计算机程序执行实施例1中的历史趋势数据管理方法。
具体地,非易失性存储介质所在设备通过运行该计算机程序执行实现以下步骤:申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
根据本申请实施例,还提供了一种处理器,该处理器用于运行计算机程序,其中,计算机程序运行时执行实施例1中的历史趋势数据管理方法。
具体地,计算机程序运行时执行实现以下步骤:申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
根据本申请实施例,还提供了一种电子设备,该电子设备包括:存储器和处理器,其中,存储器中存储有计算机程序,处理器被配置为通过计算机程序执行实施例1中的历史趋势数据管理方法。
具体地,计算机程序运行时执行实现以下步骤:申请第一预设容量的第一共享内存,将第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将数据区域初始化至空闲数据块缓存池中;实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至位号对应的数据块链表的目标数据块节点中,其中,目标数据块节点是从空闲数据块缓存池中获取的数据块节点,在空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将第二共享内存初始化至空闲数据块缓存池中;周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回空闲数据块缓存池中。
上述实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种历史趋势数据管理方法,其特征在于,包括:
申请第一预设容量的第一共享内存,将所述第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将所述数据区域初始化至空闲数据块缓存池中;
实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至所述位号对应的数据块链表的目标数据块节点中,其中,所述目标数据块节点是从所述空闲数据块缓存池中获取的数据块节点,在所述空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将所述第二共享内存初始化至所述空闲数据块缓存池中;
周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回所述空闲数据块缓存池中。
2.根据权利要求1所述的方法,其特征在于,在将所述第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域之后,所述方法还包括:
获取所述集散控制系统中所有位号的位号信息,并将所述位号信息存储至所述头部区域;
建立每个位号的索引信息,其中,所述索引信息中包括位号对应的数据块链表的首地址信息,所述首地址信息为空时表示位号暂无对应的数据块链表、暂未存储对应的运行数据。
3.根据权利要求2所述的方法,其特征在于,将每个位号的运行数据缓存至所述位号对应的数据块链表的目标数据块节点中,包括:
对于每个位号,在获取到所述位号的运行数据时,确定所述位号对应的数据块链表的首地址信息是否为空;
若所述首地址信息为空,从所述空闲数据块缓存池中获取任一空闲数据块节点作为所述目标数据块节点,将所述位号的运行数据缓存至所述目标数据块节点中,并将所述目标数据块节点的首地址写入所述目标数据块链表的首地址信息中;
若所述首地址信息不为空,确定所述位号对应的数据块链表的链尾数据块节点是否存在剩余存储容量;
若所述链尾数据块节点存在剩余存储容量,确定所述链尾数据块节点为所述目标数据块节点,将所述位号的运行数据缓存至所述目标数据块节点中;
若所述链尾数据块节点不存在剩余存储容量,从所述空闲数据块缓存池中获取任一空闲数据块节点作为所述目标数据块节点,将所述位号的运行数据缓存至所述目标数据块节点中,并将所述目标数据块节点的首地址链接至所述链尾数据块节点的尾地址。
4.根据权利要求1所述的方法,其特征在于,所述空闲数据块缓存池中的所有数据块节点的存储容量均相同,申请第二预设容量的第二共享内存作为扩展数据区域,包括:
申请所述数据块节点存储容量的整数倍大小容量的所述第二共享内存作为所述扩展数据区域。
5.根据权利要求2所述的方法,其特征在于,周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,包括:
对于每个位号,每经过第一预设时间段,将所述位号在所述第一预设时间段内缓存的所有运行数据存储至所述位号对应的历史趋势数据文件中,其中,每个位号对应一个历史趋势数据文件。
6.根据权利要求5所述的方法,其特征在于,将各个位号对应的数据块链表的数据块节点释放回所述空闲数据块缓存池中,包括:
对于每个位号,将所述位号对应的数据块链表的数据块节点中的运行数据清空,并将清空后的数据块节点释放回所述空闲数据块缓存池中;
将所述头部区域中所述位号对应的数据块链表的首地址信息清空。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对于所述空闲数据块缓存池中的任一空闲数据块节点,若所述空闲数据块节点经过第二预设时间段后仍未被使用,将所述空闲数据块节点从所述空闲数据块缓存池中删除,释放所述空闲数据块节点对应的共享内存。
8.一种历史趋势数据管理装置,其特征在于,包括:
初始化模块,用于申请第一预设容量的第一共享内存,将所述第一共享内存划分为用于存储位号索引信息的头部区域和用于存储位号运行数据的数据区域,并将所述数据区域初始化至空闲数据块缓存池中;
缓存模块,用于实时获取集散控制系统中各个位号的运行数据,并将每个位号的运行数据缓存至所述位号对应的数据块链表的目标数据块节点中,其中,所述目标数据块节点是从所述空闲数据块缓存池中获取的数据块节点,在所述空闲数据块缓存池中的所有数据块节点均被使用时,申请第二预设容量的第二共享内存作为扩展数据区域,并将所述第二共享内存初始化至所述空闲数据块缓存池中;
存储模块,用于周期性将各个位号已缓存的所有运行数据存储至历史趋势数据文件,并将各个位号对应的数据块链表的数据块节点释放回所述空闲数据块缓存池中。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的计算机程序,其中,所述非易失性存储介质所在设备通过运行所述计算机程序执行权利要求1至7中任意一项所述的历史趋势数据管理方法。
10.一种电子设备,其特征在于,包括:存储器和处理器,其中,所述存储器中存储有计算机程序,所述处理器被配置为通过所述计算机程序执行权利要求1至7中任意一项所述的历史趋势数据管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311608887.8A CN117742938A (zh) | 2023-11-28 | 2023-11-28 | 历史趋势数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311608887.8A CN117742938A (zh) | 2023-11-28 | 2023-11-28 | 历史趋势数据管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117742938A true CN117742938A (zh) | 2024-03-22 |
Family
ID=90255324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311608887.8A Pending CN117742938A (zh) | 2023-11-28 | 2023-11-28 | 历史趋势数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117742938A (zh) |
-
2023
- 2023-11-28 CN CN202311608887.8A patent/CN117742938A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020156259A1 (zh) | 内存管理方法、装置、移动终端及存储介质 | |
CN109062512A (zh) | 一种分布式存储集群、数据读写方法、系统及相关装置 | |
CN108845877B (zh) | 管理内存的方法、装置和系统 | |
CN110196770B (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
CN109299190B (zh) | 分布式存储系统中处理对象的元数据的方法及装置 | |
CN107301093A (zh) | 一种管理资源的方法和装置 | |
CN105743808A (zh) | 一种适配QoS的方法和装置 | |
CN112822060B (zh) | 主机网络的构建方法、装置、系统、介质和主机 | |
CN109947667B (zh) | 数据访问预测方法和装置 | |
CN111372027A (zh) | 视频文件的存储方法及装置、存储介质、电子装置 | |
WO2017166997A1 (zh) | 智能网卡侧的异常处理方法和装置 | |
CN109783002B (zh) | 数据读写方法、管理设备、客户端和存储系统 | |
CN114398397A (zh) | 数据处理方法、装置、存储介质以及系统 | |
US7900010B2 (en) | System and method for memory allocation management | |
CN109614354B (zh) | 接口分配方法、板卡、设备及存储介质 | |
CN114995770B (zh) | 一种数据处理方法、装置、设备、系统及可读存储介质 | |
CN115794417A (zh) | 内存管理方法及装置 | |
CN117742938A (zh) | 历史趋势数据管理方法及装置 | |
CN112395040A (zh) | 内存数据传输方法、系统及服务器 | |
CN115733800A (zh) | 一种网卡选择方法、系统、电子设备及介质 | |
CN105450488B (zh) | 一种数据处理方法及相关装置 | |
CN113110950A (zh) | 处理器及通信方法、存储介质及计算设备 | |
CN113778688A (zh) | 内存管理系统、内存管理方法、内存管理装置 | |
CN111625502A (zh) | 数据读取方法及装置、存储介质、电子装置 | |
CN106021121B (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 |