一種關聯關係的查詢方法及裝置

一種關聯關係的查詢方法及裝置

《一種關聯關係的查詢方法及裝置》是北京億陽信通軟體研究院有限公司和億陽信通股份有限公司於2008年12月31日申請的發明專利,該專利的申請號為2008102466481,公布號為CN101770479A,公布日為2010年7月7日,發明人是馮剛、張文、陳曉峰,該專利涉及數據查詢技術領域。

《一種關聯關係的查詢方法及裝置》包括以下步驟:接收攜帶對象標識和方案標識的關聯關係查詢請求;從預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表;在所述獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。

2014年11月6日,《一種關聯關係的查詢方法及裝置》獲得第十六屆中國專利優秀獎。

(概述圖為《一種關聯關係的查詢方法及裝置》摘要附圖)

基本介紹

  • 中文名:一種關聯關係的查詢方法及裝置
  • 公布號:CN101770479A
  • 公布日:2010年7月7日
  • 申請號:2008102466481
  • 申請日:2008年12月31日
  • 申請人:北京億陽信通軟體研究院有限公司、億陽信通股份有限公司
  • 地址:北京市海淀區杏石口路99號B座
  • 發明人:馮剛、張文、陳曉峰
  • 分類號:G06F17/30(2006.01)I
  • 類別:發明專利
專利背景,發明內容,專利目的,技術方案,有益效果,附圖說明,權利要求,實施方式,榮譽表彰,

專利背景

網路管理系統是通信網的重要支撐系統,是保證通信網高效、可靠、經濟和健康、安全運行的重要支撐手段。
通信網是由各種物理資源和邏輯資源組成的有機體,為了有效地進行網路管理,網路資源的管理是一項重要的功能,資源管理系統作為網路管理系統一個重要的子系統已成為提高通信網運營效率、快速開通業務、實現全網集約化管理的重要管理手段。
資源管理系統要管理的資源多種多樣,千差萬別。從狹義上講,資源可以分為以下三類:設備,設備間的關聯關係(亦可簡稱為關係)以及基於設備和關係實現的業務。2008年12月前已有技術中用對象模型給所述的資源進行建模,描述對象和相關對象之間的關係。參見專利CN1570910中的相應定義,所述類是對象的抽象,所述方案用於描述類之間存在的關聯關係。按照面向對象的思想,將要管理的數據進行抽象,形成類,用屬性和方法來描述對象的狀態和可執行的操作,並用方案來定義不同的對象管理域內對象之間可以存在的關係。一個類通常用一張資料庫表描述,因此,方案亦可被理解為用於描述資料庫表之間可能存在的關聯關係。一個方案可用於描述一種關聯關係。
2008年12月前已有技術為資源管理系統提供了一種實現各種資源之間關聯關係查詢的方法,核心思想是:根據攜帶的對象標識和方案標識,請求查詢方案中與該對象相關的關聯關係,即在方案涉及的多張資料庫表中聯合查詢所述對象的關聯關係。
為更清楚地說明2008年12月前已有技術提供的關聯關係查詢技術方案,以下舉例詳細說明。
比如,對於顯示器、信號傳輸線和主機這三種不同的類,表A用於記錄顯示器信息,包括顯示器標識a1、顯示器的VGA輸入連線埠標識a2,表B用於記錄信號傳輸線信息,包括信號傳輸線標識b1、信號傳輸線的第一VGA接頭標識b2、信號傳輸線的第二VGA接頭標識b3,表C用於記錄主機信息,包括主機標識c1、主機的VGA輸出連線埠標識c2。方案1描述的顯示器(表A),信號傳輸線(表B)和主機(表C)之間的關聯關係為:A.a2=B.b2andB.b3=C.c2,即顯示器(表A)的VGA輸入連線埠(欄位a2)與信號傳輸線(表B)的第一VGA接頭(欄位b2)關聯,信號傳輸線(表B)的第二VGA接頭(欄位b3)與主機(表C)的VGA輸出連線埠(欄位c2)關聯。當用戶想知道顯示器1與哪台主機相連時,則傳送攜帶顯示器1和方案1(A.a2=B.b2andB.b3=C.c2)的關聯關係查詢請求至關聯關係查詢模組,關聯關係查詢模組則根據方案1的A.a2=B.b2andB.b3=C.c2,在表A中查找顯示器1對應的表項,並從所述表項的欄位a2中獲取顯示器1的VGA輸入連線埠標識,然後,根據所述VGA輸入連線埠標識,在表B的b2欄位中查找連線顯示器1的信號傳輸線表項,再從所述信號傳輸線表項的b3欄位中獲取所連主機的VGA輸出接口標識,最後,根據所述連線主機的VGA輸出接口標識,在表C中查找到所連線主機的標識,即與顯示器1相連的主機標識。
在對2008年12月前已有技術的研究和實踐過程中,發明人發現採用關聯關係查詢技術方案,存在如下問題:由於關聯關係查詢方法是在方案涉及的多張資料庫表中聯合查詢對象相關的關聯關係,一旦方案涉及的資料庫表數量較多或資料庫表中的數據記錄量較大,採用關聯關係查詢方法就會在查詢關聯關係時,由於要聯合查詢大量的表或者要在資料庫表中聯合查詢大量的數據記錄,會產生查詢速度緩慢、查詢效率低的問題。

發明內容

專利目的

《一種關聯關係的查詢方法及裝置》實施例要解決的技術問題是解決聯合多表查詢帶來的查詢低效問題,該發明的目的是提供一種關聯關係的快速查詢方法及裝置,能夠實現準確、快速、高效的關聯關係查詢。

技術方案

