[發明專利]對象代理數據庫中多路徑跨類查詢及優化方法有效
| 申請號: | 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.szxzyx.cn/pat/books/202010589900.X/1.html,轉載請聲明來源鉆瓜專利網。





