專利名稱:Pdm系統中數據的查詢方法及裝置的制作方法
技術領域:
本發明涉及一種產品數據管理(Product Data Manage,簡稱為PDM)系統中數據的 查詢方法及裝置。
背景技術:
PDM系統是典型的數據庫應用系統,主要處理數據庫中的數據信息。這些數據信息 隨著時間的推移將不斷增多,這是企業寶貴的數據資源。當需要借鑒參考歷史數據時,用戶 期望通過查詢,可以獲取到符合要求的數據,以避免資源浪費,做重復性工作。當系統軟件 不能快速搜索出用戶期望的數據時,用戶體驗不友好,覺得查詢速度非常慢,甚至出現“死 機”現象,這嚴重影響系統的使用推廣。特別地,在PDM系統與其他應用軟件,如CAXAEB(電 子圖版)的集成中,用戶只關心某些特定數據,如圖紙信息,用戶希望能列出圖紙的所有借 用信息情況以便參考,這就涉及到多字段復雜查詢和嵌套查詢,如何更快地展示用戶所需 數據,將影響產品的口碑和進一步推廣,因此,查詢效率至關重要。數據庫系統是數據管理系統的核心,基于數據庫的事務處理以及數據查詢與分析 處理是PDM系統的重要功能之一,而查詢操作在各種數據庫操作中所占據的比重最大,查 詢操作所基于的SELECT語句在SQL語句中又是代價最大的語句,因此查詢優化技術的重要 性。但是否存在更為完美的解決這種性能的方案即不管數據庫中有多少數據,有多少個字 段,查詢特定條件,如零件描述或者零件代號等所有字段中包含“GB”的數據,可以一次性 很快地查詢出來,讓用戶感覺很快(無需“友好”的進度提示),這是大家都希望達到的理 想目標。盡量增強用戶好的體驗,這在某種層面上基本能讓用戶接受。尤其在PDM與畫圖 軟件集成產品中,用戶關心的只是圖紙信息,如何很快將目標圖紙快速檢索出來的同時,列 出圖紙被引用路徑,以便知道圖紙變更可能影響的范圍,這對用戶非常有用,引用路徑的查 詢,也是通常搜索中最耗時的操作,如能在集成中有效提高此操作的性能,將為集成產品創 造更高的效益。目前PDM系統的查詢,一股都是基于SQL語句直接從數據庫實時獲取,效率提高則 主要依賴于查詢策略優化。對象數據查詢是每個應用信息系統必備的功能,其效率問題也比較常見,目前為 止也有很多的優化方案或方法。最常見的是改善查詢策略,進行查詢優化,但幾乎所有查詢 都是直接從數據庫讀取數據。在相關技術中提供了一種方法,該方法包括以下步驟1)首先查找數據庫中符合條件的圖紙對象信息。2)分析數據模型中可能與圖紙發生關聯關系的對象和數據庫表,通過聯合查詢的 方式查找與圖紙有直接關聯的對象,如零件、產品、文件夾等。3)遞歸查找與圖紙直接關聯的對象的父對象或者關聯對象信息,直到找到最終產 品或者文件夾為止。在查找過程中,盡量優化SQL查詢語句,或者在數據庫中,合理使用索引,也簡化
3或避免對大型表進行重復的排序,使用的SQL語句盡量避免進行全表掃描,消除對大型表 行數據的順序存取等SQL語句級的優化。對于上述的方法,在一些數據庫服務器上,索引可能失效或者因為頻繁操作而使 得讀取效率降低,并且一個使用索引的查詢可能不明不白地慢下來;并且在查詢中,涉及到 多表復合查詢和遞歸查詢,這增大了查詢語句的困難和查詢效率的降低。針對相關技術中PDM系統中數據的查詢效率比較低的問題,目前尚未提出有效的 解決方案。
發明內容
針對相關技術中PDM系統中數據的查詢效率比較低的問題而提出本發明,為此, 本發明的主要目的在于提供一種PDM系統中數據的查詢方法及裝置,以解決上述問題。為了實現上述目的,根據本發明的一個方面,提供了一種PDM系統中數據的查詢 方法。該PDM系統中數據的查詢方法包括獲取所述PDM系統中的更新數據;根據所述更新 數據更新索引數據庫;以及,通過全文搜索的方式查詢所述索引數據庫。進一步地,通過觸發器獲取所述PDM系統中的更新數據。進一步地,在獲取所述PDM系統中的更新數據之后,所述方法還包括將所述更新 數據寫入臨時列表中,根據所述更新數據更新索引數據庫包括利用所述臨時列表中的更 新數據更新所述索引數據庫。進一步地,在將所述更新數據寫入臨時列表中之后,所述方法還包括加載可執行 程序;根據所述更新數據更新索引數據庫包括所述可執行程序定時根據所述臨時列表中 的更新數據更新所述索引數據庫。進一步地,以任務計劃的方式加載所述可執行程序。進一步地,根據所述更新數據更新索引數據庫包括如果圖紙全路徑中中間對象 的信息由變更,則更新所述索引數據庫中的全路徑信息和所述全路徑信息對應的對象信 肩、ο進一步地,所述更新數據為圖紙對象的更新數據。為了實現上述目的,根據本發明的另一方面,提供了一種PDM系統中數據的查詢 裝置。該PDM系統中數據的查詢裝置包括獲取模塊,用于獲取所述PDM系統中的更新數據; 更新模塊,用于根據所述更新數據更新索引數據庫;查詢模塊,用于通過全文搜索的方式查 詢所述索引數據庫。進一步地,上述PDM系統中數據的查詢裝置還包括寫入模塊,用于在所述獲取模 塊獲取所述PDM系統中的更新數據之后,將所述更新數據寫入臨時列表中,其中,更新模塊 用于利用所述臨時列表中的更新數據更新所述索引數據庫。進一步地,上述PDM系統中數據的查詢裝置還包括加載模塊,用于在所述寫入模 塊將所述更新數據寫入臨時列表中之后,加載可執行程序,其中,所述更新模塊用于使所述 可執行程序定時根據所述臨時列表中的更新數據更新所述索引數據庫。通過本發明,采用獲取所述PDM系統中的更新數據;根據所述更新數據更新索引 數據庫;以及,通過全文搜索的方式查詢所述索引數據庫的方法,解決了相關技術中PDM系 統中數據的查詢效率比較低的問題,進而達到了提高PDM系統中數據的查詢效率效果。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發 明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中圖1是根據本發明實施例的PDM系統中數據的查詢方法的流程圖;圖2是根據本發明實施例的PDM系統中數據的查詢裝置的示意圖;以及圖3是根據本發明的PDM系統中數據的查詢裝置的優選實施例的示意圖。
具體實施例方式需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相 互組合。下面將參考附圖并結合實施例來詳細說明本發明。圖1是根據本發明實施例的PDM系統中數據的查詢方法的流程圖。如圖1所示,該方法包括如下的步驟步驟S102,獲取所述PDM系統中的更新數據。例如,可以通過觸發器獲取所述PDM系統中的更新數據。優選地,在獲取所述PDM系統中的更新數據之后,所述方法還包括將所述更新數 據寫入臨時列表中,根據所述更新數據更新索引數據庫包括利用所述臨時列表中的更新 數據更新所述索引數據庫。優選地,在將所述更新數據寫入臨時列表中之后,所述方法還包括加載可執行程 序;根據所述更新數據更新索引數據庫包括所述可執行程序定時根據所述臨時列表中的 更新數據更新所述索引數據庫。優選地,以任務計劃的方式加載所述可執行程序。步驟S104,根據所述更新數據更新索引數據庫。優選地,根據所述更新數據更新索引數據庫包括如果圖紙全路徑中中間對象的 信息由變更,則更新所述索引數據庫中的全路徑信息和所述全路徑信息對應的對象信息。步驟S106,通過全文搜索的方式查詢所述索引數據庫。優選地,所述更新數據為圖紙對象的更新數據。針對PDM系統和畫圖軟件集成中,主要針對圖紙對象進行信息查詢,并列出圖紙 引用全路徑,現有的解決方案都是采用直接從數據庫查詢來進行,中間涉及多表聯合查詢 和遞歸查詢,搜索耗時較長(用戶感覺搜索很慢,等好幾秒才列出搜索結果),本發明提供 一種不直接從數據庫查詢,且能以更快的速度獲取查詢結果并得到圖紙所有引用全路徑的 解決方案,且查詢是進行多個字段的模糊匹配搜索。以下描述本發明的優選實施例。首先,通過觸發器,明確獲取所有數據(主要是圖紙對象)變更操作(增加、修改、 刪除),并獲取變更數據,寫入臨時表中,并根據獲取到的更新數據創建或更新索引數據庫。 如果是圖紙全路徑中中間對象的信息有變更操作,則要更新索引庫中的全路徑信息和全路 徑中對應的對象信息。此索引數據庫將是未來數據查詢的數據源,而不是直接從數據庫獲 取。其次,以任務計劃的方式加載exe程序,該exe程序定時根據臨時表中的變更數據更新索引庫。最后,通過全文搜索的方式查詢索引數據庫,獲取查詢結果。利用全文搜索技術獲 取數據將更快地獲取到查詢結果。例如,可以采用以下具體實現來實現如下以c#版本和SQL server數據庫為例進行代碼級的詳細說明首先,在數據庫上建立一個臨時表,該表上記錄變更對象(圖紙)的Key屬性(如 CLASSID和0BJECTID),記錄變更(包括數據記錄的增加、修改和刪除)標志信息,如增加為 1,修改為2,刪除為3,并記錄變更時間。分析所有與圖紙有鏈接關系的對象及其相關的數據庫表,如零件表、圖紙表,圖紙 與零件的鏈接表,零件與零件的樹狀鏈接表,所有相關表中涉及到查詢的字段,然后在數據 庫所有相關表上建立相應的觸發器,當創建新對象后,把該對象的CLASSID、0BJECTID記 錄到臨時表中對應字段,變更標志字段記錄為1,并記錄下對象的創建時間;類似地,當對 象屬性發生修改或者刪除后,同樣把變更對象的Key屬性也記錄到臨時表中,更改對象信 息時,變更標志字段為2,刪除對象時,該變更標志字段為3,同時記下變更時間。若是涉 及到鏈接表,除了記下鏈接對象本身的信息外,還要記下鏈接對象上的父子對象CLASSID、 OBJECTID 信息。建立一個exe程序,該程序的作用是掃描2)中臨時表中的對象數據,通過聯合 查詢的方式把該表中的對象詳細信息取出來,根據標志位信息,新建的圖紙對象信息新建 索引并添加到索引庫;并查詢出對象的全路徑信息,此全路徑信息也需要建立相應的索引; 若圖紙對象更新了數據信息,則把該更新信息也更新到索引庫;若是鏈接對象更新,只須 更新全路徑中的對應信息,若圖紙對象刪除,則從索引庫中刪除所有涉及該對象的索引信 息。同時系統將記錄此次更新索引的時間。當索引更新完畢后,刪除臨時表中做過處理的 數據,以避免垃圾數據存在。下一次執行此程序,程序會檢查臨時表中變更時間大于此次更 新時間的數據,避免重復性工作,提高效率,建立索引和更新索引的方式可以利用Lucene. Net (全文檢索服務器)提供的API進行操作。在數據庫所在的服務器端加載一個任務計劃,該任務計劃定期執行3)中建立的 exe程序。執行的頻率可以根據用戶需求進行調整,如果用戶需要實時查詢,該exe執行的 時間間隔可以設置得短一些,如每分鐘執行一次,如果不需要實時查詢,可以設置為每天執 行一次,這樣可以把執行時間設置在深夜,以降低服務器的運行負荷。以上程序和配置都做好后,就可以進行全文搜索了。利用Lucene. Net提供的API 從其建立的索引庫中取出符合條件的記錄返回客戶端,然后進行后續處理。利用傳統的SQL語句也能達到查詢出符合條件的數據的目的,當用戶查詢圖紙名 稱、描述等多個字段含有某些特定條件的數據時,需要進行多個字段的模糊匹配搜索,如果 再涉及到多表的聯合查詢,SQL語句復雜,或者當數據量很大時,將是一個相當耗時的操作, 這樣就沒有本發明方法性能好(畢竟本發明把數據庫中重要數據做了索引,并且利用了具 有更高查詢效率的第三方全文搜索技術)當然不排除未來DBMS (數據庫管理系統)的查詢 優化器性能得到巨大改善,能很好地支持大數量復合查詢而沒有性能問題。另外,SQL Server2005和2008為應用程序和用戶提供了對SQL Server表中基于 字符的數據發出全文查詢的功能。在可以對給定表運行全文查詢之前,數據庫管理員必須對表創建全文索引。另外,從SQL Server 2008開始提供系統非索引字表。若要支持特定 語言或商業應用場景,需要通過添加和刪除非索引字(也稱為干擾詞)更改系統非索引字 表,并且根據需要創建附加的非索引字表。但是,在一些數據庫服務器上,索引可能失效或 者因為頻繁操作而使得讀取效率降低,并且一個使用索引的查詢可能不明不白地慢下來。 另外,當數據庫表更新大量數據后,需要刪除并重建索引以提高查詢速度,這在后續的維護 工作上比本發明耗時耗力。通過以上實施例可以看出,PDM系統中數據查詢不再直接從數據庫中獲取,而是根 據觸發器建立的變更數據,利用全文搜索技術創建索引庫,并利用全文搜索技術獲取查詢 結果,且索引庫的更新不與數據更新同步,采用exe定時執行方式更新索引庫。進一步地,PDM系統利用全文搜索技術創建索引庫、查詢對象信息和引用全路徑信 息,采用exe定時執行方式更新索引庫。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的 計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不 同于此處的順序執行所示出或描述的步驟。根據本發明的實施例,提供了一種PDM系統中數據的查詢裝置。圖2是根據本發明實施例的PDM系統中數據的查詢裝置的示意圖。如圖2所示,該PDM系統中數據的查詢裝置包括獲取模塊202、更新模塊204和查 詢模塊206。 其中,獲取模塊202用于獲取所述PDM系統中的更新數據;更新模塊204用于根據 所述更新數據更新索引數據庫;查詢模塊206用于通過全文搜索的方式查詢所述索引數據庫。圖3是根據本發明的PDM系統中數據的查詢裝置的優選實施例的示意圖。如圖3所示,上述PDM系統中數據的查詢裝置還包括寫入模塊208,用于在所述 獲取模塊獲取所述PDM系統中的更新數據之后,將所述更新數據寫入臨時列表中,其中,更 新模塊用于利用所述臨時列表中的更新數據更新所述索引數據庫。優選地,上述PDM系統中數據的查詢裝置還包括加載模塊210,用于在所述寫入 模塊將所述更新數據寫入臨時列表中之后,加載可執行程序,其中,所述更新模塊用于使所 述可執行程序定時根據所述臨時列表中的更新數據更新所述索引數據庫。從以上的描述中,可以看出,本發明可以提高PDM系統中數據的查詢效率。進一步 地,本發明解決了數據查詢中涉及多字段模糊查詢和對象引用全路徑的效率問題,并且可 以實現多個關鍵字的復合搜索;這樣大大增強了用戶使用系統的體驗,更加體現了軟件給 用戶帶來的快捷的本質,節省了系統用戶的時間,使得軟件系統能夠更好的應用與推廣。顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用 的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成 的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲 在存儲裝置中由計算裝置來執行,或者將它們分別制作成各個集成電路模塊,或者將它們 中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的 硬件和軟件結合。以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技
7術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修 改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種PDM系統中數據的查詢方法,其特征在于,包括 獲取產品數據管理PDM系統中的更新數據;根據所述更新數據更新索引數據庫;以及 通過全文搜索的方式查詢所述索引數據庫。
2.根據權利要求1所述的PDM系統中數據的查詢方法,其特征在于,通過觸發器獲取所 述PDM系統中的更新數據。
3.根據權利要求1所述的PDM系統中數據的查詢方法,其特征在于, 在獲取所述PDM系統中的更新數據之后,所述方法還包括 將所述更新數據寫入臨時列表中,根據所述更新數據更新索引數據庫包括利用所述臨時列表中的更新數據更新所述索引數據庫。
4.根據權利要求3所述的PDM系統中數據的查詢方法,其特征在于, 在將所述更新數據寫入臨時列表中之后,所述方法還包括加載可執行程序;根據所述更新數據更新索引數據庫包括所述可執行程序定時根據所述臨時列表中的更新數據更新所述索引數據庫。
5.根據權利要求4所述的PDM系統中數據的查詢方法,其特征在于,以任務計劃的方式 加載所述可執行程序。
6.根據權利要求1所述的PDM系統中數據的查詢方法,其特征在于,根據所述更新數據 更新索引數據庫包括如果圖紙全路徑中中間對象的信息由變更,則更新所述索引數據庫中的全路徑信息和 所述全路徑信息對應的對象信息。
7.根據權利要求1所述的PDM系統中數據的查詢方法,其特征在于,所述更新數據為圖 紙對象的更新數據。
8.一種PDM系統中數據的查詢裝置,其特征在于,包括 獲取模塊,用于獲取所述PDM系統中的更新數據;更新模塊,用于根據所述更新數據更新索引數據庫;以及 查詢模塊,用于通過全文搜索的方式查詢所述索引數據庫。
9.根據權利要求8所述的PDM系統中數據的查詢裝置,其特征在于,還包括 寫入模塊,用于在所述獲取模塊獲取所述PDM系統中的更新數據之后,將所述更新數據寫入臨時列表中,其中,更新模塊用于利用所述臨時列表中的更新數據更新所述索引數據庫。
10.根據權利要求8所述的PDM系統中數據的查詢裝置,其特征在于,還包括加載模塊,用于在所述寫入模塊將所述更新數據寫入臨時列表中之后,加載可執行程序,其中,所述更新模塊用于使所述可執行程序定時根據所述臨時列表中的更新數據更新 所述索引數據庫。
全文摘要
本發明公開了一種PDM系統中數據的查詢方法及裝置。其中,該PDM系統中數據的查詢方法包括獲取所述PDM系統中的更新數據;根據所述更新數據更新索引數據庫;通過全文搜索的方式查詢所述索引數據庫。通過本發明,能夠提高PDM系統中數據的查詢效率。
文檔編號G06F17/30GK102004800SQ20101061044
公開日2011年4月6日 申請日期2010年12月28日 優先權日2010年12月28日
發明者倪永全, 林巧明, 桓永興 申請人:北京數碼大方科技有限公司