掌桥专利:专业的专利平台
掌桥专利
首页

一种应用于电力采集设备集中器的数据压缩方法及系统

文献发布时间:2023-06-19 18:37:28


一种应用于电力采集设备集中器的数据压缩方法及系统

技术领域

本发明属于嵌入式软件的领域,尤其是一种应用于电力采集设备集中器的数据压缩方法及系统。

背景技术

电力采集终端集中器是配置电能表参数、采集用户电能表的实时和历史数据、采集台区电能质量等数据。国家电网在推进App化的过程中,将这些参数和数据的格式进行标准化,采用结构体的方式表示,App将这些标准化的数据通过数据中心存储到终端的磁盘中。这些结构体的数据在App中运行产生,对于数据中心来说是一串字节的数据,并没有规律可循。

终端App对数据的读、写、检索效率提出了性能要求,常用的压缩方法对字节串的数据压缩都有失真或者较大的性能损失,现在的数据中心没有采用数据压缩的方式存储数据。终端采集的数据量非常大,一般是一个小区的所有用户电能表实时和历史数据、所有的电能质量等数据,随着终端运行时间越大,数据库的空间占满的情况非常常见。在不影响读写性能的基础上,需要采用简单、高效的方法对数据进行压缩,提高数据存储量。

故,亟需一种解决方案。

发明内容

发明目的:提供一种应用于电力采集设备集中器的数据压缩方法及系统,以解决现有技术存在的上述问题。

技术方案:根据本申请的一个方面,一种应用于电力采集设备集中器的数据压缩方法,包括如下步骤:

步骤S1、电力采集终端集中器采集用户电能表终端数据,对所述电能表终端数据进行压缩,获取特征数据,并对特征数据进行统计;基于所述特征数据统计的基础上,新增一个字节串,并删除0串的值,记录0串的位置,形成一个没有0串的压缩字节串;通过所述压缩字节串,获取第一数据;

步骤S2、计算所述第一数据的占用空间,将第一数据的占用空间与电能表终端数据进行比较,若第一数据的占用空间小于电能表终端数据,则将第一数据进行存储;若第一数据的占用空间大于电能表终端数据,则将电能表终端数据进行存储;

步骤S3、读取存储的第一数据或者电能表终端数据;若存储的是电能表终端数据,则直接将电能表终端数据进行数据恢复操作;若存储的是第一数据,则将所述记录0串的位置重新插入到压缩字节串中,形成原始串,最后再进行数据恢复操作。

根据本申请的一个方面,所述步骤S1中数据压缩过程如下:

步骤S11、根据电能表终端数据计算出原始长度,并将所述电能表终端数据的原始长度临界值设置为8位,即一个字节;若第一数据的长度小于8位,则记录0串的位置,并标记为0,然后对所述电能表终端数据直接进行存储;若电能表终端数据的原始长度大于8位,则将所有非0串的位置标记为1,并计算特征位数据的长度,以获得压缩位串;

步骤S12、根据所述特征位数据的长度和电能表终端数据的原始长度共同构成位串总长度,并进行存储;将标记的0串的位置以及电能表终端数据的原始长度存储到位串总长度的前两位;其余的二进制位存储特征位数据的长度,并对特征位进行过滤,获取到第一数据。

根据本申请的一个方面,所述步骤S12中特征位数据过滤的过程如下:

基于前两位存储电能表终端数据的原始长度,以及记录标记的0串的位置,从第三位开始对第一数据进行检索,若检测到的第一数据为0值,则删除0值,并标记为0;若检测到的第一数据为非0值,则标记为1,并将非0值放置在特征位中。

根据本申请的一个方面,所述步骤S2中数据存储过程如下:

将压缩位串和标记值放到磁盘中进行存储,若标记为0,则将标记的0串的位置和电能表终端数据存储到磁盘中;若标记为1,则将标记的非0值,则将第一数据存储到磁盘中。

根据本申请的一个方面,所述步骤S3中数据恢复过程如下:

步骤S31、从磁盘中读取标记的0串的位置,以及第一数据,若标记的都是0值,则不需要对第一数据进行数据恢复操作,直接将所述电能表终端数据存储到终端的磁盘中;若标记的值存在非0值,则选择第一数据;

步骤S32、取出第一数据的前两位,并计算特征位长度,以获得压缩位串;读取压缩位串的值,若读取的压缩位串的值为非0值,则继续读取压缩位串的值,若读取的压缩位串的值为0值,则将标记的0串的位置填充到对应的二进制位中,构成原始数据;最后将所述原始数据存储到终端的磁盘中。