一種關聯關係的查詢方法,包括步驟:接收攜帶對象標識和方案標識的關聯關係查詢請求;從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表,如果查到則獲取所述方案標識關聯的關聯關係表;在所述獲取到的關聯關係表中查詢所述對象標識對應的關聯關係;所述預置關聯關係表用於保存定義的模型對象之間依存的關聯關係,並保持與定義的模型對象標識之間的一致性。
進一步地,所述預置關聯關係表的預置方法,進一步包括:根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,按需要設定關聯關係預置標記信息,用關聯關係表模板給所述有關聯關係預置標記的方案建立對應的預置關聯關係表;所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成;對於有關聯關係預置標記的方案,按照關聯關係表模板,將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的預置關聯關係表中。
進一步地,所述將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的關聯關係表的方法,進一步還包括:獲取所述定義方案的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象屬性的修改;根據獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,通過讀取定義模型的數據表對變動的對象計算其最新的關聯關係,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,並給所述方案設定最新計算完成標記。
進一步地,所述通過讀取定義模型的數據表對變動的對象進行最新關聯關係的計算,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,進一步包括,組裝所述變動對象的關聯關係計算任務,並將攜帶對象變動信息的關聯關係計算任務放入任務佇列;從任務佇列中順序取出關聯關係計算任務;根據組裝在關聯關係計算任務中的對象變動類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒進行關聯關係計算,在計算完成後按照關聯關係表模板將計算結果更新到所述方案的關聯關係表。
優選的,所述任務佇列包括:增加佇列、刪除佇列和修改佇列,則所述將攜帶對象變動信息的關聯關係計算任務放入任務佇列具體包括:若組裝在關聯關係計算任務中的對象變動類型是增加對象,則將所述攜帶增加對象標識及所屬的方案標識的關聯關係計算任務放入增加佇列;若組裝在關聯關係計算任務中的對象變動類型是刪除對象,則將所述攜帶刪除對象標識及所屬的方案標識的關聯關係計算任務放入刪除佇列;若組裝在關聯關係計算任務中的對象變動類型是修改對象屬性,則將所述攜帶修改對象標識、對象屬性標識及所屬的方案標識的關聯關係計算任務拆分為兩個任務,一個任務將攜帶刪除對象標識及所述的方案標識的關聯關係計算任務放入刪除佇列,另一個任務將攜帶增加對象標識及所述的方案標識的關聯關係計算任務放入修改佇列。
進一步地,所述從任務佇列中順序取出關聯關係計算任務,並委託給相應關聯關係計算執行緒具體包括:從增加佇列中順序取出關聯關係計算任務,並將所述關聯關係計算任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到增加佇列中沒有關聯關係計算任務;從刪除佇列中順序取出關聯關係計算任務,並將所述關聯關係計算任務委託給用於計算刪除關聯關係的關聯關係計算執行緒,直到刪除佇列中沒有關聯關係計算任務;從修改佇列中順序取出關聯關係計算任務,將所述關聯關係計算任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到修改佇列中沒有關聯關係計算任務。
優選的,所述用於計算增加關聯關係的關聯關係計算執行緒進行關聯關係計算具體包括:關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識,讀取方案涉及的定義模型資料庫表,並根據組裝在關聯關係計算任務中的對象標識,在所述方案涉及的資料庫表中查詢對象的關聯關係,並將查詢到的關聯關係添加到所述方案標識關聯的關聯關係表中。
同時,所述用於計算刪除關聯關係的關聯關係計算執行緒進行關聯關係計算具體包括:關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識,在預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表,並從所述獲取到的關聯關係表中刪除組裝在所述關聯關係計算任務中的對象標識對應的關聯關係。
所述的關聯關係查詢方法,進一步包括,檢查所述方案是否完成了最新關聯關係計算,如果已完成最新關聯關係計算,則從關聯關係數據表中查詢所述方案中與所述對象標識相關聯的關聯關係。
所述的關聯關係查詢方法,還可以包括,從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表的方法,進一步包括:根據方案標識,檢查所述方案是否有關聯關係預置標記有效,如果有效,表明能夠查到與所述方案標識關聯的關聯關係表,否則,不能查到與所述方案標識關聯的關聯關係表。
從所述方案標識關聯的關聯關係表中查詢所述對象標識對應的關聯關係的方法,進一步包括:根據方案標識,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否完成了最新關聯關係計算,如果已完成最新關聯關係計算,則從關聯關係數據表中查詢所述方案中與所述對象標識相關聯的關聯關係。
一種關聯關係的查詢裝置,包括模型定義單元,模型數據存儲單元,對象操作單元和關聯關係查詢單元,其特徵在於,還進一步包括,關聯關係表預置單元,給定義模型的定義方案建立預置關聯關係表;關聯關係數據存儲單元,用於保存關聯關係數據表。
所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
還可以進一步包括,關聯關係預置標記管理單元,根據需要給定義模型的定義方案設定關聯關係預置標記信息,據此為設定關聯關係標記信息的方案添加或刪除關聯關係預置標記;所述的關聯關係表預置單元,對添加關聯關係預置標記的方案,用關聯關係表模板建立所述方案對應的預置關聯關係表,所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成;所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
還可以進一步包括,對象變動信息處理單元,獲取模型數據存儲單元數據表中的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改;關聯關係計算單元,根據對象變動信息處理單元獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,讀取當前模型數據存儲單元中的數據表,對變動的對象計算其最新的關聯關係,在計算完成後根據計算結果更新關聯關係記錄存儲單元中變動對象所屬方案的關聯關係表,並給所述方案設定最新計算完成標記。
所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否設定有最新計算完成標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
所述的關聯關係查詢單元,還可以是這樣的,檢查所述方案是否設定有最新計算完成標記有效,如果有效,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
所述的關聯關係計算單元進一步包括,關係計算任務組裝單元,用於在收到對象變動信息處理單元的對象變動通知時,組裝所述變動對象的關聯關係計算任務,調用關係計算任務添加單元;關係計算任務添加單元,用於將攜帶對象變動信息的關聯關係計算任務放入任務佇列;關係計算任務委託單元,用於從任務佇列中順序取出關聯關係計算任務,根據組裝在關聯關係計算任務中的對象變動類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒。
進一步地,所述任務佇列包括:增加佇列,刪除佇列和修改佇列,則所述關係計算任務添加單元具體包括:增加關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是增加對象時,則將攜帶增加對象標識及所屬的方案標識的關聯關係計算任務放入增加佇列;刪除關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是刪除對象時,將攜帶刪除對象標識及所屬的方案標識的關聯關係計算任務放入刪除佇列;修改關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是修改對象屬性時,將所述關聯關係計算任務拆分為兩個任務,一個任務將攜帶刪除對象標識及所述的方案標識的關聯關係計算任務放入刪除佇列,另一個任務將攜帶增加對象標識及所述的方案標識的關聯關係計算任務放入修改佇列。
進一步地,所述關係計算任務委託單元具體包括:增加關係計算任務委託單元,刪除關係計算任務單元,修改關係計算任務委託單元;所述增加關係計算任務委託單元,用於從所述增加佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到所述增加佇列中沒有關聯關係計算任務,則觸發所述刪除關係計算任務委託單元;所述刪除關係計算任務委託單元,用於從所述刪除佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算刪除關聯關係的關聯關係計算執行緒,直到刪除佇列中沒有關聯關係計算任務,則觸發所述修改關係計算任務委託單元;所述修改關係計算單元,用於從所述修改佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到修改佇列中沒有關聯關係計算任務,再觸發所述增加關係計算任務委託單元。

有益效果

《一種關聯關係的查詢方法及裝置》提出的關聯關係查詢技術方案,將對象模型中方案所涉及的多張資料庫表中存在的對象關聯關係預先同步映射到關聯關係預置表中,從而在接收到關聯關係查詢請求時,可以直接查詢關聯關係預置表,從而準確而快速地得到關聯關係查詢結果,克服了2008年12月前已有技術在收到關聯關係查詢請求時,即時從多表或多記錄聯合查詢關聯關係而產生的查詢速度緩慢,效率低的問題,實現了準確、快速、高效的關聯關係查詢技術方案。同時,該發明還設計了根據需要建立關聯關係預置表的技術方案,由此進一步提高了查詢效率,減少關聯關係預置表的占用空間。

附圖說明

