基于PostgreSQL关系数据库的风电时序数据存储管理方法技术

技术编号:38204902 阅读:22 留言:0更新日期:2023-07-21 16:50
本发明专利技术公开了一种基于PostgreSQL关系数据库的风电时序数据存储管理方法,在PostgreSQL关系数据库中,将一个风电场相关的运行数据组织在一起形成风场模式;不同风电场的模式schema换成对应的风电场ID,即为一个风电场的专用schema,而风电机组对应的数据存储表替换相应的风机ID,即为相应风机历史运行数据存储表;对于风机运行历史数据的管理,编写相应的PG存储过程,完成历史数据表的创建和在风机历史数据表中增加测点。本发明专利技术存储了全量的风机运行数据、风机运行数据的时间粒度达到了秒级,使用了关系数据库的设计,不增加数据库设计难度。库设计难度。库设计难度。

【技术实现步骤摘要】
基于PostgreSQL关系数据库的风电时序数据存储管理方法


[0001]本专利技术主要涉及风电
,具体涉及一种基于PostgreSQL关系数据库的风电时序数据存储管理方法。

技术介绍

[0002]在大数据技术兴起前,风电行业对于机组的运行数据并不是十分关心。因此,对于机组运行的全量秒级历史数据,并不进行存储和分析处理,从而使得需要存储和处理的数据量较少,存储和处理的压力并不大。后来,业内有专业人员发现,机组运行数据在对机组性能分析,质量问题处理和设计提升上有着巨大的价值,就此意识到了风电机组运行历史数据的宝贵,从而对于机组运行历史数据的存储和分析越来越重视。但对机组的历史数据进行全量存储,粒度细到秒级后,存储量比原来超出两个数量级,对于数据库、存储结构和计算机资源都有着更高的需求。
[0003]为了从数据存储管理方面来解决数据存储访问效率问题,需要解决以下几方面的问题:
[0004]第一是分区组织和存储。关系型数据库在存储大量数据时,进行数据分区优化管理是一门学问。好的分区管理可以大大提高存储效率和查询效率。但分区优化管理对数据库管理员和软件开发人员要求较高,且需要反复分析。而风电机组的全量秒级历史运行数据虽然数量大,但却拥有两个明显特征,第一个是机组独立性,即每台机组的数据相互独立而且结构相同。第二个是时间特性,即机组运行数据离开了时间这个属性就没有意义了。
[0005]第二是数据量很大,对存储空间要求很高。以一台2.5MW的机组为例,一共约360个测点,其中一半是开关量(0或1),三分之一是纯粹的数字量(状态,故障报警之类的整数值),六分之一是模拟量(浮点数),如果以平均2个字节计算,1秒钟1行记录,数据量为720B,一天的数据量超过60MB,一个风场20台风机(50MW)一天数据量就超过1.2GB,一年约500GB,这些均不计算数据缓存和数据库其他开销,而机组的设计寿命是20年,因此对于存储空间要求很高。
[0006]第三是访问效率。数据不光是要存储,在风电场,还需要进行各种查询分析。比如计算发电量、损失电量、可利用率和其他各种指标统计等。那么涉及的风机数量多,时间跨度大,数据记录数量巨大,查询访问效率就成了数据存储的一个难点。
[0007]因此,在不增加系统设计复杂度的情况下,和正常使用关系数据库一样高效地存储和访问风电机组的历史运行数据是需要解决的问题。

技术实现思路