根据本申请的一个方面,所述放置0值和非0值过程还包括:

若检测到的是非0值,则按照二进制位依次放置在特征位中,若检测到的是0值,则对0值的位置进行标记,并且让后面一位非0值左移到0值对应的位置上,形成一个没有0的压缩字节串。

根据本申请的一个方面,所述步骤S1中在基于所述特征数据统计的基础上还包括如下步骤,

步骤S1a、构建第一数据映射表,记录每一0串的数据位置和占用空间;查找并将相邻的0串数据位置合并,形成新的第一数据映射表;

步骤S1b、依序删除0串数据对应的存储标记,使各个0串数据对应的存储单元为更新为可写入状态;

步骤S1c、在接收到预存储的数据后,获取预存储的数据占用空间,计算新的第一数据映射表中大于该占用空间的位置,然后计算每一存储位置的使用概率,再将数据存储在使用概率最低的存储位置。

根据本申请的一个方面,所述步骤S1c中计算每一存储位置的使用概率的过程进一步为:

依序读取预定时间内各个电力采集终端集中器中每一存储位置的使用状态,统计各个存储位置的使用频率;

选择至少K个存储位置,统计该存储位置的使用频率是否符合预定的数学分布;建立存储位置的使用频率与使用时间之间的统计模型;

若符合,记录各个存储位置的使用频率,存储各个存储位置的使用频率与统计模型;将当前的使用频率作为后续存储位置的使用概率的初始值。

根据本申请的一个方面,还包括如下步骤:

在数据恢复时,从新的第一数据映射表中计算使用频率最小的若干个存储位置,并基于存储位置建立存储缓冲区;

将数据按照新的第一数据映射表中的存储位置的映射关系,将数据进行存储。

根据本申请的一个方面,还提供一种系统,包括:

至少一个处理器;以及

与至少一个所述处理器通信连接的存储器;其中,

所述存储器存储有可被所述处理器执行的指令,所述指令用于被所述处理器执行以实现上述任一项实施例所述的一种应用于电力采集设备集中器的数据压缩方法。

有益效果:本申请为一种应用于电力采集设备集中器的数据压缩方法提供了一种可行性方案,提高了数据存储量。同时,提供了一种数据压缩的新思路,能够解决当前存在的数据压缩导致失真或者性能损失的问题,为应用于电力采集设备集中器的数据压缩方法提供了解决方案。相关优点将在具体实施方式部分详细描述。

附图说明

图1是本发明的流程示意图。

图2是本发明的特征数据统计流程图。

图3是本发明的数据存储流程图。

图4是本发明的数据恢复流程图。

具体实施方式

以下详细描述本申请的技术原理和技术细节。为了突出本申请的改进点,对于一些现有技术进行了略写,本领域的技术人员能够知晓相关技术内容,同时,结合本申请的技术内容,可以解决本申请提出的技术问题,并获得相应的技术效果。

如图1所示,种应用于电力采集设备集中器的数据压缩方法,包括:

步骤S1、电力采集终端集中器采集用户电能表终端数据,对所述电能表终端数据进行压缩,获取特征数据,并对特征数据进行统计;基于所述特征数据统计的基础上,新增一个字节串,并删除0串的值,记录0串的位置,形成一个没有0串的压缩字节串;通过所述压缩字节串,获取第一数据;

传统的存储电能表数据的方法并没有对电能表数据进行压缩,这样就会导致终端采集的电能表数据量非常大,随着终端运行时间越来越大,数据库的空间占满情况非常常见,因此需要采用高效的方法对数据进行压缩,从而提高存储的数据量。通过采集数据字节串,然后新增一个字节串用于记录0串出现的位置,即一个字节表示8位中第几个是0,对应的位为0表示该字节是0。在数据统计的基础上,形成一个新的字节串,新串中没有0值,内容数据与原数据一致,通过新的字节串获得第一数据。

步骤S2、计算所述第一数据的占用空间,将第一数据的占用空间与电能表终端数据进行比较,若第一数据的占用空间小于电能表终端数据,则将第一数据进行存储;若第一数据的占用空间大于电能表终端数据,则将电能表终端数据进行存储;

步骤S3、读取存储的第一数据或者电能表终端数据;若存储的是电能表终端数据,则直接将电能表终端数据进行数据恢复操作;若存储的是第一数据,则将所述记录0串的位置重新插入到压缩字节串中,形成原始串,最后再进行数据恢复操作。