圖1所示為該發明第一實施例提供的關聯關係查詢方法流程圖;
圖2所示為該發明第二實施例提供的關聯關係查詢方法流程圖;
圖3所示為該發明第四實施例提供的生成及更新關聯關係表的方法流程圖;
圖4所示為該發明第六實施例提供的生成及更新關聯關係表的方法流程圖;
圖5所示為該發明第八實施例提供的關聯關係查詢裝置組成示意圖。
圖6所示為該發明第九實施例提供的關聯關係查詢裝置組成示意圖。
圖7所示為該發明第十實施例提供的關聯關係查詢裝置組成示意圖。
圖8所示為該發明第十一實施例提供的關聯關係查詢單元的詳細結構示意圖示意圖。

權利要求

1.一種關聯關係的查詢方法,包括步驟:接收攜帶對象標識和方案標識的關聯關係查詢請求;從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表,如果查到則獲取所述方案標識關聯的關聯關係表;在所述獲取到的關聯關係表中查詢所述對象標識對應的關聯關係;所述預置關聯關係表用於保存定義的模型對象之間依存的關聯關係,並保持與定義的模型對象標識之間的一致性。
2.如權利要求1所述的關聯關係查詢方法,其特徵在於,所述預置關聯關係表的預置方法,進一步包括:根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,按需要設定關聯關係預置標記信息,用關聯關係表模板給所述有關聯關係預置標記的方案建立對應的預置關聯關係表;所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成;對於有關聯關係預置標記的方案,按照關聯關係表模板,將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的預置關聯關係表中。
3.如權利要求2所述的關聯關係查詢方法,其特徵在於,所述將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的關聯關係表的方法,進一步還包括:獲取所述定義方案的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象屬性的修改;根據獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,通過讀取定義模型的數據表對變動的對象計算其最新的關聯關係,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,並給所述方案設定最新計算完成標記。
4.如權利要求3所述的關聯關係查詢方法,其特徵在於,所述通過讀取定義模型的數據表對變動的對象進行最新關聯關係的計算,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,進一步包括,組裝所述變動對象的關聯關係計算任務,並將攜帶對象變動信息的關聯關係計算任務放入任務佇列;從任務佇列中順序取出關聯關係計算任務;根據組裝在關聯關係計算任務中的對象變動類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒進行關聯關係計算,在計算完成後按照關聯關係表模板將計算結果更新到所述方案的關聯關係表。
5.如權利要求4所述的方法,其特徵在於,所述任務佇列包括:增加佇列、刪除佇列和修改佇列,則所述將攜帶對象變動信息的關聯關係計算任務放入任務佇列具體包括:若組裝在關聯關係計算任務中的對象變動類型是增加對象,則將攜帶增加對象標識及所屬的方案標識的關聯關係計算任務放入增加佇列;若組裝在關聯關係計算任務中的對象變動類型是刪除對象,則將攜帶刪除對象標識及所屬的方案標識的關聯關係計算任務放入刪除佇列;若組裝在關聯關係計算任務中的對象變動類型是修改對象屬性,則將所述攜帶修改對象標識、對象屬性標識及所屬的方案標識的關聯關係計算任務拆分為兩個任務,一個任務將攜帶刪除對象標識及所述的方案標識的關聯關係計算任務放入刪除佇列,另一個任務將攜帶增加對象標識及所述的方案標識的關聯關係計算任務放入修改佇列。
6.如權利要求5所述的方法,其特徵在於,所述從任務佇列中順序取出關聯關係計算任務,並委託給相應關聯關係計算執行緒具體包括:從增加佇列中順序取出關聯關係計算任務,並將所述關聯關係計算任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到增加佇列中沒有關聯關係計算任務;從刪除佇列中順序取出關聯關係計算任務,並將所述關聯關係計算任務委託給用於計算刪除關聯關係的關聯關係計算執行緒,直到刪除佇列中沒有關聯關係計算任務;從修改佇列中順序取出關聯關係計算任務,將所述關聯關係計算任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到修改佇列中沒有關聯關係計算任務。
7.如權利要求6所述的方法,其特徵在於,所述用於計算增加關聯關係的關聯關係計算執行緒進行關聯關係計算具體包括:關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識,讀取方案涉及的定義模型資料庫表,並根據組裝在關聯關係計算任務中的對象標識,在所述方案涉及的資料庫表中查詢對象的關聯關係,並將查詢到的關聯關係添加到所述方案標識關聯的關聯關係表中。
8.如權利要求6所述的方法,其特徵在於,所述用於計算刪除關聯關係的關聯關係計算執行緒進行關聯關係計算具體包括:關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識,在預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表,並從所述獲取到的關聯關係表中刪除組裝在所述關聯關係計算任務中的對象標識對應的關聯關係。
9.如權利要求1至4中任意一項所述的關聯關係查詢方法,其特徵在於,檢查所述方案是否完成了最新關聯關係計算,如果已完成最新關聯關係計算,則從關聯關係數據表中查詢所述方案中與所述對象標識相關聯的關聯關係。
10.如權利要求2至4中任意一項所述的關聯關係查詢方法,其特徵在於,從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表的方法,進一步包括:根據方案標識,檢查所述方案是否有關聯關係預置標記有效,如果有效,表明能夠查到與所述方案標識關聯的關聯關係表,否則,不能查到與所述方案標識關聯的關聯關係表。
11.如權利要求3至4中任意一項所述的關聯關係查詢方法,其特徵在於,從所述方案標識關聯的關聯關係表中查詢所述對象標識對應的關聯關係的方法,進一步包括:根據方案標識,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否完成了最新關聯關係計算,如果已完成最新關聯關係計算,則從關聯關係數據表中查詢所述方案中與所述對象標識相關聯的關聯關係。
12.一種關聯關係的查詢裝置,包括模型定義單元,模型數據存儲單元,對象操作單元和關聯關係查詢單元,其特徵在於,還進一步包括,關聯關係表預置單元,給定義模型的定義方案建立預置關聯關係表;關聯關係數據存儲單元,用於保存關聯關係數據表;所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
13.如權利要求12所述的關聯關係查詢裝置,其特徵在於,還進一步包括,關聯關係預置標記管理單元,根據需要給定義模型的定義方案設定關聯關係預置標記信息,據此為設定關聯關係標記信息的方案添加或刪除關聯關係預置標記;所述的關聯關係表預置單元,對添加關聯關係預置標記的方案,用關聯關係表模板建立所述方案對應的預置關聯關係表,所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成;所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
14.如權利要求13所述的關聯關係查詢裝置,其特徵在於,還進一步包括,對象變動信息處理單元,獲取模型數據存儲單元數據表中的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改;關聯關係計算單元,根據對象變動信息處理單元獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,讀取當前模型數據存儲單元中的數據表,對變動的對象計算其最新的關聯關係,在計算完成後根據計算結果更新關聯關係記錄存儲單元中變動對象所屬方案的關聯關係表,並給所述方案設定最新計算完成標記。所述的關聯關係查詢單元,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否設定有最新計算完成標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
15.如權利要求14所述的關聯關係查詢裝置,其特徵在於,所述的關聯關係查詢單元,檢查所述方案是否設定有最新計算完成標記有效,如果有效,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
16.如權利要求14或15所述的聯關係查詢裝置,其特徵在於,所述的關聯關係計算單元進一步包括,關係計算任務組裝單元,用於在收到對象變動信息處理單元的對象變動通知時,組裝所述變動對象的關聯關係計算任務,調用關係計算任務添加單元;關係計算任務添加單元,用於將攜帶對象變動信息的關聯關係計算任務放入任務佇列;關係計算任務委託單元,用於從任務佇列中順序取出關聯關係計算任務,根據組裝在關聯關係計算任務中的對象變動類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒。
17.如權利要求16所述的裝置,其特徵在於,所述任務佇列包括:增加佇列,刪除佇列和修改佇列,則所述關係計算任務添加單元具體包括:增加關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是增加對象時,則將攜帶增加對象標識及所屬的方案標識的關聯關係計算任務放入增加佇列;刪除關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是刪除對象時,將攜帶刪除對象標識及所屬的方案標識的關聯關係計算任務放入刪除佇列;修改關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是修改對象屬性時,將所述關聯關係計算任務拆分為兩個任務,一個任務將攜帶刪除對象標識及所述的方案標識的關聯關係計算任務放入刪除佇列,另一個任務將攜帶增加對象標識及所述的方案標識的關聯關係計算任務放入修改佇列。
18.如權利要求17所述的裝置,其特徵在於,所述關係計算任務委託單元具體包括:增加關係計算任務委託單元,刪除關係計算任務單元,修改關係計算任務委託單元;所述增加關係計算任務委託單元,用於從所述增加佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到所述增加佇列中沒有關聯關係計算任務,則觸發所述刪除關係計算任務委託單元;所述刪除關係計算任務委託單元,用於從所述刪除佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算刪除關聯關係的關聯關係計算執行緒,直到刪除佇列中沒有關聯關係計算任務,則觸發所述修改關係計算任務委託單元;所述修改關係計算單元,用於從所述修改佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到修改佇列中沒有關聯關係計算任務,再觸發所述增加關係計算任務委託單元。

