輸出 xml 關鍵字查詢有效節點之研究 the research on identifying contributors for xml...
DESCRIPTION
輸出 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 之祖先節點 - PowerPoint PPT PresentationTRANSCRIPT
DBLAB @ NTOU
輸出 XML 關鍵字查詢有效節點之研究The Research on Identifying Contributors for XML Keyword Search
指導教授:張 雅 惠 老師研 究 生 :簡 伯 先
2011/07/19 1/39
大綱 背景說明 MaxMatch 系統 TDPrune 系統 LevelPrune 系統 改進方式 實驗 結論
DBLAB @ NTOU2011/07/19 2/39
DBLAB @ NTOU
背景說明2011/07/19 3/39
背景說明 -XML 樹與杜威編碼
DBLAB @ NTOU
杜威編碼 節點之間的結構關係
父子關係: 1.2 為 1.2.3 之父親節點。 祖孫關係: 1.2 為 1.2.3.2 之祖先節點 兄弟關係: 1.2.2 為 1.2.3 之兄弟節點
2011/07/19 4/39
背景說明 -MaxMatch[LC08] 之查詢輸出結果
DBLAB @ NTOU
關鍵字JimPOSITIONTEAM_NAME
: 對應節點 (match)資訊需求:球員 Jim 的守備位置 (POSITION)及其隊名 (TEAM_NAME) : SLCA ( Smallest Lowest Common Ancestor ): 貢獻節點 (contributor): 相關對應節點 (relevant match)
MaxMatch[LC08]進一步篩選輸出結果
2011/07/19 5/39
背景說明 - 研究目的
DBLAB @ NTOU
研究目的: 探討以關鍵字查詢 XML 文件時,如何有效率的產生如 MaxMatch[LC08] 所定義之輸出結果。
2011/07/19 6/39
DBLAB @ NTOU
MaxMatch 系統2011/07/19 7/39
MaxMatch 系統 - 判別貢獻節點
DBLAB @ NTOU
關鍵字 代號Jim APOSITION BTEAM_NAME
C
子孫對應關鍵字集合 (descendant match) : 節點及其所有子孫節點所包含的關鍵字之集合。
⊃A, B
C B
貢獻節點: 若一節點的子孫對應關鍵字集合被其任一兄弟節點所 “真包含” ,則該節點非貢獻節點。
相關對應節點: 任一對應節點至其 SLCA路徑上的所有節點皆為貢獻節點,則該對應節點為相關對應節點。
2011/07/19 8/39
MaxMatch 系統 - 第一次追蹤
DBLAB @ NTOU
關鍵字 二進位 十進位MLB 001 1James 010 2POSITION
100 4
1. Post-order 累加a) 節點本身的 dMatch ( 子孫對應關鍵字集合
)b) 父親節點的 dMatchSet
( 孩子節點有哪些 dMatch)
001(1)
01234567
010(2)
100(4)
100(4)
100(4)
001(1)
100(4)
010(2)
100(4)
110(6)01234567 01234567 01234567 01234567
01234567
01234567 01234567 01234567
01234567
110(6)
111(7)
100(4)
100(4)
100(4)
100(4)0123456701234567
0123456701234567
01234567
01234567
01234567
0123456701234567
01234567
01234567
01234567
01234567
01234567
0123456701234567
01234567
01234567
2011/07/19 9/39
dMatch( 整數 )
dMatchSet( 布林陣列 )
MaxMatch 系統 - 第二次追蹤
DBLAB @ NTOU
關鍵字 二進位 十進位MLB 001 1James 010 2POSITION
100 4
1. Pre-order 判斷是否為貢獻節點
001(1)
010(2)
100(4)
100(4)
100(4)
001(1)
100(4)
010(2)
100(4)
110(6)
110(6)
111(7)
100(4)
100(4)
100(4)
100(4)01234567
01234567
01234567
01234567
01234567 01234567
01234567
01234567
01234567
01234567
(4)10 = (1002) (110)2 = (6)10
2011/07/19 10/39
MaxMatch 系統 - 總計算量
DBLAB @ NTOU
vc :本身被判斷為貢獻節點vpc :父親被判斷為貢獻節點, 本身非貢獻節點。vpnc :父親非貢獻節點vall : + +
MaxMatch :1. 對 vall 類節點計算其 dMatch 及 dMatchSet 。2. 再判斷 vc 及 vpc 類節點是否為貢獻節點。
是否能避免計算vpnc 節點而又能產生同樣的查詢結果 ??
2011/07/19 11/39
我們將對應節點及其祖先節點分為以下三類:
DBLAB @ NTOU
TDPrune 系統2011/07/19 12/39
DBLAB @ NTOU
找 SLCA 分群
SLCA
對應節點
post-order產生 vall 及其dMatch 、dMatchSet
match
pre-order判斷 vc 及vpc 是否為貢獻節點。
match
pre-order產生貢獻節點。
TDPrune 系統 - 流程SLCA
SLCA
讀取索引
找 SLCA 分群讀取索引
MaxMatch:
TDPrune:
2011/07/19 13/39
TDPrune 系統 - 反轉索引
DBLAB @ NTOU
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1節點個數
節點最大深度
每一個關鍵字的反轉索引為一個feq ✕ max_depth 的二維陣列,其中:
feq :包含該關鍵字之節點的總個數 max_depth :上述節點中最深的節點之層數
第 N 層的編碼配上其第 1 ~ (N-1)層的編碼皆代表一個該節點之祖先節點。2011/07/19 14/39
TEAM
1. 21. 31. 4
TDPrune 系統 - 計算 SLCA
DBLAB @ NTOU
計算 SLCA 有許多演算法 與 MaxMatch 一樣,我們採用 [XP05] 所提出的方法來計算 SLCA 。
Y. Xu and Y. Papakonstantinou. Efficient Keyword Search for Smallest LCAs in XML Databases. In SIGMOD, 2005.
[XP05] :
關鍵字JimPOSITIONTEAM_NAME
SLCA:
,
2011/07/19 15/39
TEAM_NAME
1. 2. 11. 3. 11. 4. 1
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 3.
2. 2
1. 4.
2. 2
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1
0
1
0
1
2
3
10
1
2
kwMatch1
kwMatch2
kwMatch3
讀取索引 計算SLCA
TDPrune 系統 - 分群
DBLAB @ NTOU
MaxMatch: 將所有該群的對應節點混合並排序後,存入一節點串列中。
TDPrune: 利用一個大小為 ( 2 ✕ 關鍵字個數 )的數字陣列 dmatch_range 記錄。
TEAM_NAME
1. 2. 11. 3. 11. 4. 1
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 3.
2. 2
1. 4.
2. 2
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1
0
1
0
1
2
3
10
1
2
kwMatch1
kwMatch2
kwMatch3
0 ~ 0
0 ~ 1
0 ~ 0
dmatch_range = (
dmatch_range = ( 1, 1, 2, 2, 1, 1 )
0, 0,
0, 1,
0, 0 )
1 ~ 1
2 ~ 2
1 ~ 1
2011/07/19 16/39
TDPrune 系統 - 產生貢獻節點
DBLAB @ NTOU
TEAM_NAME
1. 2. 11. 3. 11. 4. 1
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 3.
2. 2
1. 4.
2. 2
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1
0
1
0
1
2
3
10
1
2
kwMatch1
kwMatch2
kwMatch3
( 0, 0, 0, 1, 0, 0 ) 1.2
1.2.1( -1, -1, -1, -1, 0, 0 )
( 0, 0, 0, 1, -1, 0 )
1.2.2( 0, 0, 0, 0, -1, -1 )
( -1, 0, 1, 1, -1, 0 )
1.2.3( -1, -1, 1, 1, -1, -1 )
( -1, 0, -1, 1, -1, 0 ) A
B
C
C A, B
B
2011/07/19 17/39
TDPrune 系統 - 產生貢獻節點
DBLAB @ NTOU
TEAM_NAME
1. 2. 11. 3. 11. 4. 1
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 3.
2. 2
1. 4.
2. 2
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1
0
1
0
1
2
3
10
1
2
kwMatch1
kwMatch2
kwMatch3
1.2
1.2.1( -1, -1, -1, -1, 0, 0 )
1.2.2( 0, 0, 0, 0, -1, -1 )
1.2.3( -1, -1, 1, 1, -1, -1 )
A
B
C1.2.2.1
( 0, 0, -1, -1, -1, -1 )
( -1, 0, 0, 0, -1, -1 )
1.2.2.2( -1, -1, 0, 0, -1, -1 )
( -1, 0, -1, 0, -1, -1 )
A B
2011/07/19 18/39
TDPrune 系統 - 產生貢獻節點
DBLAB @ NTOU
TEAM_NAME
1. 2. 11. 3. 11. 4. 1
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 3.
2. 2
1. 4.
2. 2
Jim1. 2
.2.
1.
1
1. 3.
2.
1.
1
0
1
0
1
2
3
10
1
2
kwMatch1
kwMatch2
kwMatch3
1.2
1.2.1 1.2.2 1.2.3
A
B
C1.2.2.1
( 0, 0, -1, -1, -1, -1 )
1.2.2.2( -1, -1, 0, 0, -1, -1 )
1.2.2.1.1( 0, 0, -1, -1, -1, -1 )
( -1, 0, -1, -1, -1, -1 )
2011/07/19 19/39
DBLAB @ NTOU
LevelPrune 系統2011/07/19 20/39
LevelPrune 系統
DBLAB @ NTOU
cur_level 串列next_level 串列
1.2
1.2.1 1.2.2 1.2.3
1.2
1.2.1 1.2.2
輸出: 1.2
cur_level 串列next_level 串列
2011/07/19 21/39
LevelPrune 系統
DBLAB @ NTOU
1.2.1
1.2.1 1.2.2
輸出: 1.2
cur_level 串列next_level 串列
1.2.1
無孩子節點1.2.2
1.2.2
1.2.2.1 1.2.2.2
1.2.2.1 1.2.2.2
2011/07/19 22/39
LevelPrune 系統 相較於 TDPrune 以深度優先來追蹤節點, LevelPrune 以廣度優先的方式來追蹤節點。
DBLAB @ NTOU
TDPrune:
LevelPrune:
2011/07/19 23/39
DBLAB @ NTOU
改進方式2011/07/19 24/39
改進方式 -XML 樹
DBLAB @ NTOU
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 2.
4. 2
1. 2.
5. 2
1. 2.
6. 2
:1. 2
.15.
2
1. 3.
2. 2
1. 4.
2. 2
0
1
2
3
4
13
14
15
kwMatch2
2011/07/19 25/39
改進方式 - 編碼行導向儲存
DBLAB @ NTOU
POSITION
1. 2.
2. 2
1. 2.
3. 2
1. 2.
4. 2
1. 2.
5. 2
1. 2.
6. 2
:1. 2
.15.
2
1. 3.
2. 2
1. 4.
2. 2
0
1
2
3
4
13
14
15
kwMatch3
1( a, b, c, d, 0, 15 )
POSITION
1.
2. 2. 2
1.
2. 3. 2
1.
2. 4. 2
1.
2. 5. 2
1.
2. 6. 2
:1.
2. 15.
2
1.
3. 2. 2
1.
4. 2. 2
0
1
2
3
4
13
14
15
kwMatch3
111…11
22…234
…
列導向儲存: 行導向儲存:
1222 1232 … 1422
2011/07/19 26/39
0
1
2
3
4
13
14
15
改進方式 - 編碼壓縮暨索引壓縮
DBLAB @ NTOU
1( a, b, c, d, 0, 15 ) POSITION
1. 2. 2. 2-
15.-
13.3. 2
1. 2. 4. 21. 2. 5. 21. 2. 6. 2
:1. 2. 15. 21. 3. 2. 21. 4. 2. 2
0
1
2
3
4
13
14
15
kwMatch3
編碼壓縮:POSITIO
N1. 2
.2. 2
1. 2.
3. 2
1. 2.
4. 2
1. 2.
5. 2
1. 2.
6. 2
:1. 2
.15.
2
1. 3.
2. 2
1. 4.
2. 2
kwMatch3
編碼未壓縮:
1.2
( a, b, c, d, 0, ? ) 15次
2 次
2011/07/19 27/39
( a, b, c, d, 0, 13 )
索引未壓縮:索引壓縮:
1,1,1,1,1,…,1,1,1,1,
2,2,2,2,2,…,2,2,3,4,
… …
1,-15, 2,-13,3,4, … …
DBLAB @ NTOU
實驗2011/07/19 28/39
實驗 - 實驗環境
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
資料集:2011/07/19 29/39
大小 節點個數 最大深度 平均深度DBLP 820M
B3800 萬 6 3.4
SwissProt
109MB
499 萬 6 4.02
實驗 - 多樣化查詢句 1
DBLAB @ NTOU
實驗:以 [LC08] 所用來測試的查詢句來比較。 結果:
執行時間: MaxM > TD > Level > Level+
2011/07/19 30/39
TD > Level: TD 需保存及處理較多節點串列資訊。
Level > Level+ Level+ 使用了
編碼行導向儲存 編碼壓縮 索引壓縮
實驗 - 多樣化查詢句 2
DBLAB @ NTOU2011/07/19
|vc |+|vpc | |vall | ( |vc |+|vpc | ) / |vall |
TQ09 640 8030 7.97%TQ10 3980 85450 4.66%TQ11 7080 37580 18.84%TQ12 270 270 100%TQ13 4410 4410 100%TQ14 3000 3000 100%TQ15 2430 4780 50.84%TQ16 5080 5080 100%
結果: TQ10 、 TQ11 中,由於 |vall | 高,所以 MaxM 時間大幅增加。 需處理節點個數相同時,本論文之三系統略快於
MaxM 。31/39
實驗 - 關鍵字個數
DBLAB @ NTOU
實驗:變動關鍵字個數。 資料集: DBLP 結果:
關鍵字個數與花費時間無明顯相關
2011/07/19
關鍵字個數
|vc |+|vpc | |vall | ( |vc |+|vpc | ) / |vall |
3 2092830 3492614
37.42%
4 1659706 3586660
43.93%
5 1652157 3545149
32.35%
6 1630675 3592943
32.35%
32/39
實驗 - 對應節點個數
DBLAB @ NTOU
實驗:變動對應節點總個數。 資料集: SwissProt 結果:
對應節點總個數上升有很大可能導致 |vall | 上升,進而增加執行時間,但並非絕對。
2011/07/19
對應節點個數
|vc |+|vpc | |vall | ( |vc |+|vpc | ) / |vall |
低 2704 10032 26.95%
中 1141 1141 100%
高 228223 246169 92.71%
33/39
實驗 - 輸出節點數量
DBLAB @ NTOU
實驗:變動輸出節點總數量 (|vc |) 。 資料集: DBLP 結果:
實驗時間隨輸出節點總數量上升。 本論文三系統時間高於 MaxMatch 。 ( 後述 )
2011/07/19
|vc | |vall | |vc | / |vall |TQ31 37515 37515 100%TQ32 694578 694578 100%TQ33 1628968 162896
8100%
TQ34 2566518 2566518
100%
34/39
實驗 - 輸出節點比率
DBLAB @ NTOU
實驗:變動輸出節點比率。 (|vc|+|vpc|) / |vall | 結果:
本論文三系統與 MaxMatch 之時間差隨輸出節點比率上升而減少。 Level 系列系統較 TD 為慢。 ( 後述 )
2011/07/19
|vc |+|vpc | |vall | ( |vc |+|vpc | ) / |vall |
TQ35 1692111 3290757
51.42%
TQ36 1954575 3423417
57.09%
TQ37 2216267 3555974
62.33%
TQ38 2404463 3649707
65.88%
35/39
實驗 - 節點使用快取記憶體情況
DBLAB @ NTOU2011/07/19
TDPrune:
LevelPrune:
節點若能在被從快取記憶體中移出之前進行存取,則其第二次存取較快 MaxMatch:
36/39
實驗 - 輸出節點數量
DBLAB @ NTOU
實驗:變動輸出節點總數量。 本論文三系統時間高於
MaxMatch 。
2011/07/19
…
選用關鍵字 (incollection 、 book 、 proceedings 、 article 、 inproceedings 、 www) 皆為根節點之孩子,造成如下樣式答案樹。
所有系統皆無法利用快取記憶體的優勢
37/39
本論文三系統對節點進行較複雜的處理 ( 分配dmatch_range) ,因此較慢。
實驗 - 輸出節點比率
DBLAB @ NTOU
實驗:變動輸出節點比率。 執行時間 Level 高於 TD 。
2011/07/19
…
選用關鍵字(dblp 、 year 、 2008 、 2007 、 2004)造成如下樣式答案樹。TDPrune
: 於處理第二層及第三層節點時 TDPrune會使用快取記憶體。 Level 無法使用。
38/39
year
year
year
year
year
2008
2004
2004
2007
2008
根節點
結論
DBLAB @ NTOU
提出 TDPrune 、 LevelPrune 、 LevelPrune+ 系統 相較 MaxMatch ,大部份情況下會處理較少節點 即使需處理同樣多節點,也有機會因快取記憶體的優勢來減少計算時間 在處理相同節點,及無法使用快取記憶體的情況下,三系統效能略輸 MaxMatch 。
未來研究方向 依據 fanout 、 depth ,在查詢時自動選擇合適的系統。 支援 Top-k 的關鍵字查詢
2011/07/19 39/39