390 likes | 604 Views
輸出 XML 關鍵字查詢有效節點之研究 The Research on Identifying Contributors for XML Keyword Search. 指導教授:張 雅 惠 老師 研 究 生 :簡 伯 先. 大綱. 背景說明 MaxMatch 系統 TDPrune 系統 LevelPrune 系統 改進方式 實驗 結論. 背景說明. 背景說明 -XML 樹與杜威編碼. 杜威編碼 節點 之間的結構關 係 父子關係: 1.2 為 1.2.3 之父親節點。 祖孫關係: 1.2 為 1.2.3.2 之祖先節點
E N D
輸出XML關鍵字查詢有效節點之研究The Research on Identifying Contributors for XML Keyword Search 指導教授:張 雅 惠 老師 研究 生 :簡 伯 先 DBLAB @ NTOU
大綱 • 背景說明 • MaxMatch系統 • TDPrune系統 • LevelPrune系統 • 改進方式 • 實驗 • 結論 DBLAB @ NTOU
背景說明 DBLAB @ NTOU
背景說明-XML樹與杜威編碼 • 杜威編碼 • 節點之間的結構關係 • 父子關係:1.2 為 1.2.3 之父親節點。 • 祖孫關係:1.2 為 1.2.3.2 之祖先節點 • 兄弟關係:1.2.2 為 1.2.3 之兄弟節點 DBLAB @ NTOU
背景說明-MaxMatch[LC08]之查詢輸出結果 資訊需求:球員Jim的守備位置(POSITION)及其隊名(TEAM_NAME) : 對應節點 (match) : SLCA( Smallest Lowest Common Ancestor ) : 貢獻節點 (contributor) : 相關對應節點 (relevant match) • MaxMatch[LC08]進一步篩選輸出結果 DBLAB @ NTOU
背景說明-研究目的 • 研究目的: • 探討以關鍵字查詢XML文件時,如何有效率的產生如MaxMatch[LC08]所定義之輸出結果。 DBLAB @ NTOU
MaxMatch系統 DBLAB @ NTOU
MaxMatch系統-判別貢獻節點 • 子孫對應關鍵字集合 (descendant match): • 節點及其所有子孫節點所包含的關鍵字之集合。 • 貢獻節點: • 若一節點的子孫對應關鍵字集合被其任一兄弟節點所 “真包含” ,則該節點非貢獻節點。 • 相關對應節點: • 任一對應節點至其SLCA路徑上的所有節點皆為貢獻節點,則該對應節點為相關對應節點。 B C A, B DBLAB @ NTOU
MaxMatch系統-第一次追蹤 • Post-order累加 • 節點本身的dMatch (子孫對應關鍵字集合 ) • 父親節點的dMatchSet(孩子節點有哪些dMatch) 111(7) dMatchSet(布林陣列) 100(4) 110(6) 001(1) 100(4) dMatch(整數) 001(1) 100(4) 100(4) 100(4) 110(6) 100(4) 010(2) 100(4) 100(4) 100(4) 010(2) DBLAB @ NTOU
MaxMatch系統-第二次追蹤 • Pre-order判斷是否為貢獻節點 111(7) (4)10 = (1002) (110)2 =(6)10 100(4) 110(6) 001(1) 100(4) 001(1) 100(4) 100(4) 100(4) 110(6) 100(4) 010(2) 100(4) 100(4) 100(4) 010(2) DBLAB @ NTOU
MaxMatch系統-總計算量 • 我們將對應節點及其祖先節點分為以下三類: vc:本身被判斷為貢獻節點 vpc:父親被判斷為貢獻節點,本身非貢獻節點。 是否能避免計算vpnc節點而又能產生同樣的查詢結果?? vpnc:父親非貢獻節點 vall: + + • MaxMatch: • 對vall類節點計算其dMatch及dMatchSet。 • 再判斷vc及vpc類節點是否為貢獻節點。 DBLAB @ NTOU
TDPrune系統 DBLAB @ NTOU
TDPrune系統-流程 SLCA SLCA MaxMatch: post-order產生vall及其dMatch、dMatchSet pre-order 判斷vc及vpc是否為貢獻節點。 讀取索引 找SLCA 分群 match 對應節點 SLCA TDPrune: pre-order 產生貢獻節點。 讀取索引 找SLCA 分群 match DBLAB @ NTOU
TDPrune系統-反轉索引 • 每一個關鍵字的反轉索引為一個feq✕ max_depth的二維陣列,其中: • feq:包含該關鍵字之節點的總個數 • max_depth:上述節點中最深的節點之層數 節點個數 第N層的編碼配上其第1 ~ (N-1)層的編碼皆代表一個該節點之 祖先節點。 節點最大深度 DBLAB @ NTOU
TDPrune系統-計算SLCA • 計算SLCA有許多演算法 • 與MaxMatch一樣,我們採用 [XP05] 所提出的方法來計算SLCA。 kwMatch1 SLCA: kwMatch2 讀取索引 計算SLCA kwMatch3 , • 1 Y. Xu and Y. Papakonstantinou. Efficient Keyword Search for Smallest LCAs in XML Databases. In SIGMOD, 2005. [XP05] : DBLAB @ NTOU
TDPrune系統-分群 kwMatch1 0 ~ 0 • MaxMatch: • 將所有該群的對應節點混合並排序後,存入一節點串列中。 • TDPrune: • 利用一個大小為 ( 2 ✕關鍵字個數 )的數字陣列dmatch_range 記錄。 1 ~ 1 kwMatch2 0 ~ 1 2 ~ 2 kwMatch3 0, 0 ) dmatch_range = ( 0, 0, 0, 1, • 1 0 ~ 0 1 ~ 1 dmatch_range = ( 1, 1, 2, 2, 1, 1 ) DBLAB @ NTOU
TDPrune系統-產生貢獻節點 kwMatch1 A 1.2 ( -1, 0, -1, 1, -1, 0 ) ( -1, 0, 1, 1, -1, 0 ) ( 0, 0, 0, 1, 0, 0 ) ( 0, 0, 0, 1, -1, 0 ) kwMatch2 C 1.2.1 1.2.2 1.2.3 A, B B B ( -1, -1, 1, 1, -1, -1 ) ( -1, -1, -1, -1, 0, 0 ) ( 0, 0, 0, 0, -1, -1 ) C kwMatch3 • 1 DBLAB @ NTOU
TDPrune系統-產生貢獻節點 kwMatch1 A 1.2 kwMatch2 1.2.1 1.2.2 1.2.3 B ( -1, -1, 1, 1, -1, -1 ) ( -1, -1, -1, -1, 0, 0 ) ( -1, 0, 0, 0, -1, -1 ) ( 0, 0, 0, 0, -1, -1 ) ( -1, 0, -1, 0, -1, -1 ) A 1.2.2.1 B 1.2.2.2 ( 0, 0, -1, -1, -1, -1 ) ( -1, -1, 0, 0, -1, -1 ) C kwMatch3 • 1 DBLAB @ NTOU
TDPrune系統-產生貢獻節點 kwMatch1 A 1.2 kwMatch2 1.2.1 1.2.2 1.2.3 B 1.2.2.1 1.2.2.2 ( 0, 0, -1, -1, -1, -1 ) ( -1, 0, -1, -1, -1, -1 ) ( -1, -1, 0, 0, -1, -1 ) C kwMatch3 • 1 1.2.2.1.1 ( 0, 0, -1, -1, -1, -1 ) DBLAB @ NTOU
LevelPrune系統 DBLAB @ NTOU
LevelPrune系統 1.2 cur_level串列 1.2.1 1.2.2 1.2.3 1.2 next_level串列 cur_level串列 1.2.1 1.2.2 next_level串列 輸出: 1.2 DBLAB @ NTOU
LevelPrune系統 1.2.1 1.2.2 無孩子節點 1.2.2.1 1.2.2.2 cur_level串列 1.2.1 1.2.2 next_level串列 1.2.2.1 1.2.2.2 輸出: 1.2 1.2.1 1.2.2 DBLAB @ NTOU
LevelPrune系統 • 相較於TDPrune以深度優先來追蹤節點,LevelPrune以廣度優先的方式來追蹤節點。 • TDPrune: • LevelPrune: DBLAB @ NTOU
改進方式 DBLAB @ NTOU
改進方式-XML樹 kwMatch2 DBLAB @ NTOU
改進方式-編碼行導向儲存 1 列導向儲存: 行導向儲存: ( a, b, c, d, 0, 15 ) kwMatch3 kwMatch3 DBLAB @ NTOU
改進方式-編碼壓縮暨索引壓縮 編碼壓縮: 編碼未壓縮: 1 kwMatch3 kwMatch3 ( a, b, c, d, 0, 15 ) 2次 1.2 ( a, b, c, d, 0, ? ) 15次 ( a, b, c, d, 0, 13 ) 索引未壓縮: 索引壓縮: DBLAB @ NTOU
實驗 DBLAB @ NTOU
實驗-實驗環境 • 個人電腦: • CPU: Intel i7 2600 ( 3.4GHz ✕ 4 cores)。 L1: 64KB、L2: 256KB、L3: 8MB • RAM: 16GB。 • OS: Windows 7 Enterprise 64bit • 實作工具: • Microsoft Visual C++ 2010 • 以Oracle Berkeley DB來儲存索引 • 比較系統: • TDPrune、LevelPrune、LevelPrune+、MaxMatch • 資料集: DBLAB @ NTOU
實驗-多樣化查詢句1 • 實驗:以[LC08]所用來測試的查詢句來比較。 • 結果: • 執行時間: MaxM > TD > Level > Level+ • TD > Level: • TD需保存及處理較多節點串列資訊。 • Level > Level+ • Level+使用了 • 編碼行導向儲存 • 編碼壓縮 • 索引壓縮 DBLAB @ NTOU
實驗-多樣化查詢句2 • 結果: • TQ10、TQ11中,由於|vall|高,所以MaxM時間大幅增加。 • 需處理節點個數相同時,本論文之三系統略快於MaxM。 DBLAB @ NTOU
實驗-關鍵字個數 • 實驗:變動關鍵字個數。 • 資料集:DBLP • 結果: • 關鍵字個數與花費時間無明顯相關 DBLAB @ NTOU
實驗-對應節點個數 • 實驗:變動對應節點總個數。 • 資料集:SwissProt • 結果: • 對應節點總個數上升有很大可能導致|vall|上升,進而增加執行時間,但並非絕對。 DBLAB @ NTOU
實驗-輸出節點數量 • 實驗:變動輸出節點總數量(|vc|)。 • 資料集:DBLP • 結果: • 實驗時間隨輸出節點總數量上升。 • 本論文三系統時間高於MaxMatch。(後述) DBLAB @ NTOU
實驗-輸出節點比率 • 實驗:變動輸出節點比率。(|vc|+|vpc|) / |vall| • 結果: • 本論文三系統與MaxMatch之時間差隨輸出節點比率上升而減少。 • Level系列系統較TD為慢。(後述) DBLAB @ NTOU
實驗-節點使用快取記憶體情況 • 節點若能在被從快取記憶體中移出之前進行存取,則其第二次存取較快 • MaxMatch: • LevelPrune: • TDPrune: DBLAB @ NTOU
實驗-輸出節點數量 • 實驗:變動輸出節點總數量。 • 本論文三系統時間高於MaxMatch。 • 選用關鍵字 (incollection、book、proceedings、article、inproceedings、www)皆為根節點之孩子,造成如下樣式答案樹。 所有系統皆無法利用快取記憶體的優勢 … • 本論文三系統對節點進行較複雜的處理(分配dmatch_range),因此較慢。 DBLAB @ NTOU
實驗-輸出節點比率 • 實驗:變動輸出節點比率。 • 執行時間Level高於TD。 根節點 • 選用關鍵字(dblp、year、2008、2007、2004)造成如下樣式答案樹。 TDPrune: • 於處理第二層及第三層節點時 • TDPrune會使用快取記憶體。 • Level無法使用。 … year year year year year 2008 2004 2004 2008 2007 DBLAB @ NTOU
結論 • 提出TDPrune、LevelPrune、LevelPrune+系統 • 相較MaxMatch,大部份情況下會處理較少節點 • 即使需處理同樣多節點,也有機會因快取記憶體的優勢來減少計算時間 • 在處理相同節點,及無法使用快取記憶體的情況下,三系統效能略輸MaxMatch。 • 未來研究方向 • 依據fanout、depth,在查詢時自動選擇合適的系統。 • 支援Top-k的關鍵字查詢 DBLAB @ NTOU