實施方式

參見圖1,為《一種關聯關係的查詢方法及裝置》第一實施例提供的關聯關係查詢方法流程圖,該方法包括如下步驟:
步驟101:接收攜帶對象標識和方案標識的關聯關係查詢請求;
步驟102:從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表,如果有則獲取所述方案標識關聯的關聯關係表。
所述預置關聯關係表用於保存定義的模型對象之間依存的關聯關係,並保持與定義的模型對象標識之間的一致性。
在該發明實施例中,可以採用手工和自動兩種方式建立及更新關聯關係表,並且,一個方案對應一個關聯關係表,關聯關係表中保存了最新的關聯關係數據記錄,即一個對象與其他相關對象的關聯關係的數據記錄。
為便於獲取所述方案標識的關聯關係表,在預先建立關聯關係表的過程中,可以採用如下方法建立關聯關係表標識:
第一、將方案標識直接設定為關聯關係表標識;
第二、將方案標識按照預置的規則映射為關聯關係表標識。
依此,可以為每一個方案建立一個關聯關係表。
如果在預置關聯關係表的過程中採用第一種方法,則從預置的多個關聯關係表中獲取所述方案標識的關聯關係表具體為:從預置的多個關聯關係表中獲取表標識與所述方案標識相同的關聯關係表;
如果在預置關聯關係表的過程中採用第二種方法,則從預置的多個關聯關係表中獲取所述方案標識的關聯關係表具體為:從預置的多個關聯關係表中獲取表標識符合預置映射規則的關聯關係表。
步驟103:在所述獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。
如果從關聯關係表中沒有查詢到所述對象標識對應的關聯關係,則套用2008年12月前已有技術方法,從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
也就是說,對於某個對象的關聯關係查詢請求來說,如果關聯關係在接收查詢請求之前已提前預置完成,那么從預置的關聯關係表中查詢關聯關係是有效的。
以上為該發明第一實施例提供的關聯關係查詢方法。該發明第一實施例提供的方法是從方案對應的一張關聯關係表中直接查詢對象的關聯關係,克服了2008年12月前已有技術中對與對象關聯的多表進行聯合查詢關聯關係所表現出的查詢速度緩慢,效率低的問題,實現了快速、高效的關聯關係查詢。
進一步地,如果每個對象的關聯關係都是從關聯關係表中查詢,則需要為每個方案都生成一張關聯關係表,而大量的關聯關係表會占用較多的存儲空間,而且也會降低查詢效率。在實際套用中,往往僅關注一部分對象的關聯關係,因此提供一部分關注對象的關聯關係表就可以滿足套用需要。
參見圖2,為該發明第二實施例提供的關聯關係查詢方法流程圖,該方法包括:步驟201:接收攜帶對象標識和方案標識的關聯關係查詢請求。
步驟202:判斷請求查詢的方案標識的關聯關係預置標誌是否被標記為有效,如果被標記有效,表明可以查詢到與所述方案標識關聯的關聯關係表。如果被標記無效,轉到步驟205。
在該發明實施例中,所述預置關聯關係表用於保存定義的模型對象之間依存的關聯關係,並保持與定義的模型對象標識之間的一致性。所述預置關聯關係表的方法如下:
根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,按套用需要為方案設定關聯關係預置標記信息,用關聯關係表模板給所述有關聯關係預置標記的方案建立對應的關聯關係表;所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成。
在該發明實施例中,首先根據套用需要,為需要預置關聯關係的方案,設定關聯關係預置標記信息,比如,將關聯關係預置標誌置為1,表示關聯關係預置標誌被標記為有效,表明需要預置關聯關係;將關聯關係預置標誌置為0,表示關聯關係預置標誌被標記為無效,表明不需要預置關聯關係。然後識別關聯關係預置標記有效的方案,自動建立方案的關聯關係表,並且,一個方案對應一個關聯關係表,每一個關聯關係表可以由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成。例如表1所示的關聯關係表模板結構描述的關聯關係為:綁定類與被綁定類關聯。表2所示的關聯關係表模板結構描述的關聯關係為:綁定類通過中間類與被綁定類關聯。
表1
綁定類
被綁定類


表2
綁定類
中間類
被綁定類