[0008]本专利技术要解决的技术问题就在于:针对现有技术存在的技术问题,本专利技术提供一种存储了全量的风机运行数据、风机运行数据的时间粒度达到了秒级,使用了关系数据库的设计,不增加数据库设计难度的基于PostgreSQL关系数据库的风电时序数据存储管理方法。
[0009]为解决上述技术问题,本专利技术提出的技术方案为:
[0010]一种基于PostgreSQL关系数据库的风电时序数据存储管理方法,在PostgreSQL关系数据库中,将一个风电场相关的运行数据组织在一起形成风场模式;其中,不同风电场的模式schema换成对应的风电场ID,即为一个风电场的专用schema,而风电机组对应的秒级数据、分钟级数据、开关量和数字量变化数据存储表替换相应的风机ID,即为相应风机历史运行数据存储表;对于风机运行历史数据的管理,编写相应的PG存储过程,创建历史数据表,并在风机历史数据表中增加测点;其中创建历史数据表的过程为:定义PLPGSQL函数,调用对应的PLPGSQL函数生成风场中某台风机的秒级历史数据表、分钟级历史数据表、开关量和数字量变化值存储数据表,并生成生成TimescaleDB的超表;其中在在风机历史数据表中增加测点的过程为:定义PLPGSQL函数,调用对应的PLPGSQL函数,根据相应配置把pid指定的风电场中,机型由tid标识的所有风电机组的秒级历史数据测点和分钟级历史数据测点校核一遍;如发现有新增模拟量测点,则在对应的数据表中增加。
[0011]优选地,还包括数据缓存:采用将秒级数据使用一分钟缓存的方式,先以临时文件写入缓存文件夹,然后每分钟批量提交一次,以降低数据库写入锁占用的时间,来提高数据库运行效率。
[0012]优选地,还包括定期滚动删除:将数据库中超过预设时间的秒级数据进行删除处理,删除使用drop_chunks函数。
[0013]优选地,创建历史数据表包括:
[0014]定义PLPGSQL函数create_secdata_table(pid TEXT,wid TEXT,tid INTEGER)RETURNS VOID;调用该函数生成风场中某台风机的秒级历史数据表,其中pid表示风场id,wid表示风机id,tid表示机型,函数中根据该参数确定风机全部测点名称和类型,然后使用这些参数去创建秒级历史数据表,并生成TimescaleDB的超表;
[0015]定义PLPGSQL函数create_mindata_table(pid TEXT,wid TEXT,tid INTEGER)RETURNS VOID;调用该函数生成风场中某台风机的分钟级历史数据表,其中pid表示风场id,wid表示风机id,tid表示机型,函数中根据该参数确定对应风机的全部模拟量测点名称,然后使用这些参数去创建分钟级历史数据表,并生成TimescaleDB的超表;
[0016]定义PLPGSQL函数create_digdata_table(pid TEXT,wid TEXT)RETURNS VOID;调用该函数生成风场中某台风机的开关量和数字量变化值存储数据表,其中pid表示风场id,wid表示风机id;创建完成后,生成timescaled超表。
[0017]优选地,对秒级历史数据表中增加测点的过程为:
[0018]定义PLPGSQL函数check_sec_table(pid TEXT,tid INTEGER)RETURNS VOID;调用该函数,根据相应配置把pid指定的风电场中,机型由tid标识的所有风电机组的秒级历史数据测点校核一遍;如发现有新增测点,即在对应机型的所有秒级数据表中增加测点字段。
[0019]优选地,对分钟级历史数据表中增加测点的过程为:
[0020]定义PLPGSQL函数check_min_table(pid TEXT,tid INTEGER)RETURNS VOID;调用该函数,根据相应配置把pid指定的风电场中,机型由tid标识的所有风电机组的分钟级历史数据测点校核一遍;如发现有新增模拟量测点,即在对应机型的所有分钟级数据表中添加该测点的平均值,最大值,最小值和标准差字段。
[0021]优选地,drop_chunks函数为:SELECT drop_chunks(INTERVAL'n months','<
table_name>')。
[0022]优选地,其中秒级数据存储:风机运行数据选择1秒钟取样一次,即1秒中生成一行数据;数据结构如:
[0023](dt,fla本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于PostgreSQL关系数据库的风电时序数据存储管理方法,其特征在于,在PostgreSQL关系数据库中,将一个风电场相关的运行数据组织在一起形成风场模式;其中,不同风电场的模式schema换成对应的风电场ID,即为一个风电场的专用schema,而风电机组对应的秒级数据、分钟级数据、开关量和数字量变化数据存储表替换相应的风机ID,即为相应风机历史运行数据存储表;对于风机运行历史数据的管理,编写相应的PG存储过程,创建历史数据表,并在风机历史数据表中增加测点;其中创建历史数据表的过程为:定义PLPGSQL函数,调用对应的PLPGSQL函数生成风场中某台风机的秒级历史数据表、分钟级历史数据表、开关量和数字量变化值存储数据表,并生成生成TimescaleDB的超表;其中在在风机历史数据表中增加测点的过程为:定义PLPGSQL函数,调用对应的PLPGSQL函数,根据相应配置把pid指定的风电场中,机型由tid标识的所有风电机组的秒级历史数据测点和分钟级历史数据测点校核一遍;如发现有新增模拟量测点,则在对应的数据表中增加。2.根据权利要求1所述的基于PostgreSQL关系数据库的风电时序数据存储管理方法,其特征在于,还包括数据缓存:采用将秒级数据使用一分钟缓存的方式,先以临时文件写入缓存文件夹,然后每分钟批量提交一次,以降低数据库写入锁占用的时间,来提高数据库运行效率。3.根据权利要求1所述的基于PostgreSQL关系数据库的风电时序数据存储管理方法,其特征在于,还包括定期滚动删除:将数据库中超过预设时间的秒级数据进行删除处理,删除使用drop_chunks函数。4.根据权利要求1或2或3所述的基于PostgreSQL关系数据库的风电时序数据存储管理方法,其特征在于,创建历史数据表包括:定义PLPGSQL函数create_secdata_table(pid TEXT,wid TEXT,tid INTEGER)RETURNS VOID;调用该函数生成风场中某台风机的秒级历史数据表,其中pid表示风场id,wid表示风机id,tid表示机型,函数中根据该参数确定风机全部测点名称和类型,然后使用这些参数去创建秒级历史数据表,并生成TimescaleDB的超表;定义PLPGSQL函数create_mindata_table(pid TEXT,wid TEXT,tid INTEGER)RETURNS VOID;调用该函数生成风场中某台风机的分钟级历史数据表,其中pid表示风场id,wid表示风机id,tid表示机型,函数中根据该参数确定对应风机的全部模拟量测点名称,然后使用这些参数去创建分钟级历史数据表,并生成TimescaleDB的超表;定义PLPGSQL函数create_digdata_table(pid TEXT,wid TEXT)RETURNS VOID;调用该函数生成风场中某台风机的开关量和数字量变化值存储数据表,其中pid表示风场id,wid表示风机id;创建完成后,生成timescaled超表。5.根据权利要求4所述的基于PostgreSQL关系数据库的风电时序数...

【专利技术属性】
技术研发人员:张家友文坤郑铖
申请(专利权)人:中车株洲电力机车研究所有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1