一種基于屬性匹配的快速檢索與獲取數據特征方法
【專利摘要】本發明公開了一種基于屬性匹配的快速檢索與獲取數據特征方法。本發明包括步驟1.搭建屬性匹配的模型。步驟2.基于屬性匹配的模型進行快速檢索。本發明是在一個獲取擁有某種屬性用戶的項目基礎上抽象出來的一個方法。該方法使用了內存快速運算與快速選擇和多階緩存技術。使用該方法以快速獲取匹配結果,增強匹配結果的重用性。引入了內存數據庫對檢索數據進行緩存和使用內存數據庫進行中間結果的計算,縮小了傳統檢索方法在硬盤上的瓶頸,提高了數據輸出速度與數量。
【專利說明】
一種基于屬性匹配的快速檢索與獲取數據特征方法
技術領域
[0001] 本發明屬于計算機應用技術領域,涉及一種基于屬性匹配的快速檢索與獲取數據 特征方法。
【背景技術】
[0002] 目前的業務系統越來越負責,但在軟件設計的過程中,大家都是使用面向對象的 方法設計與開發平臺,如學校或者公司管理系統中的個人信息可能多張表格信息。同時這 些信息都通過獨立的表存放。該設計方法是符合軟件設計的,而且可以讓軟件更靈活,但在 數據查詢的過程中就會出現問題;因為上述信息都是存放在不同的表中,因此需要通過表 關聯的方法關聯所有信息。而關聯會造成結果數據量快速增加,笛卡爾積增加的越快。因此 在一些高頻的查詢業務中,該方法可能無法滿足系統的并發要求,或者響應效率很低。
[0003] 本發明在傳統的關系數據庫直接檢索的基礎上進行改進,引入了內存數據庫對檢 索數據進行緩存和使用內存數據庫進行中間結果的計算,縮小了傳統檢索方法在硬盤上的 瓶頸,提高了數據輸出速度與數量。
【發明內容】
[0004] 本發明的目的是針對現有技術的不足,提供一種基于屬性匹配的快速檢索與獲取 數據特征方法。
[0005] 本發明解決其技術問題所采用的技術方案如下:
[0006] -種基于屬性匹配的快速檢索與獲取數據特征方法,具體包括如下步驟:
[0007] 步驟1.搭建屬性匹配的模型。
[0008] 1-1.對m個屬性進行歸類,具體的:將m個屬性中屬于互斥的兩種或多種屬性歸位 一類;如果其中一個或多個屬性不存在互斥的兩種或多種屬性,則其單個屬性歸位一類,例 如將m個屬性總共分成了 (^,(^,(^(^…(^這么幾類肩們稱這些類為屬性類^個屬性形成 的集合稱為屬性總集。
[0009] 1-2.對m個屬性進行屬性編號,編號原則:同一個類中的屬性編號相鄰,例如(M〇, Ml)C〇,(M2,M3,M4)Cl,(M5)c2,(M6,M7)C2---(Mm-l)Cc-l;
[0010] 單個屬性均視為一個只包含自身的屬性總集的子集,所有只包含單個屬性的屬性 集合生成各自的long類型序列碼并添加到控制器中。
[0011 ]將所有屬性個數超過1的屬性類生成long類型序列碼并添加到控制器中。由屬性 個數超過1的屬性類生成的序列碼稱為互斥序列碼。
[0012] 所述的long類型的序列碼的生成規則如下:
[0013] 輸入一個屬性總集的子集,系統會為其聲明一個值為0的long類型整數k;如果輸 入的屬性集合中有某一個編號為n的屬性M n,就將k進行如下運算土 = 1^|1〈〈11,表明擁有1這 個屬性;反復執行上面的移位置位的步驟,直到輸入屬性集合中所有屬性都被標記到k中, 輸出序列碼。
[0014] 1-3.對每個屬性建立一組關系數據庫表,關系數據庫表的數量為n;每組中每張關 系數據庫表均用來存儲擁有對應屬性的個體的id,而擁有對應屬性的個體的id加入該組的 哪一張關系數據庫表根據id特性而定。每個屬性關系數據庫表組中id的映射規則相同,例 如映射規則為id與n的余數;將所有由單個屬性創建而成的關系數據庫表組的集合叫做一 階表群,一階表群由m*n個表組成。
[0015] 1-4.在內存數據庫中創建一階表群,然后將現有的所有個體id,根據其個體擁有 的屬性逐條添加到各自屬性的關系數據庫表組和內存數據庫表組中;將每個個體擁有的屬 性集合生成各自的long類型的序列碼并添加到控制程序中。由個體屬性集合生成的long類 型序列碼稱為個體序列碼。
[0016] 1-5.將每個類與其他類分別進行笛卡爾積,形成的每個有序對中元素屬性編號小 的為左投影,編號大的為右投影,從而生成二階關系屬性。例如:步驟1-2中C3和C0進行笛卡 爾積,其結果為(M0,M6),(MO,M7),(Ml,M6),(Ml,M7),已然排除重復出現的有序對。二階關 系屬性均視為一個包含兩個屬性的屬性總集的子集,所有二階關系屬性生成各自的long類 型序列碼并添加到控制器中。
[0017] 1-6.為每一個二階關系屬性建立屬性表組,屬性表組的數量為n;每個二階關系屬 性表組中的每張關系數據庫表均用來存儲擁有對應二階關系屬性的個體的id,而擁有對應 二階關系屬性的個體的id加入該組的哪一張關系數據庫表根據id特性而定。每個二階關系 屬性表組中id的映射規則相同,例如映射規則為id與n的余數;將由二階關系屬性建立的所 有關系數據庫表組的集合稱為二階表群。二階表群中表的數量范圍是0-n * g。
[0018] 1-7.在內存數據庫中創建二階表群,然后通過內存數據庫中自帶的相交函數,運 算每個二階關系屬性的個體id;并將運算獲得的結果保存在內存數據庫和關系數據庫的二 階表群中。
[0019] 所述的個體的增加:新增個體的屬性集合生成1 ong類型的序列碼;將新增個體的 序列碼與系統中所有關系序列碼進行比較,當某個關系序列碼新增個體序列碼相交大于〇, 并且小于新增個體序列碼時,將關系序列碼中該序列碼對應的屬性表組添加進新增個體 id。然后同步關系數據庫與內存數據庫。
[0020] 所述的個體屬性更改:獲取更改個體的原屬性集與新屬性集,生成long類型的原 個體序列碼和新個體序列碼;將原個體序列碼和新序列碼進行比較得到屬性變動,獲取刪 除序列碼和新增序列碼;刪除序列碼由更改后刪除屬性組成的刪除屬性集生成,新增序列 碼由更改后新增屬性組成的新增屬性集生成;使用刪除序列碼和新增序列碼與系統中所有 關系序列碼進行比較,當某個關系序列碼滿足刪除序列碼相交大于〇,并且小于刪除個體序 列碼時,將關系序列碼中該序列碼對應的屬性表組中刪除更改個體id。當某個關系序列碼 滿足新增序列碼相交大于〇,并且小于新增個體序列碼時,將關系序列碼中該序列碼對應的 屬性表組中添加更改個體id。然后同步關系數據庫與內存數據庫。
[0021]所述的關系序列碼由單個屬性或二階關系屬性或高階關系屬性生成的long類型 序列碼;
[0022] 步驟2.基于屬性匹配的模型進行快速檢索。
[0023] 2-1.如果請求屬性集合中屬性個數小于3個,則系統在內存數據庫中直接獲取請 求屬性集合對應的屬性表組中的數據,如果內存數據庫中找不到請求屬性集合對應的屬性 表組,說明存在互斥關系,會返回空。
[0024] 2-2.如果請求屬性集合中屬性個數大于3個,則需要檢查請求屬性集合中是否存 在互斥關系的屬性,如果存在就直接返回空,否則在內存數據庫中檢索是否存在請求屬性 集合對應的屬性表組,如果存在就返回結果,否則執行如下步驟:
[0025] 2-2-1.將請求屬性集合劃分成多個互斥的子集,多種劃分方式形成多種運算方 案;所述的超過2個屬性形成的屬性集合稱為高階關系屬性。
[0026]請求屬性集合生成一個long類型的序列碼,將這個序列碼輸入系統的運算方案生 成模塊中,運算方案生成模塊的方案包括最少運算方案、平衡運算方案、較多運算方案。
[0027] 最少運算方案能夠最快的獲得匹配結果,但是這需要觀察者曾經進行過多次不同 屬性集合的匹配,運算過程中生成的高階關系屬性較少,不利于觀察者未來的匹配請求。
[0028] 較多運算方案運算在三種方案獲得運算結果最慢,但是運算過程中生成的高階關 系屬性較多。有利于觀察者未來的匹配請求。
[0029] 平衡運算方案為前兩者適中的方案。系統會根據觀察者需求,系統會根據內部情 況自動選擇最少運算方案、平衡運算方案、較多運算方案中的其中一種運算方案。
[0030] 2-2-2.對劃分好的多個互斥子集進行排序,具體的:
[0031]首先,計算每個互斥子集內屬性的個數,然后將多個互斥子集根據其各自屬性個 數,由少到多的順序進行排序;
[0032] 2-2-3.對排序的多個互斥子集進行運算,具體的:
[0033] 根據排序,執行器會從依次從隊列里彈出兩個互斥子集,先在內存數據庫中檢索 是否存在由該兩個互斥子集組成的高階關系屬性對應的關系序列碼,如果存在,則將新生 成高階關系屬性轉化成流程項放置在執行隊列末尾;如果不存在,則將兩個互斥子集對應 的屬性表組進行相交運算獲得高階關系屬性結果集,并為這個高階關系屬性建立一組關系 數據庫表;則將新生成高階關系屬性轉化成流程項放置在執行隊列末尾;
[0034] 所述的新建的關系數據庫表的數量為n;每組中每張關系數據庫表均用來存儲擁 有這個高階關系屬性的個體的id,而擁有這個高階關系屬性的個體的id加入該組的哪一張 關系數據庫表根據id特性而定。每個高階關系屬性的關系數據庫表組中id的映射規則相 同,在內存數據庫中建立相同的高階關系屬性對應的屬性表組,將高階關系屬性結果集分 別存入屬性表組中和內存數據庫中。為新生成的高階關系屬性生成一個long類型的序列 碼,并將這個序列碼添加到控制器中。
[0035] 2-2-4.重復執行步驟2-2-3,直到執行隊列里只有一項流程項,這個流程項對應的 屬性表組就是滿足請求屬性集合的所有個體id的集合。
[0036]本發明有益效果如下:
[0037]本發明能夠減少對硬盤的訪問,減少了系統整體響應時間;使用內存數據庫進行 存儲與運算,提高訪問與運算速度;對于觀察者多次快速的匹配請求,可以快速響應;針對 大量個體研究進行了優化,更適合樣本容量大的情景;快速獲取樣本群體的屬性分布與屬 性相關性。
【附圖說明】
[0038]圖1為本發明初期工作流程圖;
[0039]圖2為本發明一次匹配流程;
[0040]圖3為本發明系統數據抽象圖
【具體實施方式】
[0041] 下面結合附圖和實施例對本發明做進一步說明。
[0042] 如圖1-3所示,一種基于屬性匹配的快速檢索與獲取數據特征方法,具體包括如下 步驟:
[0043]步驟1.如圖1搭建屬性匹配的模型。
[0044] 1-1.對m個屬性進行歸類,具體的:將m個屬性中屬于互斥的兩種或多種屬性歸位 一類;如果其中一個或多個屬性不存在互斥的兩種或多種屬性,則其單個屬性歸位一類,例 如將m個屬性總共分成了 (^,(^,(^(^…(^這么幾類肩們稱這些類為屬性類^個屬性形成 的集合稱為屬性總集。
[0045] 1-2.對m個屬性進行屬性編號,編號原則:同一個類中的屬性編號相鄰,例如(Mo, Ml)C〇,(M2,M3,M4)Cl,(M5)c2,(M6,M7)C2---(Mm-l)Cc-l;
[0046] 單個屬性均視為一個只包含自身的屬性總集的子集,所有只包含單個屬性的屬性 集合生成各自的long類型序列碼并添加到控制器中。
[0047]將所有屬性個數超過1的屬性類生成long類型序列碼并添加到控制器中。由屬性 個數超過1的屬性類生成的序列碼稱為互斥序列碼。
[0048]所述的long類型的序列碼的生成規則如下:
[0049] 輸入一個屬性總集的子集,系統會為其聲明一個值為0的long類型整數k;如果輸 入的屬性集合中有某一個編號為n的屬性M n,就將k進行如下運算土 = 1^|1〈〈11,表明擁有1這 個屬性;反復執行上面的移位置位的步驟,直到輸入屬性集合中所有屬性都被標記到k中, 輸出序列碼。
[0050] 1-3.對每個屬性建立一組關系數據庫表,關系數據庫表的數量為n;每組中每張關 系數據庫表均用來存儲擁有對應屬性的個體的id,而擁有對應屬性的個體的id加入該組的 哪一張關系數據庫表根據id特性而定。每個屬性關系數據庫表組中id的映射規則相同,例 如映射規則為id與n的余數;將所有由單個屬性創建而成的關系數據庫表組的集合叫做一 階表群,一階表群由m*n個表組成。數據抽象圖參見圖3。
[0051 ] 1-4.在內存數據庫中創建一階表群,然后將現有的所有個體id,根據其個體擁有 的屬性逐條添加到各自屬性的關系數據庫表組和內存數據庫表組中;將每個個體擁有的屬 性集合生成各自的long類型的序列碼并添加到控制程序中。由個體屬性集合生成的long類 型序列碼稱為個體序列碼。
[0052] 1-5.將每個類與其他類分別進行笛卡爾積,形成的每個有序對中元素屬性編號小 的為左投影,編號大的為右投影,從而生成二階關系屬性。例如:步驟1-2中C3和C0進行笛卡 爾積,其結果為(M0,M6),(M0,M7),(Ml,M6),(Ml,M7),已然排除重復出現的有序對。二階關 系屬性均視為一個包含兩個屬性的屬性總集的子集,所有二階關系屬性生成各自的long類 型序列碼并添加到控制器中。
[0053] 1-6.為每一個二階關系屬性建立屬性表組,屬性表組的數量為n;每個二階關系屬 性表組中的每張關系數據庫表均用來存儲擁有對應二階關系屬性的個體的id,而擁有對應 二階關系屬性的個體的id加入該組的哪一張關系數據庫表根據id特性而定。每個二階關系 屬性表組中id的映射規則相同,例如映射規則為id與n的余數;將由二階關系屬性建立的所 有關系數據庫表組的集合稱為二階表群。二階表群中表的數量范圍是o-n * Cf。
[0054] 1-7.在內存數據庫中創建二階表群,然后通過內存數據庫中自帶的相交函數,運 算每個二階關系屬性的個體id;并將運算獲得的結果保存在內存數據庫和關系數據庫的二 階表群中。數據抽象圖參見圖3。
[0055] 所述的個體的增加:新增個體的屬性集合生成long類型的序列碼;將新增個體的 序列碼與系統中所有關系序列碼進行比較,當某個關系序列碼新增個體序列碼相交大于〇, 并且小于新增個體序列碼時,將關系序列碼中該序列碼對應的屬性表組添加進新增個體 id。然后同步關系數據庫與內存數據庫。
[0056] 所述的個體屬性更改:獲取更改個體的原屬性集與新屬性集,生成long類型的原 個體序列碼和新個體序列碼;將原個體序列碼和新序列碼進行比較得到屬性變動,獲取刪 除序列碼和新增序列碼;刪除序列碼由更改后刪除屬性組成的刪除屬性集生成,新增序列 碼由更改后新增屬性組成的新增屬性集生成;使用刪除序列碼和新增序列碼與系統中所有 關系序列碼進行比較,當某個關系序列碼滿足刪除序列碼相交大于〇,并且小于刪除個體序 列碼時,將關系序列碼中該序列碼對應的屬性表組中刪除更改個體id。當某個關系序列碼 滿足新增序列碼相交大于〇,并且小于新增個體序列碼時,將關系序列碼中該序列碼對應的 屬性表組中添加更改個體id。然后同步關系數據庫與內存數據庫。
[0057]所述的關系序列碼由單個屬性或二階關系屬性或高階關系屬性生成的long類型 序列碼;
[0058] 步驟2.如圖2基于屬性匹配的模型進行快速檢索。
[0059] 2-1.如果請求屬性集合中屬性個數小于3個,則系統在內存數據庫中直接獲取請 求屬性集合對應的屬性表組中的數據,如果內存數據庫中找不到請求屬性集合對應的屬性 表組,說明存在互斥關系,會返回空。
[0060] 2-2.如果請求屬性集合中屬性個數大于3個,則需要檢查請求屬性集合中是否存 在互斥關系的屬性,如果存在就直接返回空,否則在內存數據庫中檢索是否存在請求屬性 集合對應的屬性表組,如果存在就返回結果,否則執行如下步驟:
[0061] 2-2-1.將請求屬性集合劃分成多個互斥的子集,多種劃分方式形成多種運算方 案;所述的超過2個屬性形成的屬性集合稱為高階關系屬性。
[0062]請求屬性集合生成一個long類型的序列碼,將這個序列碼輸入系統的運算方案生 成模塊中,運算方案生成模塊的方案包括最少運算方案、平衡運算方案、較多運算方案。
[0063]最少運算方案能夠最快的獲得匹配結果,但是這需要觀察者曾經進行過多次不同 屬性集合的匹配,運算過程中生成的高階關系屬性較少,不利于觀察者未來的匹配請求。 [0064]較多運算方案運算在三種方案獲得運算結果最慢,但是運算過程中生成的高階關 系屬性較多。有利于觀察者未來的匹配請求。
[0065]平衡運算方案為前兩者適中的方案。系統會根據觀察者需求,系統會根據內部情 況自動選擇最少運算方案、平衡運算方案、較多運算方案中的其中一種運算方案。
[0066] 2-2-2.對劃分好的多個互斥子集進行排序,具體的:
[0067]首先,計算每個互斥子集內屬性的個數,然后將多個互斥子集根據其各自屬性個 數,由少到多的順序進行排序;
[0068] 2-2-3.對排序的多個互斥子集進行運算,具體的:
[0069] 根據排序,執行器會從依次從隊列里彈出兩個互斥子集,先在內存數據庫中檢索 是否存在由該兩個互斥子集組成的高階關系屬性對應的關系序列碼,如果存在,則將新生 成高階關系屬性轉化成流程項放置在執行隊列末尾;如果不存在,則將兩個互斥子集對應 的屬性表組進行相交運算獲得高階關系屬性結果集,并為這個高階關系屬性建立一組關系 數據庫表;則將新生成高階關系屬性轉化成流程項放置在執行隊列末尾;
[0070] 所述的新建的關系數據庫表的數量為n;每組中每張關系數據庫表均用來存儲擁 有這個高階關系屬性的個體的id,而擁有這個高階關系屬性的個體的id加入該組的哪一張 關系數據庫表根據id特性而定。每個高階關系屬性的關系數據庫表組中id的映射規則相 同,在內存數據庫中建立相同的高階關系屬性對應的屬性表組,將高階關系屬性結果集分 別存入屬性表組中和內存數據庫中。為新生成的高階關系屬性生成一個long類型的序列 碼,并將這個序列碼添加到控制器中。
[0071] 2-2-4.重復執行步驟2-2-3,直到執行隊列里只有一項流程項,這個流程項對應的 屬性表組就是滿足請求屬性集合的所有個體id的集合。
【主權項】
1. 一種基于屬性匹配的快速檢索與獲取數據特征方法,其特征在于包括如下步驟: 步驟1.搭建屬性匹配的模型; 步驟2.基于屬性匹配的模型進行快速檢索; 所述的步驟1中的搭建屬性匹配的模型,具體如下: 1-1.對m個屬性進行歸類,具體的:將m個屬性中屬于互斥的兩種或多種屬性歸位一類; 如果其中一個或多個屬性不存在互斥的兩種或多種屬性,則其單個屬性歸位一類,例如將m 個屬性總共分成了 (^,(^,(^,(^…(^這么幾類沒們稱這些類為屬性類^個屬性形成的集 合稱為屬性總集; 1-2.對m個屬性進行屬性編號,編號原則:同一個類中的屬性編號相鄰,例如(Mo WdCo, (M2,M3,M4)Cl,(M5)c2,(M6,M7)C2---(Mm-l)Cc-l; 單個屬性均視為一個只包含自身的屬性總集的子集,所有只包含單個屬性的屬性集合 生成各自的long類型序列碼并添加到控制器中; 將所有屬性個數超過1的屬性類生成long類型序列碼并添加到控制器中;由屬性個數 超過1的屬性類生成的序列碼稱為互斥序列碼; 所述的long類型的序列碼的生成規則如下: 輸入一個屬性總集的子集,系統會為其聲明一個值為〇的long類型整數k;如果輸入的 屬性集合中有某一個編號為n的屬性Mn,就將k進行如下運算土 = 1^|1〈〈11,表明擁有1這個屬 性;反復執行上面的移位置位的步驟,直到輸入屬性集合中所有屬性都被標記到k中,輸出 序列碼; 1-3.對每個屬性建立一組關系數據庫表,關系數據庫表的數量為n;每組中每張關系數 據庫表均用來存儲擁有對應屬性的個體的id,而擁有對應屬性的個體的id加入該組的哪一 張關系數據庫表根據id特性而定;每個屬性關系數據庫表組中id的映射規則相同,例如映 射規則為id與n的余數;將所有由單個屬性創建而成的關系數據庫表組的集合叫做一階表 群,一階表群由m*n個表組成; 1-4.在內存數據庫中創建一階表群,然后將現有的所有個體id,根據其個體擁有的屬 性逐條添加到各自屬性的關系數據庫表組和內存數據庫表組中;將每個個體擁有的屬性集 合生成各自的long類型的序列碼并添加到控制程序中;由個體屬性集合生成的long類型序 列碼稱為個體序列碼; 1-5.將每個類與其他類分別進行笛卡爾積,形成的每個有序對中元素屬性編號小的為 左投影,編號大的為右投影,從而生成二階關系屬性;例如:步驟1-2中C3和C0進行笛卡爾 積,其結果為(M0,M6),(M0,M7),(Ml,M6),(Ml,M7),已然排除重復出現的有序對;二階關系 屬性均視為一個包含兩個屬性的屬性總集的子集,所有二階關系屬性生成各自的long類型 序列碼并添加到控制器中; 1-6.為每一個二階關系屬性建立屬性表組,屬性表組的數量為n;每個二階關系屬性表 組中的每張關系數據庫表均用來存儲擁有對應二階關系屬性的個體的id,而擁有對應二階 關系屬性的個體的id加入該組的哪一張關系數據庫表根據id特性而定;每個二階關系屬性 表組中id的映射規則相同,例如映射規則為id與n的余數;將由二階關系屬性建立的所有關 系數據庫表組的集合稱為二階表群;二階表群中表的數量范圍是0-n * C::; 1- 7.在內存數據庫中創建二階表群,然后通過內存數據庫中自帶的相交函數,運算每 個二階關系屬性的個體id;并將運算獲得的結果保存在內存數據庫和關系數據庫的二階表 群中; 所述的個體的增加:新增個體的屬性集合生成1 ong類型的序列碼;將新增個體的序列 碼與系統中所有關系序列碼進行比較,當某個關系序列碼新增個體序列碼相交大于〇,并且 小于新增個體序列碼時,將關系序列碼中該序列碼對應的屬性表組添加進新增個體id;然 后同步關系數據庫與內存數據庫; 所述的個體屬性更改:獲取更改個體的原屬性集與新屬性集,生成long類型的原個體 序列碼和新個體序列碼;將原個體序列碼和新序列碼進行比較得到屬性變動,獲取刪除序 列碼和新增序列碼;刪除序列碼由更改后刪除屬性組成的刪除屬性集生成,新增序列碼由 更改后新增屬性組成的新增屬性集生成;使用刪除序列碼和新增序列碼與系統中所有關系 序列碼進行比較,當某個關系序列碼滿足刪除序列碼相交大于〇,并且小于刪除個體序列碼 時,將關系序列碼中該序列碼對應的屬性表組中刪除更改個體id;當某個關系序列碼滿足 新增序列碼相交大于〇,并且小于新增個體序列碼時,將關系序列碼中該序列碼對應的屬性 表組中添加更改個體id;然后同步關系數據庫與內存數據庫; 所述的關系序列碼由單個屬性或二階關系屬性或高階關系屬性生成的long類型序列 碼。2.根據權利要求1所述的一種基于屬性匹配的快速檢索與獲取數據特征方法,其特征 在于步驟2具體包括如下過程: 2- 1.如果請求屬性集合中屬性個數小于3個,則系統在內存數據庫中直接獲取請求屬 性集合對應的屬性表組中的數據,如果內存數據庫中找不到請求屬性集合對應的屬性表 組,說明存在互斥關系,會返回空; 2-2.如果請求屬性集合中屬性個數大于3個,則需要檢查請求屬性集合中是否存在互 斥關系的屬性,如果存在就直接返回空,否則在內存數據庫中檢索是否存在請求屬性集合 對應的屬性表組,如果存在就返回結果,否則執行如下步驟: 2-2-1.將請求屬性集合劃分成多個互斥的子集,多種劃分方式形成多種運算方案;所 述的超過2個屬性形成的屬性集合稱為高階關系屬性; 請求屬性集合生成一個long類型的序列碼,將這個序列碼輸入系統的運算方案生成模 塊中,運算方案生成模塊的方案包括最少運算方案、平衡運算方案、較多運算方案; 最少運算方案能夠最快的獲得匹配結果,但是這需要觀察者曾經進行過多次不同屬性 集合的匹配,運算過程中生成的高階關系屬性較少,不利于觀察者未來的匹配請求; 較多運算方案運算在三種方案獲得運算結果最慢,但是運算過程中生成的高階關系屬 性較多;有利于觀察者未來的匹配請求; 平衡運算方案為前兩者適中的方案;系統會根據觀察者需求,系統會根據內部情況自 動選擇最少運算方案、平衡運算方案、較多運算方案中的其中一種運算方案; 2-2-2.對劃分好的多個互斥子集進行排序,具體的: 首先,計算每個互斥子集內屬性的個數,然后將多個互斥子集根據其各自屬性個數,由 少到多的順序進彳丁排序; 2-2-3.對排序的多個互斥子集進行運算,具體的: 根據排序,執行器會從依次從隊列里彈出兩個互斥子集,先在內存數據庫中檢索是否 存在由該兩個互斥子集組成的高階關系屬性對應的關系序列碼,如果存在,則將新生成高 階關系屬性轉化成流程項放置在執行隊列末尾;如果不存在,則將兩個互斥子集對應的屬 性表組進行相交運算獲得高階關系屬性結果集,并為這個高階關系屬性建立一組關系數據 庫表;則將新生成高階關系屬性轉化成流程項放置在執行隊列末尾; 所述的新建的關系數據庫表的數量為n;每組中每張關系數據庫表均用來存儲擁有這 個高階關系屬性的個體的id,而擁有這個高階關系屬性的個體的id加入該組的哪一張關系 數據庫表根據id特性而定;每個高階關系屬性的關系數據庫表組中id的映射規則相同,在 內存數據庫中建立相同的高階關系屬性對應的屬性表組,將高階關系屬性結果集分別存入 屬性表組中和內存數據庫中;為新生成的高階關系屬性生成一個long類型的序列碼,并將 這個序列碼添加到控制器中; 2-2-4.重復執行步驟2-2-3,直到執行隊列里只有一項流程項,這個流程項對應的屬性 表組就是滿足請求屬性集合的所有個體id的集合。
【文檔編號】G06F17/30GK106055690SQ201610405545
【公開日】2016年10月26日
【申請日】2016年6月8日
【發明人】張偉鵬, 曾虹, 王哲, 潘李凡
【申請人】杭州電子科技大學