xml 資料分群與排序查詢之研究 group-by and order-by query processing for xml data
DESCRIPTION
XML 資料分群與排序查詢之研究 Group-by and Order-by Query Processing for XML data. 指導教授 : 張雅惠 博士 研究生 : 黃治中. 大綱. 背景說明 資料結構 系統架構 實驗 結論與未來方向. 背景說明. 目前分群處理的方法 用 XQuery 實作 Group-By Query 利用巢狀結構 grouping 語法 效能好,但是需要將 XML 文件整份輸入 研究目的 如何在 grouping 語法中,加快 Group-By 處理速度. - PowerPoint PPT PresentationTRANSCRIPT
1/38112/04/21 DBLAB @ NTOU
XMLXML 資料分群與排序查詢之研究資料分群與排序查詢之研究Group-by and Order-by Query Processing for Group-by and Order-by Query Processing for XML dataXML data
指導教授指導教授 :: 張雅惠 博士張雅惠 博士
研究生研究生 :: 黃治中黃治中
2/38112/04/21 DBLAB @ NTOU
大綱 背景說明 資料結構 系統架構 實驗 結論與未來方向
3/38112/04/21 DBLAB @ NTOU
背景說明 目前分群處理的方法
用 XQuery 實作 Group-By Query 利用巢狀結構
grouping 語法 效能好,但是需要將 XML 文件整份輸入
研究目的 如何在 grouping 語法中,加快 Group-By 處理速度
FOR $i IN distinct-values(document(“ catalog.xml” ))//Year)RETURN { $i } { FOR $a IN distinct-values((document(“ catalog.xml” )//Name) WHERE $i = $a/Year RETURN $a/Price { $a } { FOR $b IN document(“ bib.xml” )//Book WHERE $a = $b/Name RETURN $b/#Sold } }
XQuery
group //Bookby //Name return ( //Name, //Price) then by /Year return ( /Year, //#Sold ) )
grouping語法
4/38112/04/21 DBLAB @ NTOU
XML 樹 (with extended dewey encoding)
Catalog
Subject
Title Author YearPrice
Publisher
Name Location
McGraw-Hill NY
Name Book Book
DatabasesSystem
Database
Johnson $50
#Sold
1200 1997
Title Author YearPrice
Advanced Database Systems
Johnson $60
#Sold
700 2005
Subject
Title Author YearPrice
Publisher
Name Location
Thomson LA
Name Book Book
Data Networks
Network
Jeff $50
#Sold
1500 2005
Title Author YearPrice
FDDI Networking
Tim $60
#Sold
1200 2005
(1)
(1.1) (1.2)
(1.1.1) (1.1.2) (1.1.3)(1.2.1) (1.2.2) (1.2.3)
(1.1.3.1) (1.1.3.2) (1.1.3.4) (1.2.3.1) (1.2.3.2) (1.2.3.4)
(1.1.3.2.1) (1.1.3.2.2) (1.1.3.2.3) (1.1.3.2.4) (1.1.3.2.5) (1.1.3.3.1) (1.1.3.3.2) (1.1.3.3.3)(1.1.3.3.4) (1.1.3.3.5) (1.2.3.2.1) (1.2.3.2.2)(1.2.3.2.3) (1.2.3.2.4) (1.2.3.2.5) (1.2.3.3.1)(1.2.3.3.2)(1.2.3.3.3) (1.2.3.3.4) (1.2.3.3.5)
5/38
<!ELEMENT Catalog (Publisher*)><!ELEMENT Publisher (Name, Location, Subject*)><!ELEMENT Subject (Name, Book*)><!ELEMENT Book (Title, Author+, Price, Sold, Year)><!ELEMENT Author (Name, City)><!ELEMENT City (#PCDATA)><!ELEMENT Name (#PCDATA)><!ELEMENT Location (#PCDATA)><!ELEMENT Title (#PCDATA)><!ELEMENT Price (#PCDATA)><!ELEMENT Sold (#PCDATA)><!ELEMENT Year (#PCDATA)>
112/04/21 DBLAB @ NTOU
Master Entity 若一個元素在 DTD 的定義中為一個 “ * ” ,則稱其為
Entity Master Entity: 針對一個 XML 中的元素 N ,若節點 A 是
N 的祖先,為一個實體,且離此節點最近且包含自己,則稱此節點 A 為節點 N 的 Master Entity
Catalog
Subject
Title Author YearPrice
Publisher
Name Location
McGraw-Hill NY
Name Book Book
DatabasesSystem
Database
Johnson $50
#Sold
1200 1997
Title Author YearPrice
Advanced Database Systems
Johnson $60
#Sold
700 2005
Subject
Title Author YearPrice
Publisher
Name Location
Thomson LA
Name Book Book
Data Networks
Network
Jeff $50
#Sold
1500 2005
Title Author YearPrice
FDDI Networking
Tim $60
#Sold
1200 2005
6/38112/04/21 DBLAB @ NTOU
Group-By Query 的語法 Group-By Query 分類
Group-By 語法是由“ Extending XQuery for Analytics” 論文所提出
Group-By 語法 - 分成 (α 、 β 、 λ 、 ε 、 ω 、 γ) 節點 α ( 基準運算式 ) - for 子句 β ( 分群運算式 ) - group by 和 then by 子句 λ ( 限制運算式 ) - having 子句 ε ( 排序運算式 ) - order by 子句 ω ( 基準運算式 ) - rank 子句 γ ( 回傳運算式 ) - return 子句 L01 for //Book
L02 group by //Price order by //Price return (
L03 //Price, //Author
L04 then by //Year
L 05 having avg(#Sold)> 1400 rank > 1 return (
L06 //Year, avg(#Sold)
L07 ) )
7/38
Answer Tree Template 根節點( Root ) : 我們以 XML 文件的根節點標籤 子樹根節點( Subtree Root ) : 將每一層 β 運算式內所有
的標籤串接起來,最後加上“ -group” 樹葉節點( Leaf Node ) : 樹葉節點對應到 β 和 γ 運算式
,其下虛線為對應的元素內容
...
Root
Subtree Root
LN LN Nested Subtree Root
LN LN
Subtree Root
LN LN Nested Subtree Root
LN LN
DBLAB @ NTOU112/04/21
8/38112/04/21 DBLAB @ NTOU
Answer Tree 結構Catalog
Subject
Title Author YearPrice
Publisher
Name Location
McGraw-Hill NY
Name Book Book
DatabasesSystem
Database
Johnson $50
#Sold
1200 1997
Title Author YearPrice
Advanced Database Systems
Johnson $60
#Sold
700 2005
Subject
Title Author YearPrice
Publisher
Name Location
Thomson LA
Name Book Book
Data Networks
Network
Jeff $50
#Sold
1500 2005
Title Author YearPrice
FDDI Networking
Tim $60
#Sold
1200 2005
L01 for //Book
L02 group by //Price order by //Price return (
L03 //Price, //Author
L04 then by //Year
L 05 having avg(#Sold)> 1400 rank > 1 return (
L06 //Year, avg(#Sold)
L07 ) )
Catalog
Book-group
Price
Book-group
50
Author
Johnson
Author
Jeff
Year-group Year-group
Year
1997
avg(#Sold)
1200
Year
2005
avg(#Sold)
1500
Price
60
Author
Johnson
Author
Tim
Year-group
Year
2005
avg(#Sold)
950
XML Tree
Answer Tree
Query
9/38112/04/21 DBLAB @ NTOU
資料結構 - 索引結構 元素編碼表( EC-Table)
延伸杜威編碼 主實體延伸杜威編碼 屬性
內容索引 (Value-Index) 相同標籤的元素值收集起來,索引以 Value 為 Key , Master
Entity Deweyid 為 Value
McGraw-Hill
Name
Network
Database
1.1.3
McGraw-Hill
1.1
Network
1.2.3
Thomson
1.2
10/38112/04/21 DBLAB @ NTOU
資料結構 - 索引結構 ( 續 )
主實體索引 (Master Entity-Index) 相同標籤的元素值收集起來,索引以Master Entity 為 Key,元素的 Value 為 Value
1.1.3
Name
1.2
1.1
McGraw-Hill
1.1.3
Database
1.2
Thomson
1.2.3
Network
11/38112/04/21 DBLAB @ NTOU
ABList結構 用以紀錄處理完分群運算和排序運算的結果, ABList 是由一個個
ABNode 所串接起來 TagValueList: 每層 query裏的分群運算式標籤和內容值 Master List:記錄符合該 Tag-Value 限制的元素 sibling ptr:同層 query所產生的 ABNode連接 nest ptr:連接到下一層 query所產生的 ABList 的第一個節點
TagValueList
Master List
nest ptr sibling ptr
Price 50
1.1.3.2
Year 1997
Subject
Title Author YearPrice
Publisher
Name Location
McGraw-Hill NY
Name Book
DatabasesSystem
Database
Johnson $50
#Sold
1200 1997
(1.1)
(1.1.1) (1.1.2) (1.1.3)
(1.1.3.1) (1.1.3.2)
(1.1.3.2.1) (1.1.3.2.2) (1.1.3.2.3) (1.1.3.2.4) (1.1.3.2.5)
12/38
系統架構 Parse Query 模組
使用者輸入一個 Group-By Query,建立 Query List
BuildABList 模組 對 Query List 中的每層 Query ,
去處理排序運算式( ω )和分群運算式( β )
CreateAnswerTree 模組 依據 ABList 的結構建立 Answer
Tree ProcessHavingConstraint 模組
依據 Query List 裡面的每一個限制運算式,刪除 Answer Tree 裏不符合限制的子樹
ProcessRankConstraint 模組 刪除不符合 Rank 限制的子樹
112/04/21 DBLAB @ NTOU
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
13/38112/04/21 DBLAB @ NTOU
系統架構 - 建立索引
針對 XML資料建立索引 元素內容的資訊建立於內容
索引 (Value-Index ) 針對每個標籤的主索引和元素值建立主實體索引 (Master Entity Index)
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
14/38112/04/21 DBLAB @ NTOU
系統架構 -Parse Query 模組
將使用者輸入之 XQuery 查詢句建立 QList
依巢狀結構切割成一個個的QueryNode
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
15/38112/04/21 DBLAB @ NTOU
QList QList
將使用者所輸入的查詢句,依巢狀結構切割成一個個的 QueryNode 同一層 group by or then by 子句得到分群運算式,該運算式也在排
序運算式中 ,會把該資料儲存在 β 中,但另外標示 “ order” return 子句得到回傳運算式,若該運算式也在分群運算式中,則資
料只會儲存在 QueryNode 的 β 中
L01 for //Book
L02 group by //Price order by //Price return (
L03 //Price, //Author
L04 then by //Year
L 05 having avg(#Sold)> 1400 rank > 1 return (
L06 //Year, avg(#Sold)
L07 ) )
outer nest0
α
β
γλ
ε
XPath
α
//Price
//Author
XPath
order β
γλ
ε
//Yearavg(#Sold)
order//Price
1
avg(#Sold) > 1400>
16/38112/04/21 DBLAB @ NTOU
系統架構 - 建立 ABList 模組
以 QueryList 建立 ABList 建立同層的 ABList 建立同層的 ABList- 改善 建立祖先的 ABList 建立子孫的 ABList
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
17/38
112/04/21
DBLAB @ NTOU
建立同層的 ABList
for //Bookgroup by //Price, //Year return ( //Price, Year, #Sold )
Price 50
1.1.3.2
Price 60
1.2.3.4
Year 1997
1.1.3.2
Year 2005
1.1.3.4
//Price
1.2.3.4
1.1.3.41.2.3.2
1.2.3.2
MatchListPrice 50
1.1.3.2
Year 1997
112/04/21
NotMatchList
1.2.3.2
//Year
Price 50
1.1.3.2
Year 1997
MatchNode
18/38
112/04/21
DBLAB @ NTOU
建立同層的 ABList
for //Bookgroup by //Price, //Year return ( //Price, Year, #Sold )
Price 50 Price 60
1.2.3.4
Year 2005
1.1.3.4
//Price
1.2.3.4
1.1.3.41.2.3.2
1.2.3.2
MatchListPrice 50
1.1.3.2
Year 1997
112/04/21
NotMatchList
//Year
Price 50
1.2.3.2
Year 2005
MatchNode
Price 50
1.2.3.2
Year 2005
19/38
112/04/21
DBLAB @ NTOU
建立同層的 ABList
for //Bookgroup by //Price, //Year return ( //Price, Year, #Sold )
Price 60
1.2.3.4
Year 2005
1.1.3.4
//Price
1.2.3.4
1.1.3.4
MatchListPrice 50
1.1.3.2
Year 1997
112/04/21
NotMatchList
//Year
Price 60
1.1.3.4
Year 2005
MatchNode
Price 50
1.2.3.2
Year 2005
1.2.3.4
Price 60
1.1.3.4
Year 2005
1.2.3.4
20/38
建立同層的 ABList- 改善
112/04/21 DBLAB @ NTOU
Price 50
1.1.3.2
Price 60
1.2.3.41.1.3.41.2.3.2
Master Entity-Index
E1
Em
E2
Price 50
1.1.3.2
Year 1997
Price 50
1.2.3.2
Year 2005
Price 60
1.1.3.4
Year 2005
1.2.3.4
MatchList
//Price
編碼對應到 Year 的內容
1.1.3.21.2.3.21.1.3.41.2.3.4
1997200520052005
21/38112/04/21 DBLAB @ NTOU
建立祖先的 ABList
for //Bookgroup by //Price, //anc::Subject/Name return ( //Price, //anc::Subject/Name, //Name ) )
Price 50
1.1.3.2
Price 60
1.2.3.4
Name Database
1.1.3
//Price
1.1.3.41.2.3.2
Price 50
1.1.3.2
Tag Database
Price 60
1.2.3.2
Tag Network
Price 50
1.1.3.4
Tag Database
MatchList
anc::Subject/Name
Name Network
1.2.3
Price 60
Tag Network
1.2.3.4
節點內的 Tag 代表 anc::Subject/Name
22/38112/04/21 DBLAB @ NTOU
建立子孫的 ABList
for //Subjectgroup by //Name, dec::/Book/Price return ( //Name, dec::/Book/Price , //Title ) )
Name Database
1.1.3
Name Network
1.2.3
Price 50
1.1.3.2
Price 60
1.1.3.4
//Name
dec::/Book/Price
1.2.3.2
MatchList
1.2.3.4
Name Database
1.1.3.2
Price 50
Name Database
1.1.3.4
Price 60
Name Network
1.2.3.2
Price 50
Name Network
1.2.3.4
Price 60
23/38112/04/21 DBLAB @ NTOU
系統架構 - 建立答案樹
將 ABList轉成 Answer Tree 建立 Return 節點 計算 Return 節點是
Aggregation結果
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
24/38112/04/21 DBLAB @ NTOU
建立答案樹( Answer Tree )Price 50 Price 60
1.1.3.41.1.3.2
Year 1997
1.1.3.2
Year 2005
1.2.3.2
Year 2005
1.1.3.4
1.2.3.2 1.2.3.4
1.2.3.4Master
Entity-Index
E1
Em
E2Catalog
Book-group
Price
Book-group
50
Author
Johnson
Author
Jeff
Year-group Year-group
Year
1997
avg(#Sold)
1200
Year
2005
avg(#Sold)
1500
Price
60
Author
Johnson
Author
Tim
Year-group
Year
2005
avg(#Sold)
950
outer nest0
α
β
γλ
ε
XPath
α
//Price
Author
XPath
order β
γλ
ε
//Yearcount(*)
order//Price
1
avg(#Sold) > 1400>
Answer Tree
ABList
QList
Index
25/38112/04/21 DBLAB @ NTOU
系統架構 - 處理 Having 限制
依 QList處理每一棵子樹的Having限制
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
26/38112/04/21 DBLAB @ NTOU
處理 Having 限制
Catalog
Book-group
Price
Book-group
50
Author
Johnson
Author
Jeff
Year-group Year-group
Year
1997
avg(#Sold)
1200
Year
2005
avg(#Sold)
1500
Price
60
Author
Johnson
Author
Tim
Year-group
Year
2005
avg(#Sold)
950
27/38112/04/21 DBLAB @ NTOU
系統架構 - 處理 Rank 限制
處理 Rank ,以傳回前 N 筆資料
Value-Index
V1
Vm
V2
Master Entity-Index
E1
Em
E2
BuildABList
Parse Query
Input Query
QueryList
CreateAnswerTree( Calculate agg )
AllByList
ProcessHavingConstraint
ProcessRankConstraint
AnswerTree
AnswerTree with having
Result
28/38112/04/21 DBLAB @ NTOU
處理 Rank 限制
Catalog
Book-group
Price
Book-group
50
Author
Johnson
Author
Jeff
Year-group Year-group
Year
1997
#Sold
1200
Year
2005
#Sold
1500
Price
60
Author
Johnson
Author
Tim
Year-group
Year
2005
#Sold
700
#Sold
1200
29/38112/04/21 DBLAB @ NTOU
實驗 實驗環境
CPU : Core 2 Quad 6600 CPU 的每一顆核心時脈是 2.4 GHz 記憶體 : 4 GB 作業系統 : Windows Server 2003 實作工具 : Visual C++ 2008
比較系統 本論文的系統 : Index 和 Index1 [GGKL+07] 中 NGB_Disk 之作法 : 稱作 Scan
Data Set DBLP 大小約 100MB左右 XMark 大小約 100MB左右
30/38112/04/21 DBLAB @ NTOU
各模組時間分析 BuildABList 模組
主要將使用者 XQuery 查詢句建立成 ABList 以 BuildABList Time 紀錄
CreateAnswerTree 模組 主要將 ABList 轉成 AnswerTree 抓取回傳運算式資料 以 CreateTree Time 紀錄
計算 Aggregation 時間 Calculate AggTime
ProcessHavingConstraint 和 ProcessRankConstraint 模組 Having 限制式處理時間 Rank 限制式處理時間 以 ProcessHavingTime 紀錄
31/38112/04/21 DBLAB @ NTOU
限制 Return運算式數量影響 控制回傳結點數量 , 分別為 1 、 2 、 3 、 4
和 5for //proceedingsgroup by //year return ( //year,//title,//booktitle,//url,//editor
0
1
2
3
4
5
6
7
8
Q1 Q2 Q3 Q4 Q5
Scan
Index
32/38112/04/21 DBLAB @ NTOU
分群運算式數量影響 控制 β 運算式之數量 , 分別為 1 、 2 、 3 、 4
for //proceedingsgroup by //year,//author return ( //year,//author,//journal )
0
2
4
6
8
10
12
14
Q1 Q2 Q3 Q4
Scan
Index
Index1
33/38112/04/21 DBLAB @ NTOU
Nested 層數量影響 控制 Nested 層數量 , 分別為
1 、 2 、 3 、 4 for //proceedingsgroup by //year return ( //year,//booktitle thenby //title return ( //title,//volume ) )
0
2
4
6
8
10
12
14
Q1 Q2 Q3 Q4
Scan
Index
34/38112/04/21 DBLAB @ NTOU
Selective 高低數量影響 控制 Selective 高低 , 分別為 author 、 booktitle 、和 pages
for //proceedingsgroup by //author return ( //author,//title,//volume )
3100
3150
3200
3250
3300
3350
3400
3450
3500
Q1 Q2 Q3
Selective數量
0
1
2
3
4
5
6
7
8
Q1 Q2 Q3
Scan
Index
35/38112/04/21 DBLAB @ NTOU
Complex Query 影響 Q1: 處理 Query having 、 rank 、和 aggregation Q2: 回傳結點 min ( Year ) Q3: having //min ( Year ) > 2003 Q4: rank < 100
0
2
4
6
8
10
12
Q1 Q2 Q3 Q4
Scan
Index
36/38112/04/21 DBLAB @ NTOU
不同結構限制影響 Q1: 一個 β 為 α 的祖先 Q2: 兩個 β 為 α 的祖先 Q3: 兩個 β 為 α 的子孫 Q4: 一個 β 為 α 的祖先和一個 β 為 α 的子孫
0
1
2
3
4
5
6
7
8
9
Q1 Q2 Q3 Q4
Scan
Index
37/38112/04/21 DBLAB @ NTOU
結論與未來方向 提出的 ABList 結構和建立 ABList 演算法,使得 Query
可以處理 Order-By 、 Rank 限制 未來的研究方向
可以針對分群查詢句中的 γ 運算式做更快速的擷取 考慮分群查詢處理的最佳化。
38/38112/04/21 DBLAB @ NTOU
The End Thank you!