智能电表是智能电网(特别是智能配电网)数据采集的基本设备之一,承担着原始电能数据采集、计量和传输的任务,是实现信息集成、分析优化和信息展现的基础。随着市场的发展,人们对智能电表的需求也在不断提高,其中,对采集数据的种类和频度都提出了更高的要求,越来越多的数据需要高效的存储和查询。
智能电表采集数据主要有三个信息需要保存:1、时间;2、数据类型;3、数据内容。最初人们采用的存储方案是按顺序依次存储,即每次采集到新数据后将上述三个信息依次存入存储flash中上次数据的后边,读取时从第一份数据开始遍历,直到找到需要的数据。
这种方案存储数据时不留空隙,空间利用比较充分,但查找数据时需要全部遍历,搜索速度比较慢。为了提高搜索速度,后来人们多采用定长间隔存储的方案,即按照最大数据长度来设置存储间隔,查询时根据起始时刻和查找时刻的时间差可以直接算出需要查询的数据存放的偏移地址。这种方案查询快速,但当数据不规则时浪费了大量的存储空间,在有限的存储空间内保存的有效信息比较少。
由此可见,现有的技术要么偏重空间利用的最大化,查询速度非常慢;要么偏重查询数据的速度,存储空间非常浪费,都不能很好的达到查询速度和空间利用的最佳平衡。
本发明的特征和优点在下文的描述中部分地陈述,或者可从该描述显而易见,或者可通过实践本发明而学习。
为克服现有技术的问题,本发明提供一种智能电表的数据存储方法及其系统,将时间依据数据的采集周期划分成复数个时间段,将数据依据采集时间所处的时间段存储在存储区域的存储页面内,并在不具有该数据的时间段内保存为空数据,无需记录每个数据的时间,节约了存储空间;同时通过在每页存储页面内记录第一个数据的时间的技术手段,加快了数据查询的速度,很好地达到了查询速度和空间利用之间的平衡。
图为本发明实施例的智能电表的数据存储方法的流程示意图
本发明解决上述技术问题所采用的技术方案如下:根据本发明的一个方面,提供一种智能电表的数据存储方法,包括:确定存储区域具有复数个存储页面,若该存储区域不具有该存储页面,则依据该存储区域的大小将该存储区域划分成复数个该存储页面;将时间划分成复数个时间段,每个该时间段在该存储页面上占据一定的存储空间;将该数据依据采集时间所处的时间段存储在该存储页面内,若在某一时间段内不具有该数据,则在不具有该数据的时间段内保存为空数据;在每页该存储页面内记录第一个数据的时间。
根据本发明的一个实施例,在将该数据依据采集时间所处的时间段存储在该存储页面内时,首先计算存储该数据需要的存储空间,若该存储页面内存储空间不足,则开启新的存储页面。
根据本发明的一个实施例,在将该数据依据采集时间所处的时间段存储在该存储页面内时,首先读取上次保存的数据的信息,若该上次保存的数据为该空数据,且本次保存的数据也为该空数据,则在上次保存的该空数据的存储空间里更新空数据的个数。在该存储页面的还需要记录前一次数据存放的偏移、该存储页面存放的数据的类型、该存储页面存放的数据的份数。根据本发明的又一个方面,提供一种智能电表的数据查询方法,用于查询采用上述任一智能电表的数据存储方法进行存储的数据,包括:
S1、读取第一页以及最后一页存储页面内记录的第一个数据的时间;
S2、根据需要查询的数据的时间,按照比例关系计算该需要查询的数据所处的存储页面;
S3、读取S2计算所得的存储页面内第一个数据的存储时间、该页面存放的数据的类型、该页面存放的数据的份数,判断该需要查询的数据是否在S2计算所得的存储页面内:若在,则依次读取该需要查询的数据所处的存储页面内的数据,直至查询出该需要查询的数据;若不在,则判断该需要查询的数据在计算得出的该需要查询的数据所处的存储页面之前还是之后,然后根据判断的结果重新计算该需要查询的数据所处的存储页面;如果在计算得出的该需要查询的数据所处的存储页面之前,则将计算得出的该需要查询的数据所处的存储页面作为最后一页,按照比例关系重新计算该需要查询的数据所处的存储页面;如果在计算得出的该需要查询的数据所处的存储页面之后,则将计算得出的该需要查询的数据所处的存储页面作为第一页,按照比例关系重新计算该需要查询的数据所处的存储页面;重复步骤S3,直至查询出该需要查询的数据。
根据本发明的一个实施例,在该步骤S3中,还要读取与该需要查询的数据所处的存储页面相邻的存储页面内该第一个数据的时间,并据此判断该需要查询的数据是否在该需要查询的数据所处的存储页面内,或判断该需要查询的数据在计算得出的该需要查询的数据所处的存储页面之前还是之后。
根据本发明的再一个方面,提供一种智能电表的数据查询系统,用于查询采用上述任一智能电表的数据存储方法进行存储的数据,包括:时间读取模块,用于读取存储页面内记录的第一个数据的时间;计算模块,用于根据需要查询的数据的时间,按照比例关系计算该需要查询的数据所处的存储页面;判断模块,用于判断该需要查询的数据是否在该需要查询的数据所处的存储页面内,或判断该需要查询的数据在计算得出的该需要查询的数据所处的存储页面之前还是之后;数据查询模块,用于读取该存储页面内的数据,找到该需要查询的数据。
根据本发明的又一个方面,提供一种智能电表的数据存储系统,包括:存储页面确定即划分模块,用于确定存储区域具有复数个存储页面,若该存储区域不具有该存储页面,则依据该存储区域的大小将该存储区域划分成复数个该存储页面;时间划分模块,用于将时间依据数据的采集周期划分成复数个时间段,每个该时间段在该存储页面上占据一定的存储空间;数据存储模块,用于将该数据依据采集时间所处的时间段存储在该存储页面内,若在某一时间段内不具有该数据,则在不具有该数据的时间段内保存为空数据;记录模块,用于在每页该存储页面内记录第一个数据的时间。
根据本发明的一个实施例,还包括空数据个数计算模块,用于当上次保存的数据为该空数据,且本次保存的数据也为该空数据时,在上次保存的该空数据的存储空间里更新空数据的个数。该记录模块还用于记录前一次数据存放的偏移、该存储页面存放的数据的类型、该存储页面存放的数据的份数。
本发明提供了一种智能电表的数据存储方法及其系统,将时间依据数据的采集周期划分成复数个时间段,将数据依据采集时间所处的时间段存储在存储区域的存储页面内,并在不具有该数据的时间段内保存为空数据,无需记录每个数据的时间,且当该空数据连续记录时,只需更新空数据的个数,无需利用存储页面内新的存储空间,所以大大节约了存储空间;本发明在每页存储页面内还需要记录第一个数据的时间、该存储页面内数据的类型等信息,如此在查询数据时,通过该些信息的有效利用,加快了数据查询的速度,很好地达到了查询速度和空间利用之间的平衡。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)