[发明专利]一种面向对象代理数据库的虚属性查询优化方法有效
| 申请号: | 201310139781.8 | 申请日: | 2013-04-22 |
| 公开(公告)号: | CN103218439A | 公开(公告)日: | 2013-07-24 |
| 发明(设计)人: | 彭智勇;王梁;付祖发;彭煜玮 | 申请(专利权)人: | 武汉大学 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
| 地址: | 430072 湖*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 面向 对象 代理 数据库 属性 查询 优化 方法 | ||
技术领域
本发明涉及数据库查询处理领域,尤其是涉及一种面向对象代理数据库的虚属性查询优化方法。
背景技术
随着信息技术的发展,数据库技术也在不断地进步。以关系型数据库为代表的传统数据库因其完备的理论和有效的实现方法,取得了长足的发展和广泛有效的应用。新的领域如地理信息系统、知识库系统和多媒体信息系统等,对数据库提出了新的需求,需要能够高效处理复杂数据类型。数据库技术与面向对象方法相结合是数据库技术研究和应用的重要方向,随之出现了面向对象模型,引入了对象和对象标识等重要概念。在面向对象数据库系统中,数据库是对象集合,而对象由数据和方法组成。
面向对象数据库系统较好地支持非传统的数据类型,但是缺乏公共模型和形式化描述,在技术上成熟度不足,在现实中难以使用和推广。作为面向对象模型的扩充,对象代理模型来源于生活中代理人的概念。在对象代理模型中,对象信息的处理主要是构造一个代理对象作为其视图,代理对象可以继承源对象的部分或全部属性,称为虚属性,同时也可以扩展新的属性,称为实属性。共享同样属性和方法的所有对象构成一个对象类,所有代理对象构成代理类。在实际存储中,只存储实属性的值,虚属性只存储模式信息,不实际存储其值,而是通过指针获取对应实属性的值。
依据对象代理模型实现的对象代理数据库,因其特殊的存储机制,采用切换表达式的方式,存储虚属性与实属性的关联,通过对这种表达式求值来实时获取虚属性的值。在对象代理数据库查询执行阶段,虚属性的获取极大影响了查询的效率,优化虚属性的查询效率对于对象代理数据库的推广使用有着重大的意义。
发明内容
本发明的上述技术问题主要是通过下述技术方案得以解决的:
一种面向对象代理数据库的虚属性查询优化方法,其特征在于,基于以下定义:在对象代理数据库中,代理类类似于特殊的视图,但又不等同关系型数据库的视图;代理类能够继承源类的属性和方法,同时又可扩展相应的属性;在处理代理类上的查询时,能够借鉴关系型数据库处理视图的方法,即将代理类上的查询表达式提升到源类上,这个过程称之为表达式提升;在创建代理类时,需要将代理规则部分抽取出来,代理规则与创建视图的形式相同,采用系统创建视图的方式,将代理类以视图的形式注册到系统中;所述表达式提升包括以下步骤:
步骤1,建立代理类列表DeputyList,扫描查询涉及到的范围表列表,判断当前类是否是代理类,如果当前类是代理类,而且在查询中不涉及到该类的实属性,则加入到DeputyList中; 若当前类不是代理类,则无需进行表达式提升,结束整个步骤;
步骤2,对于步骤1中生成的DeputyList中的每个代理类,设其查询需要的代价为cost1,同时设代理类提升后对应的源类上的查询代价为cost2,若cost1 > cost2,则标记该代理类为能够提升;若cost1 <= cost2,则提升表达式后的代价不小于未提升的代价,标记该代理类为不能提升;
步骤3,对于DeputyList中标记为能够提升的代理类,采用查询重写的方式,对该代理类出现的地方进行重写,用源类和代理规则来重写查询,从而实现表达式提升;
步骤4,将查询表达式提升至源类后,若该源类是代理类,转至步骤2。若该源类不是代理类,则结束整个过程。
在上述的一种面向对象代理数据库的虚属性查询优化方法,所述的步骤2中,在步骤2中,代价计算过程如下:
对象代理模型通过对象代理代数定义代理类;对象代理代数主要由SELECT、PROJECT、EXTEND、UNION、JOIN、GROUP六种基本操作构成,根据这六种基本操作的组合,在对象代理数据库中定义了四种基本的代理类类型,分别为SELECT、UNION、JOIN、GROUP四种,由于在对象代理数据库中,索引扫描有着特殊性,为了同传统数据库相结合,特介绍顺序扫描下的代价;
步骤2.1,代理类在存储时,采用了存储实属性值,虚属性仅存储源对象和代理对象双向指针的策略。在扫描代理类时,不能直接获取虚属性的值。获取虚属性值的代价分为扫描代理类、查找源对象和代理对象双向指针表(pg_bipointer)以及根据源对象对象标识获取源对象三部分,其表达如公式一所示:
PCost = N(D) + MAPCost + PF(S) 公式一
其中,定义N(D)为代理类D所占磁盘数, MAPCost为扫描pg_bipointer表的代价,PF(S)为获取源对象的代价。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310139781.8/2.html,转载请声明来源钻瓜专利网。