简而言之,在本申请的技术中,首先通过电力采集终端集中器采集用户电能表的实时和历史终端数据以及采集电能质量等数据;然后将采集到的电能表终端数据进行压缩处理,从而克服了数据空间占满的问题,而现有的标准化处理方法对字节串的数据压缩又会出现失真或者较大的性能损失。本申请提高了数据的存储量,通过一种应用于电力采集设备集中器的数据压缩方法,解决了数据失真或者性能损失的物理机制问题,因此对于后续数据存储空间利用率的提高有所助益。

如图2所示,将电能表终端数据进行压缩,首先通过电能表终端数据计算出原始长度,并将电能表终端数据的原始长度临界值设置为8位,即一个字节;若第一数据的长度小于或等于8位,则记录0串的位置,并标记为0,然后对所述电能表终端数据直接进行存储;若电能表终端数据的原始长度大于8位,则将所有非0串的位置标记为1,并计算特征位数据的长度,以获得压缩位串;根据特征位数据的长度和电能表终端数据的原始长度共同构成位串总长度,并进行存储;将标记的0串的位置以及电能表终端数据的原始长度存储到位串总长度的前两位;其余的二进制位存储特征位数据的长度,并对特征位进行过滤,获取到第一数据。

在本实施例中,通过计算出电能表终端数据的原始长度,将原始长度划压缩成两个部分,第一部分为压缩后的前两位,用于存储原始长度和记录0串所在的位置;其余的二进制位由特征位构成,即压缩位串,用于存储压缩后的字节串,这样便会解决内存空间占满的问题,提高了资源空间的利用率。例如:若输入的原始长度为L的字节串A,L的长度小于8192,压缩标记为S,压缩位串为Y,LN为压缩位串的实际长度,数据标识为B。若电能表终端数据的原始长度L小于或等于8位,即一个字节,则将压缩标记置0,直接将电能表终端数据进行存储;若电能表终端数据的原始长度大于8位,则将压缩标记置1,并计算特征位长度T,位串总长度是L+T+2, 从压缩位串Y开始时准备,压缩位串实际长度LN初始值是T+2;首先将电能表终端数据的原始长度进行存储,存储到位串总长度的前两位;然后对特征位进行存储,从第i位开始检索(i从0开始),如果是0,则第i个位的值是0,否则第i个位的值是1,其中位从压缩位串Y的第三位开始;检索完成后,对特征位进行过滤。

基于前两位存储电能表终端数据的原始长度,以及记录标记的0串的位置,从第三位开始对第一数据进行检索,若检测到的第一数据为0值,则删除0值,并标记为0;若检测到的第一数据为非0值,则标记为1,并将非0值放置在特征位中。

在本实施例中,需要对特征位进行检索,检索出0串的位置并进行删除,这样才能达到过滤数据的效果。例如:第i位原始数据,如果不是0,拷贝到Y的第LN个位置,压缩位串的实际长度增加1,继续检测i+1条数据,如果i所在位的长度小于电能表终端数据,则继续进行压缩;若i所在位的长度大于电能表终端数据则不再进行压缩,统计所有特征数据。

如图3所示,在统计完所有特征位数据后,将压缩位串和标记值放到磁盘中进行存储,若标记为0,则将标记的0串的位置和电能表终端数据存储到磁盘中;若标记为1,则将标记的非0值,则将第一数据存储到磁盘中。

在本实施例中,将压缩标记和压缩位串到磁盘,判断压缩数据是否小于电能表终端数据,如果压缩数据小于电能表终端数据,则存储压缩数据,否则存储电能表终端原始数据。例如:如果压缩标记S为1,并且压缩位串大于电能表终端数据,然后将压缩标记S和压缩数据存储到磁盘中,最后结束数据存储;如果压缩标S为1,并且压缩位串小于电能表终端数据,将压缩标记S置为0,然后将压缩标记S和电能表终端数据存储到磁盘中,最后结束数据存储。

如图4所示,读取存储的数据,最后再进行数据恢复操作。首先从磁盘中读取标记的0串的位置,以及第一数据,若标记的都是0值,则不需要对第一数据进行数据恢复操作,直接将所述电能表终端数据存储到终端的磁盘中;若标记的值存在非0值,则选择第一数据;接着取出第一数据的前两位,并计算特征位长度,以获得压缩位串;读取压缩位串的值,若读取的压缩位串的值为非0值,则继续读取压缩位串的值,若读取的压缩位串的值为0值,则将标记的0串的位置填充到对应的二进制位中,构成原始数据;最后将所述原始数据存储到终端的磁盘中。

