XML 資料分群與排序查詢之研究 Group-by and Order-by Query Processing for XML data

Preview:

DESCRIPTION

XML 資料分群與排序查詢之研究 Group-by and Order-by Query Processing for XML data. 指導教授 : 張雅惠 博士 研究生 : 黃治中. 大綱. 背景說明 資料結構 系統架構 實驗 結論與未來方向. 背景說明. 目前分群處理的方法 用 XQuery 實作 Group-By Query 利用巢狀結構 grouping 語法 效能好,但是需要將 XML 文件整份輸入 研究目的 如何在 grouping 語法中,加快 Group-By 處理速度. - PowerPoint PPT Presentation

Citation preview

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!

Recommended