一种面向快速回放的实时测点数据存储方法

文档序号:6580332阅读:465来源:国知局

专利名称::一种面向快速回放的实时测点数据存储方法
技术领域
:本发明涉及实时测点数据库领域,尤其涉及一种面向快速回放的实时测点熟据存储方法。背设技术目前,实时测点数据的特点是结构简单,采集频率高,数据量很大,对实时性要求高。通常,这些实时测点数据以工控系统厂商的某种文件格式存储,或存储在商业的实时测点数据库中。保存下来的实时测点数据(也就是历史数据)是非常珍贵的资料。如果要对过去发生的事故进行调查分析,最好的办法是能够真实、完整地再现当时的情景,也就是历史数据回放。就像播放一部影片,如果错过了一段,可以通过移动指针,回放那个片段。然而,通常实时测点数据库并不支持这样做,部分数据库厂商声称支持历史数据回放,但其存储结构不可能为此专门设计,这是因为早期的物理存储设备价格昂贵,而实时测点数据库对物理存储设备的需求量又非常大,所以为了节省成本,早期的实时测点数据库在设计时首要关注的是数据压縮存放。以()SISoft公司的PI数据库为例,PI在实时测点数据的存储上为了最大化的縮减磁盘空间和提高压縮比,采用变长记录的存储方式,不惜牺牲时间精度。对于时间戳的存储,PI采用的是差分法,即只存储与前一条记录的时间戳之差值。在数据管理上,PI采用分块(分页)的管理方式,每块(页)的大小为1024字节,每个块里存储的是单个测点的历史数据值。以上这些存储方式,最大化的节省了存储空间,但这种时间换空间的方式无疑增加了CPU的负担,也给历史数据的利用造成了很大局限,如果想要针对电厂的一次设备事故进行快速历史回放,仅仅使用PI实时测点数据库是难以实现的。,磁盘空间己经不是实时测点数据存储首要考虑的问题,在这种情况下,如何优化存储结构,合理利用数据,在海量数据中快速检索回放才是需要重点考虑的问题,但就目前来说,市场上还没有一款实时测点数据库产品很好的解决这个问题。
发明内容.本发明的目的是提供一种面向快速回放的实时测点数据存储方法,应用这种存储方法可以提高历史数据检索速度,满足在海量数据中快速回放的需要。一种面向快速回放的实时测点数据存储方法,其中包括如下歩骤a)、将要存储的实时数据测点分组,每个实时数据测点分组以下简称为实时组,实时组具有如下信息ID:全局唯一的编号;DataType:测点数据类型;-Step:采集周期;TagS:测点列表;GatherTime:采集时间;Save(〕achc:存储缓冲区;b)、进入实时组对象初始化流程;之后,进入步骤c)c)、进入打开历史数据文件流程;之后,进入步骤d);d)、从实时测点数据采集单元中读取实时测点的时间和所有实时测点的实时数据,进行二进制编码后写入存储缓冲区;之后,进入步骤e);c)、用当前的计算机时间更新实时组的采集时间GatherTime;之后,进入步骤f);f)、判断存储缓冲区是否满,若是,进入步骤g),若否,进入步骤h);g)、将存储缓冲区内的数据写入历史数据文件;之后清空存储缓冲区,进入歩骤h);h)、判断是否进行下一次实时数据采集,判断方法是计算当前计算机时间与实时组的采集时间GatherTime之差是否大于预设的采集周期,若大于或等于,则进入步骤d),进行下一次实时数据采集;若小于,则进入歩骤i);i)、阻塞实时组数据采集线程,使其暂停2秒;之后,返回步骤h)。所述的面向快速回放的实时测点数据存储方法,其中所述的步骤b)中具体包括如下步骤bl)、读取实时组配置信息,得到实时组编号、数据类型、采集周期、测点列表等基础信息;b2)、对实时组对象的测点列表按照测点编号进行升序排序;b3)、计算一次实时测点数据记录的长度(字节数)实时测点数据记录包括采集时间和实时测点数据块两部分,实时测点数据块是实时组内所有实时测点以二进制方式存储的一块区域,实时测点数据块的长度Srt为单个实时组测点的数据长度SptX测点数Sp+采集时间值长度St,计算公式为Srt-SptXSp卜St;b4)、构建存储缓冲区,在内存中为实时组创建一个存储缓冲区,存储缓冲区在内存中分配的字节数为10次实时测点数据记录的长度之和。所述的面向快速回放的实时测点数据存储方法,其中所述步骤C)中包括如下歩骤Cl)、判断要创建的历史数据文件的上级目录是否存在,若是,进入步骤e3),若否,进入步骤c2);.c:2)、创建待建历史数据文件的上级目录;采用年份和月份作为历史数据文件的上级目录;之后,进入步骤c3);c3)、判断要打开的历史数据文件是否存在,若是,进入步骤c6),若否,进入歩骤c4)c:4)、创建历史数据文件并打开;历史数据文件的名称由实时组编号和实时测点数据釆集日期组成;之后,进入步骤c5);c5)、构建历史数据文件头部信息,历史数据文件头部信息由测点个数、测点列表、数据类型,采集周期、版本号组成,历史数据文件头部信息采用二进制编码后写入历史数据文件中。之后,进入步骤c8);c6)、打开历史数据文件;之后,进入步骤c7);.C7)、移动指针至历史数据文件尾部;之后,进入歩骤C8);c8)、打开历史数据文件流程结束。本发明采用上述技术方案将达到如下的技术效果本发明的面向快速回放的实时测点数据存储方法,运用分组策略,依据实时数据测点的设备分类、数据类型、采集周期等信息对实时数据测点进行分组。依据设备分类来分组的目的在于,实时数据测点是与设备相关联的,对某一设备的分析回放就是对这一类设备的实时数据测点历史数据的回放,所以按照设备分类可以保证数据回放所需的历史数据是聚集的而不是分散的,聚集的数据能有效提高检索速度;依据实时数据测点的数据类型来分组的目的在于,相同数据类型的实时数据测点划分为一个分组,保证了每次读取和存储的历史数据记录长度是确定的,这种定长记录的方式是实现数据快速检索的基础;依据实时数据测点的采集周期来分组的目的在于,将有相同采集精度要求的实时数据测点划分在一个实时组内,可以保证存储下来的历史数据记录之间的时间间隔是确定的,这种定周期的存储方式在历史数据回放时可以通过计算得到要检索时间段在数据文件中的准确位置,而不需要通过遍历整个文件这种低效的方法来定位历史数据。运用上述的分组策略,从而体现了本发明在数据存储上的数据聚集性、定长记录和定周期存储的特性。本发明的面向快速回放的实时测点数据存储方法,运用自描述设计,通过历史数据文件名标识了实时组编号和采集日期,通过历史数据文件的头部8信息标识了实时组的测点列表、数据类型、采集周期等基础信息。这样的设计使各个数据文件之间没有依赖性,数据文件与系统之间没有依赖性,只要遵循文件结构便可解析数据文件。每个文件都可以自解析,这样即便是同一实时组的测点列表发生了变化,变化前产生的历史数据文件无需做任何改变也可以被正确解析。这种自描述设计也为历史数据文件的分发和独立使用提供了可能性。附阁说明图1为本发明面向快速回放的实时测点数据存储方法的主程序流程图;图2为图1所示主程序中步骤b)实时组对象初始化流程的程序流程图;图3为图1所示主程序中步骤C)构建历史数据文件流程的程序流程图;图4为本发明技术方案中历史数据文件的上级目录结构图。"体实施方式一种面向快速回放的实时测点数据存储方法,见图1所示的流程图,具体包括如下步骤a)、将要存储的实时数据测点分组,每个实时数据测点分组以下简称为实时组,实时组具有如下信息ID:全局唯一的编号;I)ataTypc:测点数据类型;Step:采集周期;Tags:测点列表;GatherTime:采集时间;SavcCache:存储缓冲区;.b)、进入实时组对象初始化流程;之后,进入步骤C)C)、进入打开历史数据文件流程;之后,进入歩骤d);d)、从实时测点数据采集单元中读取实时测点的时间和所有实时测点的实时数据,进行二进制编码后写入存储缓冲区;之后,进入步骤e);c)、用当前的计算机时间更新实时组的采集时间(GatherTime);之后,进入步骤f);JD、判断存储缓冲区是否满,若是,进入歩骤g),若否,进入步骤h);g)、将存储缓冲区内的数据写入历史数据文件;之后清空存储缓冲区,进入歩骤h);h)、判断是否进行下一次实时数据采集,判断方法是计算当前计算机时间与实时组的采集时间GatherTime之差是否大于预设的采集周期,若大于或等于,则进入步骤d),进行下一次实时数据采集;若小于,则进入步骤i);0、阻塞实时组数据采集线程,使其暂停2秒;之后,返回步骤h)。图2为图1中的步骤"实时组对象初始化流程"的程序流程图,具体包括如下步骤bl)、读取实时组配置信息,得到实时组编号、数据类型、采集周期、测点列表等基础信息;b2)、对实时组对象的测点列表按照测点编号进行升序排序;.b3)、计算一次实时测点数据记录的长度(字节数)实时测点数据记录包括采集时间和实时测点数据块两部分,实时测点数据块是实时组内所有实时测点以二进制方式存储的一块区域,实时测点数据块的长度Srt为单个实时组测点的数据长度SptX测点数Sp+采集时间值长度St,计算公式为Srt=SptXSp+St;(以一个浮点型的分组为例,一次实时测点数据记录在内存的结构形式如下所示)<table>tableseeoriginaldocumentpage10</column></row><table>b4)、构fe存储缓冲区,在内存中为实时组创建一个存储缓冲区,存储缓冲区在内存中分配的字节数为10次实时测点数据记录的长度之和。图3为图1中的歩骤"打开历史数据文件流程"的程序流程图,具体包括如下歩骤d)、判断要创建的历史数据文件的上级目录是否存在,若是,进入步骤e3),若否,进入步骤C2);C2)、创建待建历史数据文件的上级目录;采用年份和月份作为历史数据文件的上级目录;之后,进入步骤C3);c3)、判断要打开的历史数据文件是否存在,若是,进入步骤c6),若否,进入歩骤C4);c4)、创建历史数据文件并打开;历史数据文件的名称由实时组编号和实时测点数据采集日期组成;之后,进入步骤c4);c5)、构建历史数据文件头部信息,历史数据文件头部信息由测点个数、测点列表、数据类型,采集周期、版本号组成,历史数据文件头部信息采用二进制编码后写入历史数据文件中。之后,进入歩骤C8);C6)、打开历史数据文件;之后,进入步骤C7);c7)、移动指针至历史数据文件尾部;之后,进入步骤c8);'c8)、打开历史数据文件流程结束。其中,历史数据文件的上级目录(又称为数据存储目录)见图4所示的结构图,如2009年3月的数据存储目录下存储有2009年3月1日的历史数据文件nBFH丄I〕CSA.20()9()301.dat、2009年3月2日的历史数据文件Iim''n.l.DCSA.2()(^()302.dat、2009年3月3日的历史数据文件HBWLl.DCSA.20090303.dat……;此外,如2009年3月1日的历史数据文件的名称是HBFH.l.DCSA.20090301.dat,其中的"HBFH.1.DCSA"是实时组的编号,"2()()903()1"是存储数据的日期。ii权利要求1、一种面向快速回放的实时测点数据存储方法,其特征在于包括如下步骤a)、将要存储的实时数据测点分组,每个实时数据测点分组以下简称为实时组,实时组具有如下信息ID全局唯一的编号;DataType测点数据类型;Step采集周期;Tags测点列表;GatherTime采集时间;SaveCache存储缓冲区;b)、进入实时组对象初始化流程;之后,进入步骤c)c)、进入打开历史数据文件流程;之后,进入步骤d);d)、从实时测点数据采集单元中读取实时测点的时间和所有实时测点的实时数据,进行二进制编码后写入存储缓冲区;之后,进入步骤e);c)、用当前的计算机时间更新实时组的采集时间GatherTime;之后,进入步骤f);f)、判断存储缓冲区是否满,若是,进入步骤g),若否,进入步骤h);g)、将存储缓冲区内的数据写入历史数据文件;之后清空存储缓冲区,进入步骤h);h)、判断是否进行下一次实时数据采集,判断方法是计算当前计算机时间与实时组的采集时间GatherTime之差是否大于预设的采集周期,若大于或等于,则进入步骤d),进行下一次实时数据采集;若小于,则进入步骤i);i)、阻塞实时组数据采集线程,使其暂停2秒;之后,返回步骤h)。2、如权利要求1所述的面向快速回放的实时测点数据存储方法,其特征在于所述的步骤b)中具体包括如下步骤bl)、读取实时组配置信息,得到实时组编号、数据类型、采集周期、测点列表信息;b2)、对实时组对象的测点列表按照测点编号进行升序排序;b3)、计算一次实时测点数据记录的长度(字节数)实时测点数据记录包括采集时间和实时测点数据块两部分,实时测点数据块是实时组内所有实时测点以二进制方式存储的-块区域,实时测点数据块的长度Srt为单个实时组测点的数据长度SptX测点数Sp+釆集时间值长度St,计算公式为Srt=SptXSp+St;b勺、构建存储缓冲区,在内存中为实时组创建一个存储缓冲区,存储缓冲区在内存中分配的字节数为10次实时测点数据记录的长度之和。3、如权利要求1或2所述的面向快速回放的实时测点数据存储方法,其特征在于所述步骤C)中包括如下歩骤cl)、判断要创建的历史数据文件的上级目录是否存在,若是,进入步骤e3),若否,进入步骤C2);。)、创建待建历史数据文件的上级目录;采用年份和月份作为历史数据文件的上级目录;之后,进入步骤c3);c3)、判断要打开的历史数据文件是否存在,若是,进入步骤c6),若否,进入步骤C4);C勺、创建历史数据文件并打开;历史数据文件的名称由实时组编号和实时测点数据采集日期组成;之后,进入步骤c4);c5)、构建历史数据文件头部信息,历史数据文件头部信息由测点个数、测点列表、数据类型,采集周期、版本号组成,历史数据文件头部信息采用二进制编码后写入历史数据文件中。之后,进入歩骤C8);C6)、打开历史数据文件;之后,进入步骤c:7);c:7)、移动指针至历史数据文件尾部;之后,进入歩骤c8);c8)、打开历史数据文件流程结束。全文摘要一种面向快速回放的实时测点数据存储方法,步骤如下a)、将要存储的实时数据测点划分成实时组;b)、进入实时组对象初始化流程;c)、进入打开历史数据文件流程;d)、从实时测点数据采集单元中读取实时测点的时间和所有实时测点的实时数据,进行二进制编码后写入存储缓冲区;e)、用当前的计算机时间更新实时组的采集时间;f)、判断存储缓冲区是否满,若是,进入步骤g),若否,进入步骤h);g)、将存储缓冲区内的数据写入历史数据文件,并清空存储缓冲区;h)、判断是否进行下一次实时数据采集,若是,进入步骤d),若否,进入步骤i);i)、阻塞实时组数据采集线程,使其暂停2秒;之后,返回步骤h)。文档编号G06F17/30GK101667205SQ200910172320公开日2010年3月10日申请日期2009年9月28日优先权日2009年9月28日发明者宁周,张小斐,鹏王,马建伟申请人:河南电力试验研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1