一种共享数据的管理方法技术

技术编号:2855412 阅读:176 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种共享数据的管理方法,采用面向对象技术,建立一个类作为内存管理器,保证所述内存管理器在内存中只有一个实例,由所述内存管理器保存各个数据类的实例指针,控制所述各个数据类的读写操作。将所述各个数据类的构造函数设定为保护类型,在所述各个数据类中设定所述内存管理器取得所述各个数据类指针的函数为友元函数。本发明专利技术对内存结构的访问提供了统一的API操作,对公共内存数据进行集中管理,同时保证了数据的安全性,隐蔽性,可控性,提高了管理系统的灵活性,可扩展性,以及增强的DEBUG功能,使内存调测更加方便。

【技术实现步骤摘要】

本专利技术涉及计算机系统领域,具体涉及。
技术介绍
对于大型信息系统来说,在很多情况下都是通过利用公共内存(内存池)维护大量常用数据,来提高对这些常用数据的访问性能。如一个网络级光传输网管系统,其中网元MO(Managed Object,被管对象)信息可能有数千个信息单元,电路MO信息可能达数万个信息单元,MO之间的资源占用关系更可能达到十万以上级别,而且这些数据平时可能被系统的多个模块频繁查询。尤其是在大批量数据复杂查询的情况下,对系统地负载能力和响应能力将是一个极大的考验。现有系统多采用STL(Standard Template Library,标准模板库)的直接封装来解决公共内存的问题。即将内存池的分配、调度工作交由STL模板库完成,内存池外的具体内存结构的调度工作分散由各个类来自己实现或者是作成公共结构由各调用模块自己控制。该方案有如下缺点(1)由于对具体内存结构的调度分散,其安全性,可维护性都很差;(2)由于数据基本处于暴露状态,所以数据的隐蔽性,可控性也非常差,并发控制复杂易错;(3)由于数据由各个不同的内存结构来分别实现,所以管理系统的灵活性,可扩展性很差,每次增加数据内存结构都需要增加零散在各处的代码来实现;(4)由于调用分散,内存数据整体上缺乏控制,导致内存数据的调试(DEBUG)工作极其困难。
技术实现思路
本专利技术的目的是提供,对公共内存数据进行集中管理,同时保证数据的安全性,隐蔽性,可控性,提高管理系统的灵活性,可扩展性,以及增强的DEBUG功能,使内存调测更加方便,消除公共内存数据耦合对分布式系统架构的不良影响。本专利技术的具体技术方案如下,采用面向对象技术,建立一个类作为内存管理器,保证所述内存管理器在内存中只有一个实例,即设定该内存管理器为Singleton类,由所述内存管理器保存各个数据类的实例指针,控制所述各个数据类的读写操作。所述方法,其中将所述各个数据类的构造函数设定为保护类型,即Protected类型,在所述各个数据类中设定所述内存管理器取得所述各个数据类指针的函数为友元函数。所述方法,其中所述内存管理器通过由对象控制的配置文件,对所述各个数据类进行索引。所述方法,其中AutoOpen类控制文件在脱离作用域后自动关闭;AutoLock类控制互斥锁功能,使所述文件在脱离作用域后自动释放。所述方法,其中所述内存管理器通过内部锁机制对整个公共内存做统一的集中线程并发控制。所述方法,其中外围业务函数层根据业务逻辑手动对所述各个数据类进行自愈(Reload)操作。所述方法,其中在所述各个数据类保留有特征标志符,调试函数根据所述特征标志符来确定对所述各个数据类对象进行调试操作,所述调试操作包括数据遍历、数据查询、数据打印。所述方法,其中所述各个数据类提供完整的批量读写函数、单条读写函数、手动读写函数,并以不同的命名规范加以区别。所述方法,其中将所述各个数据类设定为STL标准模板库类。所述方法,其中所述各个数据类包括映射(map)类、向量(vector)类、列表(list)类、队列(queue)类、集合(set)类、堆栈(stack)类。本专利技术对内存结构的访问提供了一套统一的API操作框架,从而提高了公共内存管理系统整体的性能,以及数据的安全性,隐蔽性,可控性,并抹去内存结构的相异对内存数据管理系统延展性的侵害。在编译系统支持的情况下,进一步提供对结构相同而名称相异的内存数据的统一维护。在此基础上再针对系统本身提供集中,可扩展的调试功能,使调用者只关心业务实现本身,而不必关心公共数据的存取。同时,将公共内存数据管理系统做成一个可拆卸模块,消除了其对分布式系统数据耦合的不良影响。附图说明图1是本专利技术的共享数据管理模块结构图2是本专利技术的共享数据管理模块部署图3是本专利技术的CGDI类UML(Unified Modeling Language)图4是本专利技术的CGM类UML图5是本专利技术的AutoLock和AutoOpen类UML图。具体实施例方式下面结合附图和实施例对本专利技术作进一步详细说明这里针对STL的MAP结构统一管理给出本专利技术的实施过程,但其方法对其他STL容器或非STL结构也同样适用。图1介绍了本专利技术的共享数据管理模块结构图,图2介绍了本专利技术的共享数据管理模块部署图,这套内存数据管理API以一个Singleton类CGDI(Globe Data Interface)为起点,提供统一的对内存数据包装类CGM(GlobeMap)的访问,CGDI是一个内存管理器,它保存有各个数据类的实例指针,负责生成和调度数据类CGM的读写操作,使得包装后的数据类CGM访问受控,由于CGM类的构造函数为Protected所以,如果不通过CGDI类的友元接口将无法生成或访问该数据类,CGM数据类得到了很好的数据隐蔽性。以下是CGDI类的类定义的一种模式class CGDI{publicstatic CGDI*InstanceCGDI();//(双斜杠后为说明文字)CGDI类的唯一实例化接口,该接口可以//使用宏来封装publictypedef std∷map<std∷string,void*> NAME_POINTER_MAP;//容纳所有管理CGM实例从名称到指针的MAPpublictemplate<class FirstType,class SecondType>void*GetPointer(const std∷string &amp; strName);//模板函数,由此接口根据类型和名称来获取唯一CGM指针protectedCGDI()//构造函数,该函数为Protected,所以无法通过NEW的方式进行实例化。{pthread_mutex_init(&amp;m_mtCGDI,NULL);//CGDI接口的访问控制锁m_memConfiger.Init(″../cfg/config.cfg″);<!-- SIPO <DP n=4> --><dp n=d4/>//通过内置的内存参数配置器CGMC类实例来读取文件配置内存参数}~CGDI()//析构函数,与构造函数对应,也必须是保护类型{pthread_mutex_destroy(&amp;m_mtCGDI);//销毁CGDI接口的访问控制锁}publicCGMC m_memConfiger;//内存配置器CGMC实例protectedstatic CGDI*m_pInstance;//存放本类唯一实例的指针protectedNAME_POINTER_MAP m_mapName2Pointer;//存放管理的CGM实例从名称类型到指针的MAPprotectedstatic pthread_mutex_t m_mtCGDI; //CGDI类接口控制锁};class CGMC//包含在CGDI实例中的类对象,实现从文件中读取对公共内存参数的配置,//并提供统一的线程安全的参数访问接口。{publicCGMC() //CGMC类构造函数{pthread_mutex_init(&amp;m_mtCGMC,NULL);<!-- SIPO <DP n=5> --&g本文档来自技高网...

【技术保护点】
一种共享数据的管理方法,其特征在于:采用面向对象技术,建立一个类作为内存管理器,保证所述内存管理器在内存中只有一个实例,由所述内存管理器保存各个数据类的实例指针,控制所述各个数据类的读写操作。

【技术特征摘要】
1、一种共享数据的管理方法,其特征在于采用面向对象技术,建立一个类作为内存管理器,保证所述内存管理器在内存中只有一个实例,由所述内存管理器保存各个数据类的实例指针,控制所述各个数据类的读写操作。2、根据权利要求1所述的方法,其特征在于将所述各个数据类的构造函数设定为保护类型,在所述各个数据类中设定所述内存管理器取得所述各个数据类指针的函数为友元函数。3、根据权利要求1所述的方法,其特征在于所述内存管理器通过由对象控制的配置文件,对所述各个数据类进行索引。4、根据权利要求2所述的方法,其特征在于AutoOpen类控制文件在脱离作用域后自动关闭;AutoLock类控制互斥锁功能,使所述文件在脱离作用域后自动释放。5、根据权利要求4所述的方法,其特征在于所述内存管理器...

【专利技术属性】
技术研发人员:李曲
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1