[发明专利]一种动态加载性质的CIM内存库生成方法有效
申请号: | 201510119258.8 | 申请日: | 2015-03-18 |
公开(公告)号: | CN104809008A | 公开(公告)日: | 2015-07-29 |
发明(设计)人: | 高雅;杜双育;王红斌;范颖;谢善益;杨强;王彬;马金宝 | 申请(专利权)人: | 广东电网有限责任公司电力科学研究院;威海欣智信息科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 广州知友专利商标代理有限公司 44104 | 代理人: | 周克佑 |
地址: | 510080 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 加载 性质 cim 内存 生成 方法 | ||
技术领域
本发明涉及电力系统数据处理方法,具体来说涉及一种动态加载性质的CIM内存库生成方法。
背景技术
国际电工技术委员会IEC定义了一种电力系统通用信息模型CIM(Common Information Model,通用信息模型)。CIM提供了一个关于电力系统信息的全面逻辑视图,是一个代表电力企业所有主要对象的抽象模型,包括了这些对象的公有类和属性,以及它们之间的关系。
使用CIM描述电力系统数据使得每种业务对象都有了一个特定的类名,包含明确的属性和关联定义,便于对数据进行统一描述和管理,也使得将电力设备对象之间映射成面向对象编程语言中的内存对象成为可能。CIM类中属性和关联的统称为性质。当对象性质取值为空的时读取该性质得到的值为缺省值。
在电力自动化分析等领域,将按照CIM组织的对象加载到内存中进行业务逻辑分析处理的作为已经很常见,但多数是轻量级模型,数据量在几十万,而百万甚至千万级的数据平台很少有通过内存库提供数据访问效率的做法。
一种是通过代码生成工具直接将CIM类中的类、属性、关联映射成编程语言中的类、属性和引用是常用的内存库生成方法。CIM中的每个性质,都被生成了实体变量,加载数据后,无论是否取值都会占用8个字节的内存空间。这种方法的缺点在于:第一:对于取值稀疏的电力模型,即CIM模型中某类的属性多,而实际数据中属性取值多数为空的情况下,内存浪费很多。现实情况中,由于CIM模式的业务覆盖率广,对象性质定义很多,多数CIM属性有值的概率不到一半,对于千万对象级数据,至少有几个G的内存被浪费,也使得低配置的硬件环境无法支撑大数据量的内存库。第二:由于CIM对象的性质还有缺省值的概念,对于未设置值的属性不能简单的用null代替,因为属性有可能被设置了null值,这种 情况不能应用缺省值。因此需要额外为每个对象定义一个bool型的是否设置了取值的标识,每个性质多占4个字节的内存。
此外,采用通用的对象描述构建内存库是另一种构建方式。此种方式使用一个通用的数据类型来描述所有对象,所有的属性、关联以映射表的方式存储在内存中。这种做法只保存有值的对象,没有值的性质不占用内存。这种基于对象通用描述和性质映射表的CIM内存库缺点在于:第一:不能发挥面向对象在特性,无法使用get、set方法直接访问对象属性,也不能为特定的类增加会修改方法实现。第二:性质映射表采用key-value方式存储,每个key都是一个字符串,还有每个对象映射表本身所占的内存,使得有对象的性质内存占用量翻倍。第三:当进行性质访问时,必须进程字符串比较才能从映射表中定位到性质取值,字符串方式比较效率低,即使采用hash算法,也有一定的性能损失。
发明内容
本发明的目的在于提供一种动态加载性质的CIM内存库生成方法,本方法可以在基本不影响效率的情况下,有效的减少基于CIM的面向对象内存库的资源占用,对于取值稀疏的电力模型尤其明显的。内存占用的大幅减少使得重量级数据平台的内存库构建不再受过高的内存要求限制,能够进行快速业务分析和提供高速数据访问能力。
本发明的目的可通过以下的技术措施来实现:
一种动态加载性质的CIM内存库生成方法,包括如下步骤:
第一步:生成元信息代码
根据CIM模型生成静态代码,包括类名、性质名称到静态索引号的映射、性质名称到数据类型的映射、性质的缺省值。
a)将CIM模型中的每一个类生成相同名称的代码类;
b)为所述代码类中的属性生成代码中的字段,所述字段的名称和数据类型与CIM模型相同;
c)为所有字段生成缺省值静态常量,CIM模型里有缺省值的常量取值为缺省 值,没有缺省值的常量取值为空;
d)为每个字段生成一个整型性质静态索引号,从0开始;
第二步:生成性质信息代码
在每个所述代码类中定义一个性质取值数组,用于动态存储性质取值,数组的大小初始为0,即空数组,在加载数据的时候根据实际有取值的性质个数动态调整数组的大小。另外根据CIM模型中的类中性质的个数,定义一个或多个long型数据标识,用来管理性质是否被设置取值以及配合在性质取值数组中定位性质。
一个long型变量有64个bit,可以管理64个性质。当某个bit取值为1时,代表该bit所对应的性质被设置了取值,性质取值数组中为此性质分配一个存储单元;当某个bit取值为0时,代表此bit所对应的性质未设置取值,性质取值数组中不会为其分配存储单元。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东电网有限责任公司电力科学研究院;威海欣智信息科技有限公司,未经广东电网有限责任公司电力科学研究院;威海欣智信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510119258.8/2.html,转载请声明来源钻瓜专利网。