发明名称 |
一种面向对象代理数据库的虚属性查询优化方法 |
摘要 |
本发明公开了一种面向对象代理数据库的虚属性查询优化方法,在方法中提出了基于表达式提升的优化方案。在基于表达式提升的优化方案中,根据代理类独特的特性,对不同代理类对应的源类上查询进行了代价估计,提出了代价估计函数。通过代价估计函数可以很好地对源类和代理类扫描的代价进行衡量,从而判断是否能够进行表达式提升。当满足条件后,采用类似于视图的处理方式,将对代理类的查询提升为对源类的查询,从而减少切换表达式的计算次数,达到优化的目的。通过对虚属性的查询进行优化,可以极大地提高对象代理数据库的实用性。 |
申请公布号 |
CN103218439B |
申请公布日期 |
2016.06.08 |
申请号 |
CN201310139781.8 |
申请日期 |
2013.04.22 |
申请人 |
武汉大学 |
发明人 |
彭智勇;王梁;付祖发;彭煜玮 |
分类号 |
G06F17/30(2006.01)I |
主分类号 |
G06F17/30(2006.01)I |
代理机构 |
武汉科皓知识产权代理事务所(特殊普通合伙) 42222 |
代理人 |
鲁力 |
主权项 |
一种面向对象代理数据库的虚属性查询优化方法,其特征在于,基于以下定义:在对象代理数据库中,代理类类似于特殊的视图,但又不等同关系型数据库的视图;代理类能够继承源类的属性和方法,同时又可扩展相应的属性;在处理代理类上的查询时,能够借鉴关系型数据库处理视图的方法,即将代理类上的查询表达式提升到源类上,这个过程称之为表达式提升;在创建代理类时,需要将代理规则部分抽取出来,代理规则与创建视图的形式相同,采用系统创建视图的方式,将代理类以视图的形式注册到系统中;所述表达式提升包括以下步骤:步骤1,建立代理类列表DeputyList,扫描查询涉及到的范围表列表,判断当前类是否是代理类,如果当前类是代理类,而且在查询中不涉及到该类的实属性,则加入到DeputyList中;若当前类不是代理类,则无需进行表达式提升,结束整个步骤;步骤2,对于步骤1中生成的DeputyList中的每个代理类,设其查询需要的代价为cost1,同时设代理类提升后对应的源类上的查询代价为cost2,若cost1>cost2,则标记该代理类为能够提升;若cost1<=cost2,则提升表达式后的代价不小于未提升的代价,标记该代理类为不能提升;步骤3,对于DeputyList中标记为能够提升的代理类,采用查询重写的方式,对该代理类出现的地方进行重写,用源类和代理规则来重写查询,从而实现表达式提升;步骤4,将查询表达式提升至源类后,若该源类是代理类,转至步骤2,若该源类不是代理类,则结束整个过程。 |
地址 |
430072 湖北省武汉市武昌区珞珈山武汉大学 |