发明名称 一种面向对象代理数据库的虚属性查询优化方法
摘要 本发明公开了一种面向对象代理数据库的虚属性查询优化方法,在方法中提出了基于表达式提升的优化方案。在基于表达式提升的优化方案中,根据代理类独特的特性,对不同代理类对应的源类上查询进行了代价估计,提出了代价估计函数。通过代价估计函数可以很好地对源类和代理类扫描的代价进行衡量,从而判断是否能够进行表达式提升。当满足条件后,采用类似于视图的处理方式,将对代理类的查询提升为对源类的查询,从而减少切换表达式的计算次数,达到优化的目的。通过对虚属性的查询进行优化,可以极大地提高对象代理数据库的实用性。
申请公布号 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 湖北省武汉市武昌区珞珈山武汉大学