[发明专利]对象代理数据库中多路径跨类查询及优化方法有效
申请号: | 202010589900.X | 申请日: | 2020-06-24 |
公开(公告)号: | CN111797114B | 公开(公告)日: | 2021-08-31 |
发明(设计)人: | 彭煜玮;郏紫宇;兰海 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
代理公司: | 湖北武汉永嘉专利代理有限公司 42102 | 代理人: | 王丹 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 对象 代理 数据库 路径 查询 优化 方法 | ||
1.一种对象代理数据库中多路径跨类查询方法,其特征在于:设定如下语法的查询模式:
SELECT(C1{Q1}→C2{Q2}→…→Cr{Qr}→[…,…]→[Ct1{Qt1},…Ctn{Qtn}]).
[Attr1,…Attrm]FROM C1(r≥1,n≥1,m≥2)
其中,已知Ci代表有向图中的某个节点,1≤i≤n,每个节点最多出现一次,且Ci和Ci+1间是直接代理关系;Ctj代表终点类,1≤j≤n;Attrk代表需要在终点类获取的目标属性,1≤k≤m;Q1-Qr和Qt1-Qtn均表示作用在对应的路径节点类上的条件谓词;多路径中的一个或多个连续存在的公共节点类称为公共路径;当n=1、m≥2时表示为终点类相同的多路径跨类查询,在同一终点类获取多个目标属性;当m=n≥2时表示为终点类不同的多路径跨类查询,在不同的终点类获取不同的目标属性,终点类的个数和目标属性表达式的个数相同,并存在一一对应关系;
根据所述的查询模式,提出适用于多路径表达式计算的算法如下:
步骤1.1,判断多路径表达式类型,若属于终点类不同的多路径表达式,则跳转到步骤1.7;
步骤1.2,依次选取起点类Ci中的每个对象Oi作为起点,将每个路径表达式视为起点类的一个属性表达式;
步骤1.3,从双向指针目录获取满足路径上谓词条件的路径表达式实例PEiI;
步骤1.4,对对象比为1:N的对象实例,设立flag标记数组并缓存;
步骤1.5,分别计算属性列表里的多个属性表达式得到每个Attrk;
步骤1.6,若缓存数组中有对象实例存在flag标记,则跳转到步骤1.4取下一个对象实例,若没有则跳转到步骤1.14;
步骤1.7,依次选取起点类Ci中的每个对象Oi作为起点,将每个路径表达式视为起点类的一个属性表达式;
步骤1.8,从双向指针目录获取满足路径上谓词条件的路径表达式实例PEiI;
步骤1.9,对当前类节点的下一个类节点不唯一的情况,设立flag标记数组并缓存;
步骤1.10,对对象比为1:N的对象实例,设立flag2标记数组并缓存;
步骤1.11,分别计算属性列表里的多个属性表达式得到每个Attrk;
步骤1.12,如果缓存数组中有对象实例存在flag2标记,则跳转到步骤1.10取下一个对象实例;
步骤1.13,如果缓存数组中有类节点存在flag标记,则跳转到步骤1.9取下一个类节点;
步骤1.14,组合目标属性形成结果返回给用户。
2.根据权利要求1所述的对象代理数据库中多路径跨类查询方法的优化方法,其特征在于:本方法包括:
2.1、径向并行化优化方法,包括以下子步骤:
步骤2.11,选取中间类作为开始类节点,中间类指第x个类节点;x为len/2后向下取整;
步骤2.12,依次选取中间类Ci中的每个对象Oi作为起点,将每个路径表达式视为起点类的一个属性表达式;同时开启线程1和线程2;
步骤2.13,线程1根据双向指针目录依次向起点类测试路径连通性;
步骤2.14,线程2从双向指针目录获取满足路径上谓词条件的路径表达式实例PEiI;
步骤2.15,对对象比为1:N的对象实例,设立flag标记数组并缓存;
步骤2.16,若有一个线程检测到无效路径表达式,则终止查找并通知另一个线程也终止;
步骤2.17,分别计算属性列表里的多个属性表达式得到每个Attrk;
步骤2.18,若缓存数组中有对象实例存在flag标记,则跳转到步骤2.13取下一个对象实例,否则继续;
步骤2.19,组合目标属性形成结果返回给用户;
2.2、面向终点类的并行化方案具体实施包括以下子步骤:
步骤2.21,选取多路径表达式公共前缀路径中的最后一个类作为开始类节点;
步骤2.22,依次选取开始类Ci中的每个对象Oi作为起点,将每个路径表达式视为起点类的一个属性表达式, 根据类分支结点个数N,同时开启N+1个线程;
步骤2.23,线程1根据双向指针目录依次向起点类测试路径连通性;
步骤2.24,剩余N个线程同时从双向指针目录向终点类获取N条路径的表达式实例PEiIi;
步骤2.25,对对象比为1:N的对象实例,设立flag标记数组并缓存;
步骤2.26,若有一个线程检测到无效路径表达式,则终止查找并通知其余所有线程也终止;
步骤2.27,分别计算属性列表里的多个属性表达式得到每个Attrk;
步骤2.28,若缓存数组中有对象实例存在flag标记,则跳转到步骤2.23取下一个对象实例,否则继续;
步骤2.29,组合目标属性形成结果返回给用户。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010589900.X/1.html,转载请声明来源钻瓜专利网。