在本实施例中,由于数据通过数据中心发送到磁盘的终端不能读取出压缩后的数据,只能读取带有0和1组成的二进制形式的原始数据。基于上述存储数据出现的问题,需要将存储的数据读取出来,根据压缩标记S和数据恢复操作恢复到带0串的原始数据,从而能够有效的监控数据。例如:假设数据为AY,长度是M,压缩标记为S,特征位长度为T,i为读取的原始数据的位置,j为读取的压缩位串的位置,压缩位串为Y。

进一步地,首先从磁盘中读出压缩标记S和数据AY和长度M,如果压缩标记S为0,则说明字节串的值为0,此时电能表终端数据取AY,电能表终端数据的长度取M,则不需要进行压缩,直接将电能表终端数据存储到终端的磁盘中;如果压缩标记为1,压缩位串Y取数据AY,压缩位串的实际长度取M,电能表终端数据的长度从前两位取出,然后对特征位长度T进行计算,读取第i个特征位的值(i初始值为0),如果特征位的值为1,则读取压缩位串Y的第T+2+j个数据(j初始值为0),接着赋值到电能表终端数据第i个字节的二进制你位上,继续读取下一个压缩位串的数据;如果特征位的值为0,则原始数据第i个字节的二进制位取0值,继续读取下一个特征位的值,直至原始数据的二进制位大于电能表终端数据的长度所在的二进制位,则说明数据全部恢复到原始数据,最后将恢复的原始数据通过数据中心发送给终端的磁盘。

根据本申请的另一个方面,在放置0值和非0值过程中,若检测到的是非0值,则按照二进制位依次放置在特征位中,若检测到的是0值,则对0值的位置进行标记,并且让后面一位非0值左移到0值对应的位置上,形成一个没有0的压缩字节串。

如果数据中心没有采用数据压缩的方式存储数据,这样会导致终端的数据量非常大,并且影响终端对数据的读、写、效率性能,本申请与之相比具有如下好处L本申请将采集到的电能表终端数据进行标准化处理,采用0和1的二进制位形式表示,先对数据进行压缩,形成压缩位串,并记录0串的位置以及删除含有0串的数据,然后统计压缩后的特征数据,接着对特征数据进行存储,最后将压缩数据恢复,将记录的0串的位置重新插入到压缩位串中,形成原始串。

在进一步的实施例中,所述步骤S1中在基于所述特征数据统计的基础上还包括如下步骤,

步骤S1a、构建第一数据映射表,记录每一0串的数据位置和占用空间;查找并将相邻的0串数据位置合并,形成新的第一数据映射表;

步骤S1b、依序删除0串数据对应的存储标记,使各个0串数据对应的存储单元为更新为可写入状态;

步骤S1c、在接收到预存储的数据后,获取预存储的数据占用空间,计算新的第一数据映射表中大于该占用空间的位置,然后计算每一存储位置的使用概率,再将数据存储在使用概率最低的存储位置。

其中,所述步骤S1c中计算每一存储位置的使用概率的过程进一步为:

依序读取预定时间内各个电力采集终端集中器中每一存储位置的使用状态,统计各个存储位置的使用频率;

选择至少K个存储位置,统计该存储位置的使用频率是否符合预定的数学分布;建立存储位置的使用频率与使用时间之间的统计模型;

若符合,记录各个存储位置的使用频率,存储各个存储位置的使用频率与统计模型;将当前的使用频率作为后续存储位置的使用概率的初始值。

在进一步的实施例中,还包括如下步骤:

在数据恢复时,从新的第一数据映射表中计算使用频率最小的若干个存储位置,并基于存储位置建立存储缓冲区;

将数据按照新的第一数据映射表中的存储位置的映射关系,将数据进行存储。

在实施例中,通过在逻辑层实现数据压缩,从而无需将数据进行移位存储等操作,通过形成逻辑层与物理层的映射,在逻辑层的压缩即可获得类似于在物理层压缩的效果。另外,在本实施例中,通过计算存储位置的使用概率,判断其当前和未来一个时期的使用状态,从而能够更好地选择和调整存储单位的位置。换句话说,在某个实施例中,某个存储位置,可能在100天内达到80%的使用概率,而另一个存储位置,可能在600天内达到使用80%的概率,则说明该存储位置相对于上一个存储位置而言,在电子设备集中器的使用概率是相对偏低的,所以可以进行压缩和作为缓冲区。通过统计和构建存储位置的使用概率模型,可以对存储位置进行优化调度,从而获得更好的使用效果。

以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。

技术分类

06120115633418