這樣,對於所有已經做了關聯關係預置標記的方案,會自動建立如表1所示的包含綁定類與被綁定類的關聯關係表,或者如表2所示的包含綁定類、中間類與被綁定類的關聯關係表。
那么,從預置的關聯關係表中查詢與所述方案標識關聯的關聯關係表,就可以通過查詢關聯關係預置標誌是否被標記為有效,如果被標記有效,表明可以查詢到與所述方案標識關聯的關聯關係表,如果被標記無效,表明不能查詢到與所述方案標識關聯的關聯關係表。
步驟203:從預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表。
根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案只描述類之間的關聯關係,並沒有描述對象之間的關聯關係。比如,方案只描述主機通過信號傳輸線與顯示器相連,但方案並沒有描述是哪一台主機通過哪一條信號傳輸線與哪一台顯示器相連。因此,根據方案描述的類之間的關聯關係和關聯關係表模板生成的關聯關係表是一張沒有對象關聯關係數據記錄的空表。
步驟202中說明了用於給有關聯關係預置標記的方案建立空白的關聯關係表。
進一步地,預置關聯關係表用於保存定義的模型對象之間依存的關聯關係,並保持與定義的模型對象標識之間的一致性。預置關聯關係表中的數據保持與定義的模型對象標識之間的一致性的方法是:
對於有關聯關係預置標記的方案,按照關聯關係表模板,將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的預置關聯關係表中。
例如,某定義模型的方案A中有3個類,相互之間有關聯關係,對象1、對象2和對象3分別是這3個類的對象,對象標識分別為a、b、c,如果給方案A設定了關聯關係預置標記,則按照關聯關係表模板定義的綁定類、中間類和被綁定類模式,將方案涉及的對象標識,從定義模型的數據表同步映射到所述方案的預置關聯關係表A’中,自動生成表3所示的數據記錄。
表3
綁定類
中間類
被綁定類
a(對象1的對象標識)
b(對象2的對象標識)
c(對象3的對象標識)
那么,可以查詢到方案A設定了關聯關係預置標記,並查詢到方案A對應的關聯關係表A’。
步驟204:從步驟203獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。轉步驟206。
例如,定義模型1的方案B,包括類1,類2、類3和類4,類1、類2、類3有關聯關係,類1、類4有關聯關係,類2、類3、類4有關聯關係,對象1是類1的一個對象,對象2是類2的一個對象,對象3是類3的一個對象,對象4是類4的一個對象,假設對象標識與所述對象名相同,如對象1的標識就是對象1。那么如果給方案B設定了關聯關係預置標記,則為方案B建立預置關聯關係表B’,生成如表4的表結構和數據記錄:
表4
綁定類
中間類
被綁定類
對象1
對象2
對象3
對象1

對象4
對象2
對象3
對象4
如果要從關聯關係表B’中查找對象1對應的關聯關係,從表4可知,可以查到對象1與對象2和對象3有關聯關係,而且,對象1與對象4也有關聯關係。
步驟205:查詢關聯關係預置標誌,如果被標記無效,表明不能查詢到與所述方案標識關聯的關聯關係表,則即時從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
步驟206:返回查詢結果。
以上該發明第二實施例提供了另一種關聯關係查詢方法,該方法套用標記來標識是否預置了關聯關係表,實現將部分方案生成關聯關係表的情況,實現了進一步提高查詢速度,減少占用的存儲空間。如果標記沒有預置關聯關係表,則即時從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係,從而使得查詢過程更為智慧型。
在實際套用中,對象的關聯關係反映為隨著對象的增刪改操作而動態變化的,由此,關聯關係表如果能夠動態更新,則將進一步提高關聯關係表的查詢效率。
參見該發明第三實施例,該方法包括:
步驟301:接收攜帶對象標識和方案標識的關聯關係查詢請求;
步驟302:判斷請求查詢的方案標識的關聯關係預置標誌是否被標記為有效,如果被標記有效,表明可以查詢到與所述方案標識關聯的關聯關係表。如果被標記無效,轉到步驟305。
預置關聯關係表的方法參見實施例二的步驟202所述。
根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,按套用需要為方案設定關聯關係預置標記信息,用關聯關係表模板給所述有關聯關係預置標記的方案建立對應的關聯關係表;所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成。
步驟303:從預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表。
預置關聯關係表中的數據記錄的方法可以進一步最佳化為:
根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,獲取所述定義方案的數據對象或數據對象屬性發生變動的信息,包括變動數據對象的標識及其所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改;
根據獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,通過讀取定義模型的數據表對變動的對象計算其最新的關聯關係,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,並給所述方案設定最新計算完成標記。
由於關聯關係預置標記設定是可以更新的,隨著定義模型的對象操作的動態性,不論是對象添加、刪除還是修改,那么對於做了新的關聯關係預置標記的方案,計算其有關對象的最新關聯關係變化,更新的計算結果就被自動地反映到關聯關係表中了。
步驟304:從步驟303獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。轉步驟306。
根據以上所述,從獲取到的關聯關係表中獲取到的所述方案標識關聯的關聯關係表數據,將會準確地反映出關聯關係表中的數據動態更新情況。
步驟305:查詢關聯關係預置標誌,如果被標記無效,表明不能查詢到與所述方案標識關聯的關聯關係表,則即時從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
步驟306:返回查詢結果。
進一步地,關於對變動的對象計算其最新的關聯關係的計算方法的最佳化實現,預置或更新關聯關係表中的數據記錄的方法可以進一步最佳化為:
根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,獲取所述定義方案的數據對象或數據對象屬性發生變動的信息,包括變動數據對象的標識及其所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改。
根據獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記,如果有,讀取所述變動對象的數據記錄,對變動的對象計算其最新的關聯關係。
當變動對象的類型是對象增加時,計算所述增加對象的關聯關係,計算完成後,按照關聯關係表模板將新增關聯關係添加到關聯關係記錄存儲單元中,並給所述方案設定最新計算完成標記。
當變動對象的類型是對象刪除時,計算所述刪除對象的關聯關係,計算完成後,按照關聯關係表模板刪除關聯關係記錄存儲單元中的相關內容,並給所述方案設定最新計算完成標記。
當變動對象的類型是對象修改時,計算所述修改對象的關聯關係,計算完成後,按照關聯關係表模板修改關聯關係記錄存儲單元中的相關內容,並給所述方案設定最新計算完成標記。
進一步地,在接收到關聯關係查詢請求時,可能會存在請求查詢的關聯關係正在進行計算,計算結果還沒有更新到關聯關係表的情況,此時,如果直接從關聯關係表中查詢關聯關係,則會產生查詢結果不準確的問題。
為進一步提高關聯關係查詢準確度,可以在前文已述實施例三、四中增加判斷請求查詢的關聯關係是否完成計算的步驟,具體的方法如下:
從所述方案標識關聯的關聯關係表中查詢所述對象標識對應的關聯關係的方法,進一步包括,
根據方案標識,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否完成了最新的關聯關係計算,如果已完成最新的關聯關係計算,則從預置的關聯關係數據表中查詢所述方案中與所述對象標識相關聯的關聯關係。
例如,對於該發明第二或第三實施例提供的方法,在步驟201或步驟301接收到攜帶對象標識和方案標識的關聯關係查詢請求後,在步驟202或步驟302可以先檢查所述方案是否有關聯關係預置標記有效,如果有效,則判斷請求查詢的所述方案的關聯關係計算是否已完成,如果完成了關聯關係計算,則可利用更新後的關聯關係數據表表內容查詢所述方案中與所述對象標識相關聯的關聯關係,如果關聯關係沒有完成最新計算,那么執行步驟205或步驟305將即時從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係,例如多表聯合查詢關聯關係的方法。
在實際套用中可以採用設定關聯關係計算完成標記判斷請求查詢方案的關聯關係是否完成最新計算,如下方法詳細說明了具體的實現方式:
使用關係計算計數器來標記關聯關係計算完成的情況,將一個方案的關係計算計數器的初始值設為零,每次對該方案中對象準備開始進行關聯關係計算時將計數器加一,每次對該方案中對象完成關聯關係計算時將計數器減一,當對該方案中對象的所有關聯關係計算完成時關係計算計數器歸零。判斷所述方案標識對應的關聯關係計算計數器是否為零,如果為零,則說明請求查詢所述方案的關聯關係完成最新計算,如果不是零,則說明請求查詢所述方案的關聯關係沒有完成最新計算。
為更清楚的說明該發明實施例提供的關聯關係查詢方法,以下舉例說明。
表5是記錄顯示器,主機和信號傳輸線之間關聯關係的關聯關係表,並且,表標識與對應的方案標識同為“129”。當用戶想查詢顯示器1是通過哪條信號傳輸線連線哪一台主機時,則傳送攜帶顯示器1標識和方案標識(129)的關聯關係查詢請求至系統側,系統側在收到上述關聯關係查詢請求後,先在預置的關聯關係表中查找表標識為“129”的關聯關係表如表5,然後,在表5中查找顯示器1標識對應的表項,至此,用戶可得知顯示器1通過信號傳輸線2與主機3相連。
表5
綁定類
中間類
被綁定類
顯示器1
信號傳輸線2
主機3
顯示器2
信號傳輸線5
主機6
前文已述該發明實施例提供的關聯關係表可以採用手工和自動兩種方式生成及更新,以下結合附圖對該發明第四實施例提供的自動生成及更新關聯關係表的方法進行詳細介紹。
參見圖3,為該發明第四實施例提供的生成及更新關聯關係表的方法,該方法包括如下步驟:
步驟401:接收攜帶對象標識和方案標識的關聯關係查詢請求;
步驟402:判斷請求查詢的方案標識的關聯關係預置標誌是否被標記為有效,如果被標記有效,表明可以查詢到與所述方案標識關聯的關聯關係表。如果被標記無效,轉步驟406。
步驟403:判斷請求查詢的方案標識的關聯關係計算是否完成,如果沒有完成,轉步驟406。
步驟404:從預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表。
步驟405:從步驟404獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。如果查到所述對象標識對應的關聯關係,轉407。
步驟406:即時從定義模型的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
步驟407:返回查詢結果。
需要說明的是,該發明主要提出的關聯關係查詢方法基於預置的關聯關係表機制,而且能夠實現預置關聯關係表的動態更新,為了更清楚地說明該發明的實現機理,下面用該發明第五實施例進一步說明預置關聯關係表及其動態更新的方法。所述的預置關聯關係表及其動態更新的方法可以獨立於關聯關係查詢方法。
步驟501:根據定義的數據模型及其為模型對象之間依存的關聯關係所定義的方案,按套用需要設定關聯關係預置標記信息。
步驟502:用關聯關係表模板給所述有關聯關係預置標記的方案建立對應的關聯關係表。所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成。
步驟503:取一個有關聯關係預置標記的方案,獲取所述定義方案的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改;
步驟504:當變動對象的類型是對象增加時,通過讀取定義模型的數據表計算所述增加對象的關聯關係,計算完成後,按照關聯關係表模板將新增關聯關係添加到關聯關係記錄存儲單元中,並給所述方案設定最新計算完成標記,轉步驟503;
當變動對象的類型是對象刪除時,通過讀取定義模型的數據表計算所述刪除對象的關聯關係,計算完成後,按照關聯關係表模板刪除關聯關係記錄存儲單元中的相關內容,並給所述方案設定最新計算完成標記,轉步驟603;
當變動對象的類型是對象修改時,通過讀取定義模型的數據表計算所述修改對象及修改對象屬性的關聯關係,計算完成後,按照關聯關係表模板修改關聯關係記錄存儲單元中的相關內容,並給所述方案設定最新計算完成標記,轉步驟503;
步驟503至步驟504用於完成變動對象的關聯關係動態更新,還可以實現為:根據所述定義方案的對象或對象屬性發生變動的信息,判斷變動對象或變動對象的屬性是否屬於關聯關係預置標記有效的方案所涉及的類或屬性。如果是,根據所述變動對象標識或/和變動對象屬性的標識,通過讀取定義模型的數據表對變動的對象計算其最新的關聯關係,在計算完成後按照關聯關係表模板將計算結果映射到所述方案的關聯關係表,並給所述方案設定最新計算完成標記;對於增加和刪除對象,根據所述變動對象標識計算其最新的關聯關係,對於修改對象,則根據所述變動對象標識及變動對象屬性的標識,計算其最新的關聯關係。
以上結合附圖對該發明實施例提供的關聯關係查詢方法進行了詳細介紹。以下結合附圖4對該發明第六實施例提供的自動生成及更新關聯關係表的方法再進行詳細介紹。
步驟601:在方案確定後,判斷該方案是否被標記關聯關係預置有效,如果是,則進入步驟602,如果否,則判斷下一個方案;在實際套用中,如果所有方案都需要生成關聯關係表,則步驟601為非必要步驟。
如果該方案被標記關聯關係預置有效,則根據方案描述的類之間的關聯關係及預置的關聯關係表模板,生成該方案的預置關聯關係表。
用戶建立的方案只描述類之間的關聯關係,並沒有描述對象之間的關聯關係。比如,方案只描述主機通過信號傳輸線與顯示器相連,但方案並沒有描述是哪一台主機通過哪一條信號傳輸線與哪一台顯示器相連。因此,根據方案描述的類之間的關聯關係和關聯關係表模板生成的關聯關係表是一張沒有對象關聯關係記錄的空表。若進行了對象操作,比如,增加了對象,刪除了對象,修改了對象屬性,則需要對空白的關聯關係表,或者,對已有記錄的關聯關係表進行計算,並將計算結果更新到關聯關係表中。
步驟602:判斷被操作的對象是否屬於關聯關係預置標記有效的方案所涉及的類,如果是,則進入步驟603,如果否,則判斷下一個對象;
值得注意的是,如果所有對象的關聯關係都屬於關聯關係預置標記有效的方案,則步驟602為非必要步驟;
步驟603:判斷對象操作類型,如果對象操作類型是修改對象,則進入步驟604,如果對象操作類型是增加對象或者刪除對象,則進入步驟605;
步驟604:判斷被修改的對象屬性是否屬於涉及關聯關係的屬性,如果是,則進入步驟605,如果否,則判斷下一個被修改屬性的對象;
假設,方案描述的類之間的關聯關係是:A.a=B.b1andB.b2=C.c,a,b1,b2和c欄位記錄的屬性是涉及關聯關係的屬性。因此,可以採用如下方式判斷被修改的對象屬性是否屬於涉及關聯關係的屬性:
判斷被修改的對象屬性是否為方案中描述的屬性,如果是,則說明被修改的對象屬性是涉及關聯關係的屬性,如果否,則說明被修改的對象屬性不是涉及關聯關係的屬性。
進一步,在實際套用中,如果被修改的對象屬性通常都是涉及關聯關係的屬性,則可不執行步驟603和604而直接執行步驟605,並不影響該發明實施例的實現。
步驟605:組裝對象的關聯關係計算任務,將該關聯關係計算任務放入任務佇列,並將該對象所屬方案的關聯關係計數器加1;其中,組裝在關聯關係計算任務中的信息可以包括:對象標識,對象屬性的標識,對象所屬類標識,對象所屬方案標識以及對象操作類型。但是,組裝在關聯關係計算任務中的信息可以按照關聯關係計算需要進行選擇,而不必在每個關聯關係計算任務中組裝全部上述信息。比如,增加一個標識為123的對象,對象所屬方案標識為456,則組裝一個對象標識為123,方案標識為456以及對象操作類型為增加的關聯關係計算任務。再比如,修改一個對象標識為123,對象屬性標識為456,對象所屬方案標識為789,則組裝一個對象標識為123,對象屬性標識為456,方案標識標識為456以及對象操作類型為修改的關聯關係計算任務。
步驟607:從任務佇列中順序取出關聯關係計算任務;
步驟608:根據組裝在所述關聯關係計算任務中的對象操作類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒;
步驟609:關聯關係計算執行緒根據組裝在關聯關係計算任務中的信息,計算關聯關係並更新相應的關聯關係表,並將該對象所屬的方案的關聯關係計數器減1。
上述實施例中採用關聯關係計數器作為關聯關係計算完成的標記,當關聯關係計數器的值歸零時,表明關聯關係計算完成,否則表明關聯關係計算未完成。
在實際套用中,如果對象變動類型是增加對象,則將所述關聯關係計算任務委託給用於計算增加關聯關係的關聯關係計算執行緒,若關聯關係計算任務組裝了對象標識和方案標識,則所述關聯關係計算執行緒先根據組裝在關聯關係計算任務中的方案標識獲取方案涉及的原始資料庫表,然後,根據對象標識,在方案涉及的原始資料庫表中查詢對象的關聯關係,最後,將查詢到的關聯關係添加到方案標識關聯的關聯關係表中。
如果對象變動類型是刪除對象,則將所述關聯關係計算任務委託給用於刪除關聯關係的關聯關係計算執行緒,所述關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識,在預置的關聯關係表中獲取方案標識關聯的關聯關係表,然後,從所述關聯關係表中刪除組裝在關聯關係計算任務中的對象標識對應的關聯關係。
如果對象變動類型是修改對象屬性,則將所述關聯關係計算任務委託給用於計算被修改關聯關係的關聯關係計算執行緒,所述關聯關係計算執行緒先根據組裝在關聯關係計算任務中的方案標識,在預置的關聯關係表中查找表標識與方案標識相同或與方案標識關聯的關聯關係表,並從所述關聯關係表中刪除組裝在關聯關係計算任務中的對象標識對應的關聯關係,最後,所述關聯關係計算執行緒根據組裝在關聯關係計算任務中的方案標識獲取方案涉及的資料庫表,然後,根據對象標識,在方案涉及的資料庫表中查詢對象的關聯關係,並將查詢到的關聯關係添加到方案標識關聯的關聯關係表中。
以上為該發明第六實施例提供的生成及更新關聯關係表的方法。在實際套用中,將對象變動類型不同的關聯關係計算任務放入了同一個任務佇列,可能會產生關聯關係計算異常的問題,為避免該問題,提高關聯關係計算的準確度,該發明第七實施例提供了一種更新關聯關係表的方法,該方法與該發明第六實施例提供的更新關聯關係表方法的區別在於,第七實施例中將一個任務佇列分成了增加佇列,刪除佇列和修改佇列三個佇列,並且:在組裝對象的關聯關係計算任務後,或者,在從任務佇列中順序取出關聯關係計算任務後,先根據組裝在關聯關係計算任務中的對象變動類型,將關聯關係計算任務放入不同的佇列,具體為:如果對象變動類型是增加對象,則將所述關聯關係計算任務放入增加佇列;如果對象變動類型是刪除對象,則將所述關聯關係計算任務放入刪除佇列;如果對象變動類型是修改對象屬性,由於修改對象屬性後,需要先將該對象原有的關聯關係從關聯關係表中刪除,然後,再將重新計算出的關聯關係添加到關聯關係表中,因此,將該對象的關聯關係計算任務拆分為兩個任務,一個任務將攜帶刪除對象標識及所述的方案標識的關聯關係計算任務放入刪除佇列,另一個任務將攜帶增加對象標識及所述的方案標識的關聯關係計算任務放入修改佇列。
當增加佇列、刪除佇列或修改佇列中有關聯關係計算任務後,則順序從上述三個佇列中取出關聯關係計算任務,並根據組裝在關聯關係計算任務中的對象變動類型,將關聯關係計算任務委託給相應的關聯關係計算執行緒。值得注意的是,將關聯關係計算任務放入增加佇列、刪除佇列或修改佇列的過程可以和從增加佇列、刪除佇列、修改佇列中取出關聯關係計算任務進行關聯關係計算的過程同步進行。
在實際套用中,從增加佇列、刪除佇列或修改佇列取出關聯關係計算任務進行關聯關係計算的順序會影響關聯關係計算的準確度,該發明經過反覆實驗,提供了一種較優的從增加佇列,刪除佇列及修改佇列取出關聯關係計算任務並進行關聯關係計算的順序,具體如下:
先從增加佇列中順序取出關聯關係計算任務,進行關聯關係計算,直到增加佇列中沒有關聯關係計算任務,然後,從刪除佇列中順序取出關聯關係計算任務,進行關聯關係計算,直到刪除佇列中沒有關聯關係計算任務,再從修改佇列中順序取出關聯關係計算任務,進行關聯關係計算,直到修改佇列中沒有關聯關係計算任務,其中,從修改佇列中取出的關聯關係計算任務是委託給前文已述的用於計算增加關聯關係的關聯關係計算執行緒,然後,再返回增加佇列重複上述流程。
另外,在關聯關係計算過程中,可能會發生系統崩潰,或其他導致關聯關係計算中斷的情況,為保證所有關聯關係計算任務都能完成,在將關聯關係計算任務放入佇列的同時,還可以進一步將關聯關係計算任務記入資料庫,後續,如果關聯關係計算任務被完成,則在資料庫中標記該任務被完成,或者,將該關聯關係計算任務從資料庫中刪除,如果發生了導致關聯關係計算中斷的情況,則在系統重啟後,進一步將資料庫中記錄的未被完成的關聯關係計算任務放入佇列,從而保證了所有關聯關係計算任務都能被完成。
在實際套用中,存在著大量的保持有固定關聯關係的數據,能夠在一段時間內保持相對穩定的關聯關係,例如省市之間的關聯關係,那么,反覆從多表聯合查詢相同的關聯關係就浪費了不必要的查詢時間,因此,該發明基於2008年12月前已有技術的關聯關係查詢裝置,提出了一種改進的關聯關係查詢裝置。
參見圖5,2008年12月前已有技術的關聯關係查詢裝置,包括:模型定義單元801,用於定義數據模型,包括類和方案的定義;
模型數據存儲單元802,用於存儲定義模型的數據,包括類、對象和方案的數據;對象操作單元803,用於實現模型數據對象的增加、刪除和修改;關聯關係查詢單元8041,根據方案標識和對象標識,查詢模型數據存儲單元中所述方案和所述對象的數據以及與所述對象有關聯關係的數據,找到所述方案標識中與所述對象標識相關聯的關聯關係。
該發明實施例八在2008年12月前已有裝置基礎上還進一步包括,關聯關係表預置單元805,給定義模型的定義方案建立預置關聯關係表;關聯關係數據存儲單元806,用於保存關聯關係數據表。
所述改進的關聯關係查詢單元8042,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,從關聯關係數據存儲單元的預置關聯關係表中查詢所述方案標識關聯的關聯關係表,並在所述獲取到的關聯關係表中查詢與所述對象標識相關聯的關聯關係;還可以直接從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
所述裝置能夠實現從方案標識對應的一張關聯關係表中直接查詢對象的關聯關係,克服了2008年12月前已有技術中對與對象關聯的多表進行聯合查詢關聯關係所表現出的查詢速度緩慢,效率低的問題,實現了快速、高效的關聯關係查詢。
進一步地,如果每個對象的關聯關係都是從關聯關係表中查詢,則需要為每個方案都生成一張關聯關係表,而大量的關聯關係表會占用較多的存儲空間,而且也會降低查詢效率。在實際套用中,往往僅關注一部分對象的關聯關係,因此提供一部分關注對象的關聯關係表就可以滿足套用需要。
因此,該發明又提出進一步的最佳化裝置,參見該發明實施例九,結構示意圖見圖6,所述裝置還進一步包括,
關聯關係預置標記管理單元807,根據需要給定義模型的定義方案設定關聯關係預置標記信息,據此為設定關聯關係標記信息的方案添加或刪除關聯關係預置標記。
在實際套用中,可以給關注的方案添加關聯關係預置標記。
所述的關聯關係表預置單元805,對添加關聯關係預置標記的方案,用關聯關係表模板建立所述方案對應的預置關聯關係表,所述的關聯關係表模板是由綁定類和被綁定類構成,或者由綁定類、一至多箇中間類和被綁定類構成。
所述的關聯關係查詢單元8043,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係,否則,即時從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
為了提高關聯關係查詢結果的準確度,在對對象進行增刪改操作的同時,能夠實現預置關聯關係表與模型數據表的數據一致性更新,參見圖7,作為該發明第十實施例,上述關聯關係查詢裝置還可以進一步包括:對象變動信息處理單元808,獲取模型數據存儲單元數據表中的對象或對象屬性發生變動的信息,包括變動對象的標識、變動對象屬性的標識、變動對象所屬的方案標識以及對象變動類型,所述對象變動類型包括對象增加、對象刪除或對象修改;關聯關係計算單元809,根據對象變動信息處理單元獲得的對象變動信息,檢查變動對象所屬的方案是否有關聯關係預置標記有效,如果有效,根據所述變動對象標識,讀取當前模型數據存儲單元中的數據表,對變動的對象計算其最新的關聯關係,在計算完成後根據計算結果更新關聯關係記錄存儲單元中變動對象所屬方案的關聯關係表,並給所述方案設定最新計算完成標記。
所述的關聯關係查詢單元8044,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,繼續檢查所述方案是否設定有最新計算完成標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係,否則,即時從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
另外,所述的關聯關係查詢單元也可以是這樣的實施方案:檢查所述方案是否設定有最新計算完成標記有效,如果有效,根據接收攜帶對象標識和方案標識的關聯關係查詢請求,檢查所述方案是否有關聯關係預置標記有效,如果有效,則從關聯關係數據存儲單元的關聯關係表中查詢所述方案中與所述對象標識相關聯的關聯關係,否則,即時從模型數據存儲單元的數據表中查詢所述方案標識中與所述對象標識相關聯的關聯關係。
參見圖8,作為該發明的第十一實施例,所述關聯關係查詢裝置中的關聯關係查詢單元的詳細結構示意圖,包括,查詢請求接收單元,用於接收攜帶對象標識和方案標識的關聯關係查詢請求;關聯關係表獲取單元,用於從預置的關聯關係表中獲取與所述方案標識關聯的關聯關係表;關聯關係查詢單元,用於在所述獲取到的關聯關係表中查詢所述對象標識對應的關聯關係。
為了提高關聯關係查詢結果的準確度,上述關聯關係計算裝置還可以進一步包括:關聯關係計算結果判斷單元,用於判斷請求查詢的關聯關係是否完成計算,如果關聯關係完成計算,則觸發所述關聯關係表獲取單元。
為了節省存儲空間,上述關聯關係計算裝置還可以進一步包括:關聯關係預置判斷單元,用於判斷請求查詢的方案標識的關聯關係預置標記是否有效,如果有效,則觸發所述關聯關係表獲取單元,或者,觸發所述關聯關係計算結果判斷單元。
以上為該發明實施例提供的關聯關係查詢裝置。由於對象隨時可能進行增刪改操作,此時,需要對對象的關聯關係進行重新計算,從而將新的計算結果映射更新到關聯關係表,為了在關聯關係查詢裝置中實現關聯關係表的動態更新功能,上述關聯關係查詢裝置的關聯關係計算單元可以進一步分解為如下單元:關係計算任務組裝單元,用於在增加對象、刪除對象或者修改對象屬性後,組裝所述對象的關聯關係計算任務;關係計算任務添加單元,用於將所述關聯關係計算任務放入任務佇列;關係計算任務委託單元,用於從任務佇列中順序取出關聯關係計算任務,根據組裝在關聯關係計算任務中的對象變動類型,將所述關聯關係計算任務委託給相應的關聯關係計算執行緒。
進一步,由於將所有關聯關係計算任務放入同一個任務佇列,可能會導致產生關聯關係計算異常的情況,為避免上述情況,可以將所述任務佇列分為:增加佇列、刪除佇列和修改佇列,此時,所述關係計算任務添加單元具體包括:增加關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是增加對象時,將所述關聯關係計算任務放入增加佇列;刪除關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是刪除對象時,將所述關聯關係計算任務放入刪除佇列;修改關係計算任務添加單元,用於當組裝在關聯關係計算任務中的對象變動類型是修改對象屬性時,將所述關聯關係計算任務拆分為兩個任務,一個任務放入刪除佇列,另一個任務放入增加佇列。
並且,所述關係計算任務委託單元具體包括:增加關係計算任務委託單元,刪除關係計算任務單元,修改關係計算任務委託單元;所述增加關係計算任務委託單元,用於從所述增加佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到所述增加佇列中沒有關聯關係計算任務,則觸發所述刪除關係計算任務委託單元;所述刪除關係計算任務委託單元,用於從所述刪除佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算刪除關聯關係的關聯關係計算執行緒,直到刪除佇列中沒有關聯關係計算任務,則觸發所述修改關係計算任務委託單元;所述修改關係計算單元,用於從所述修改佇列中順序取出關聯關係計算任務,並將所述任務委託給用於計算增加關聯關係的關聯關係計算執行緒,直到修改佇列中沒有關聯關係計算任務,再觸發所述增加關係計算任務委託單元。

榮譽表彰

2014年11月6日,《一種關聯關係的查詢方法及裝置》獲得第十六屆中國專利優秀獎。

相關詞條

熱門詞條

聯絡我們