• 沒有找到結果。

建構XML多維度資料區間索引之研究

N/A
N/A
Protected

Academic year: 2021

Share "建構XML多維度資料區間索引之研究"

Copied!
6
0
0

加載中.... (立即查看全文)

全文

(1)

建構 XML 多維度資料區間索引之研究

邱紹豐 張晏嘉

大葉大學資訊工程學系

R9306007@mail.dyu.edu.tw

摘要

隨著電子資訊化的潮流,時序性資料(Temporal Data)被廣泛地利用與研究,但針對時序性資料索 引之架構,並無法提供一個令人滿意的效能。本文 在此分析時序性資料以 XML(eXtensible Markup Language)作為儲存架構之索引方式,並且提出新 的索引架構。新的索引架構會藉由將時序性資料的 屬性,建構多維度矩陣來作資料特性之分析,並且 利用貪婪演算法(Greedy Algorithm)作為分群策 略,以能穩定且快速的索引資料為目標,將時序性 資料作有效率之分群。 關鍵詞:時序性資料,時間標籤,貪婪演算法。

1.

前言

近年來,由於電子資訊化的發展,時序性資料 被廣泛的利用以及研究,時序性資料代表著某段時 間區段內資料所有變化情況的歷史紀錄,像是公司 中員工的工作歷史資訊或是股價都能稱為時序性 資料。而以 XML 作為時序性資料之儲存架構下, 在索引資料上必須花費相當大的時間,所以便有探 討與研究如何有效率地在 XML 架構底下索引時序 性資料。 然而目前針對 XML 所提出的索引架構,利用 鍵值(key)或是時間(time)來作分群的架構,並 無法提供穩定的效能。因此本論文在此分析以鍵值 以及以時間為分群之架構,觀察這兩種分群架構的 特性,探討該架構無法提供穩定索引效率的原因。 本論文嘗試以穩定並且快速的索引資料作為 目標,在 XML 作為時序性資料儲存架構下,分析 時序性資料之內容資訊,將其資料建構在多維度矩 陣上。在多維度矩陣上,分析資料的特性,以貪婪 演算法將資料分群。 在本文第二章會介紹以 XML 作為儲存架構下 利 用 鍵 值 和時 間 作 為 時序 性 資 料 的分 群 檢 索 方 式,分析傳統分群作法的特性,第三章會介紹本文 所提出的新分群方法,第四章為實驗測試,第五章 則是結論以及未來研究方向。 <Employees> <Employee> <ID ts ="2000-01-01" te ="20001-12-31"> T001 </ID> <Name ts ="2000-01-01" te ="20001-12-31"> John </Name> <Salary ts ="2000-01-01" te ="2001-12-31"> 1000 </Salary> <Title ts ="2000-01-01" te ="20001-12-31"> Sales </Title> </Employee>

<Employee>

<ID ts ="2001-01-01" te ="now"> T002 </ID> <Name ts ="2001-01-01" te ="now"> Tom </Name> <Salary ts ="2001-01-01" te ="now"> 2000 </Salary> <Title ts ="2001-01-01" te ="now"> Engineer </Title> </Employee>

<Employee>

<ID ts ="2000-01-01" te ="now"> T001 </ID> <Name ts ="2000-01-01" te ="now"> John </Name> <Salary ts ="2002-01-01" te ="now"> 3000 </Salary> <Title ts ="2002-01-01" te ="now"> Engineer </Title> </Employee> ... </Employees> 圖一 員工與公司的資料範例

2. 相關研究

XML 是 W3C 組織所提出的標記語言 (Markup Language),具有結構性、可擴展性、自我描述性、 資料和樣式分離原則及整合性。因此,在電子資訊 化的時代中,愈來愈多資料以 XML 格式儲存及交 換。 而針對傳統時序性資料儲存於 XML 上的一些研 究中,會利用時間標籤(timestamp)來標記資料 與時間的關聯,紀錄資料之有效時間區段。圖一為 公司中員工資訊的資料範例,每一個元素(element) 包含時間標籤,如圖中的 ts (transaction time

start)和 te(transaction time end),這兩個屬

性為時間標籤的一種,負責記錄資料的起始以及結 束時間。而當使用者欲檢索過去某個時段的資料 時,則藉由比對資料之時間標籤來判別是否為使用 者所需之資料[5,11]。 在傳統索引時序性資料的架構上,大多是以鍵 值來分群[2],以員工與公司的例子來說:分群的 方式是以各個員工各為一個群組,每個群組內存放 該員工的歷年工作狀況索引,如圖二所示。 而以時間作分群的架構,會將時間切割成多個 連續區間,依照資料內時間標籤的紀錄,在相對應 的時間區間中增加資料的索引[2,6]。而每一個群 組所記錄的是某個時間區段內所有資料的變化狀 態之索引,如圖三所示。 而良好的索引架構可提高資料搜尋之速度,針 對索引架構上,由於樹狀結構於資料搜尋效能之表

(2)

現相當優異,因此在索引資料的作法上,以樹狀結 構來作索引的方式居多。像是以 B 樹、B+樹、AP 樹 (Append-Only Tree)…等等[2,3]。如圖四所示, 為一 B+樹鍵值索引架構範例,資料存放於樹的葉節 點,使用者藉由比對節點數值來搜尋資料。 貪婪演算法是一種在每一步選擇中都採取在 當前狀態下最好(優)的選擇,從而希望導致結果 是最好(優)的演算法。貪婪演算法可以解決一些 最 佳 化 問 題 , 如 : 求 最 小 生 成 樹 (

minimum

spanning tree

)、 求 哈 夫 曼 編 碼 (

Huffman

codes

)…等等[10]。一旦一個問題可以通過貪婪 演算法來解決,那麼貪婪演算法一般是解決這個問 題的最好辦法。由於貪婪演算法的高效率以及其所 求得的答案比較接近最優結果,因此貪婪演算法也 可以用作輔助演算法或者直接解決一些要求結果 不特別精確的問題。 圖二 以鍵值分群之索引架構 圖三 以時間分群之索引架構 圖四 B+樹鍵值索引架構(圖片來源:[3])

3. 研究方法

本論文在此提出一個新的索引架構,以提供穩 定且快速的索引效能為目標,將資料作有效率之分 群。在 3.1 節裡會說明本文的分群目標,3.2 節會說 明作者如何將時序性資料做有效率分群的策略,3.3 節作者將會詳細的說明分群的作法。 3.1 分群目標 在傳統分群資料的架構下,以鍵值分群資料索 引,會造成檢索資料上不穩定的效能。舉例來說, 以鍵值來分群索引資料,對於時間屬性的查詢,必 須比對每個群組內的資料,因此會造成效能低落的 狀況。同樣的情況也發生於以時間分群之索引架構 上。因為在傳統索引的作法,都是針對單一屬性來 作索引,在這種情況下,當面臨到非索引屬性之查 詢時,就必須一一比對資料。因此本文嘗試同時考 量鍵值以及時間屬性,並且依照資料分佈將其分 群。而分群過後,各群組同時包含鍵值以及時間屬 性索引的特性,每個群組內存放某段時間區段中某 部份鍵值資料變化之索引。而群組的數量以及群組 內資料數量是影響檢索效能的因素,群組的數量或 群組內資料的數量的多寡,影響著檢索資料所必須 花費的時間。因此本文嘗試控制群組內資料數量, 來提高檢索效能。並且希望藉由二維度的資料分 群,擴展至較為複雜多維度的分群。 而在資料分群上必須滿足下列幾項要求:(1) 資料的經過分群後,各個群組內的資料總數必須儘 可能相同。(2)分群的架構必須要能支援資料的增 刪修,隨著資料的變化,矩陣的擴展,必須能夠保 持原有分群之架構。也就是當資料經過分群後,不 會因為新資料的加入,而破壞原有群組內資料結 構。(3)分群過後,任何群組於矩陣內所代表的是 一個矩形區塊。

(3)

3.2 分群策略 在時序性資料上,如果將資料的屬性當作一個 維度(dimension),而資料中所有該屬性的數值集 合(set)成為該維度的區間(interval)組合,便可 形成一個多維度矩陣(multidimensional matrix),如 圖五所示。 在多維度的矩陣下,可以藉由資料的分布迅速 地判別資料特徵相似情況。同時,在以多維度矩陣 來表示時序性資料的架構下,當有新資料加入時, 會在時間維度中新增一個新的區間,該區間的數值 代表該筆資料加入的時間,而該區間包含了該筆資 料 最 新 的 資訊 以 及 其 他未 更 動 的 資料 舊 有 的 資 訊,如圖六所示。 在這樣的架構下,一旦資料有所變化,在時間維度 最末端的區間上將會包含著目前資料的最新狀態 隨著資料的變化,在時間維度最末端的區間上將會 包含著目前資料的最新狀態。因此,資料過去之歷 史資訊,不會因為資料在未來有所改變而產生變 化。這同時也代表當資料轉換到矩陣上表示時,不 會因為資料之新增、修改、刪除而改變舊有資料於 矩陣上的位置(座標)。 而要讓各群組內資料數量相同,可利用限制群 組數量或限制群組內資料數量兩種方式。而以限制 群組數量之方式,在面臨資料數量增加之情況,為 了達到各群組內資料均化,就得將資料重新分群。 這樣的方式在面對資料變動頻繁之資料庫,會造成 系統不停地在分群。 因此本文嘗試以限制區塊內資料筆數來達到 均化群組內資料數量之目的,並利用貪婪演算法由 內部向外擴展的方式來作為分群。利用貪婪演算法 可保證目前分群的群組都符合所訂立的條件(群組 內資料數量的固定),而所劃分之群組不會因為資 料變動時而改變其資料結構。而以內部向外擴展的 方式不會因為資料之新增、修改、刪除而改變舊有 資料於矩陣上的位置(座標)。 而要讓各群組內資料數量相同,可利用限制群 組數量或限制群組內資料數量兩種方式。而以限制 群組數量之方式,在面臨資料數量增加之情況,為 了達到各群組內資料均化,就得將資料重新分群。 這樣的方式在面對資料變動頻繁之資料庫,會造成 系統不停地在分群。 因此本文嘗試以限制區塊內資料筆數來達到 均化群組內資料數量之目的,並利用貪婪演算法由 內部向外擴展的方式來作為分群。利用貪婪演算法 可保證目前分群的群組都符合所訂立的條件(群組 內資料數量的固定),而所劃分之群組不會因為資 料變動時而改變其資料結構。而以內部向外擴展的 方式可以確保內部群組都能符合條件,而在矩陣最 外部的區塊,雖然並未符合條件,但如果有新的資 料加入矩陣時,這些新的資料剛好能加入於這些未 符合條件的區塊以讓該區塊符合條件。 圖五 以時間、姓名(鍵值)兩種屬性作為維度所 建構之二維矩陣(各個維度中的區間集合為時序性 資料中該屬性之數值集合)。 圖六 以二維度矩陣表示時序性資料下,加入新資 料之範例。 (1)A = A1 ∪ A2 ∪ …∪ An (2)Ai ∩ Aj = ∅, for i ≠ j

(3)|count(Ai) – count(Aj)| < 門檻值, count(Ak) 代表 Ak 區塊中所包含的資料筆數。 圖七 矩陣分群之原則 步驟一: 由矩陣中取得一點,這一點必須為矩陣 中尚未分割的區塊裡,X 座標最接近原 點的座標集合中,Y 座標最接近原點的 座標。當無法從矩陣取得任何一點時, 則跳到步驟 4 執行。 步驟二: 由此點搜尋一塊符合條件的最大矩形區 塊。 步驟三: 將區塊劃分為已分割,並跳回步驟一執 行。 步驟四: 結束分割。 圖八 以貪婪演算法作為矩陣分群之流程

(4)

3.3 分群方式 因此本文以二維矩陣為基礎,初步規範分群的 重點如圖七所示,並且將分群規範作為條件加入貪 婪演算法中所訂立的分群流程如圖八。 而藉由貪婪演算法的分群方式,每一次的分群 會由矩陣尚未分群的區塊中,會由內部往外部來搜 尋符合預設群組資料筆數之區塊中面積最大的區 塊,如圖九所示。而每一次搜尋到區塊都能確保是 目前符合條件最佳的區塊。而正由於貪婪演算法的 精神為只考量當下最佳的解,所以利用貪婪演算法 來做分群的另一個優點就是新資料的加入並不會 影響到先前所分群的群組之架構。這項優點對於資 料頻繁變動的資料庫來說,能大大的提昇使用效 率。 但在利用貪婪演算法劃分區塊的過程中,當在 搜尋符合條件最佳區塊時,常常會出現數個區塊同 時符合區塊資料條件筆數並且擁有相同大小的面 積。而當符合資料條件筆數之區塊中,同時有數個 區塊都擁有最大之面積時,作者所提出的方法,是 以當中第一個搜尋到的區塊作為劃分的群組。但是 有時候以第一個搜尋到的區塊所劃分的群組並沒 有比其他的區塊所劃分的群組要來的好,於是作者 試著修改原本的貪婪式分群法。而改良過後的分群 方式,將不單單只考量第一個搜尋到的最大區塊, 而將會評估所有符合條件筆數之最大區塊。因此, 作者在此利用一個樹狀結構,名為 Block_Tree,它 會負責記錄所有分群過程中每一個符合條件筆數 之最大區塊所分群出來的結果集合,而其定義如圖 十 所 示 。 而 原 本 貪 婪 式 分 群 法 也 針 對 新 加 入 Block_Tree 的架構,將原本的分群流程做些許修 改,如圖十一所示。 X軸 Y軸 X軸 X軸 X軸 Y軸 Y軸 Y軸 (a)初始矩陣 (b)由矩陣最內部向外搜尋符合條件對 大區塊 (d)持續的分割區塊直到矩陣無法分割 (c)由矩陣中尚未分割區塊中最內部的點 向外搜尋區塊 圖九 以貪婪演算法作為矩陣分群之範例 基於上述分群流程,本文提出如圖十二至圖十 八 之 演 算 法。 演 算 法 中除 了 利 用 先前 所 提 到 的 Block_Tree 來記錄區塊外,並且利用 Bloundary_List 以及 Start_Point_List 來幫助分群過程中邊界的判定 以及區塊的搜尋。 當分群完畢後,Block_Tree 記錄著分群過程中 所搜尋到符合條件最佳區塊的組合集合。每一條根 到葉節點的路徑都是一種分群組合,而路徑所包含 的節點數越少代表著該種分群方式所產生的群組 數量越少。而在固定群組內資料數量的限制下,群 組數量越少,所代表該種分群方式對於比對資料屬 於哪個群組所必須花費的時間就縮短,相對的搜尋 效率就提高。 1. Block_Tree 初始為一個空的樹(tree)。 2. Block_Tree 的每一個節點(node)代表矩陣所 分割的一個區塊。 3. 根(root)到任一葉節點(leaf node)的路徑(path) 代表的是一種分群方式,該路徑所有的節點數 的聯集便為原本的矩陣,節點與節點間並無交 集。 4. 任一條根到葉節點的路徑所包含的節點數中, 節點與節點間並無交集。 5. 任一條根到葉節點的路徑所包含的節點數代表 該分群方式所分割的區塊總數。 6. 任一條根到葉節點的路徑中任兩個節點中所保 含資料筆數總和相減小於某個門檻值(預設區 塊條件資料筆數)。 圖十 Block_Tree 之定義 步驟一: 對於 Block_Tree 的每一個葉節點分別處 理:由矩陣中取得一點,這一點必須不 包含在該葉節點與根的路徑中任一節點 的範圍內,並且為矩陣中最內部的一點 當無法從矩陣取得任何一點時,則跳到 步驟 4 執行。 步驟二: 由此點為起點搜尋符合條件筆數的最大 矩形區塊。 步驟三: 將區塊資訊加入到 Block_Tree 內所對應 路徑中葉節點的子節點,成為該路徑新 的葉節點,回到步驟 1 執行 步驟四: 結束分割。 圖十一 改良式貪婪矩陣分群法之流程 1. UpperBound(Boundary_List , axy)

2. foreach node v in Boundary_List do 3. if value[v].x = x then

4.

return value[v].y

(5)

1. Let A be a p x q Matrix

2. Let N be a mean of data numbers for each block 3. Matrix_Cluster_partition()

4. Let Block_Tree be a Tree to record the block set 5. Let Bundary_List be a list to record matrix boundary 6. Let Start_Point_List be a list to record the Start_Point 7. Candidates

8. Let Block_Tree_Leaf Å Root(Block_Tree) 9. Get_Point(Start_Point_List, Bundary_List , 10. Block_Tree_Leaf) 11. Return 圖十三 矩陣分群主程式之演算法 1. Record_Block(aij,amn,Bundary_List,Start_Point_List,Block_ 2. Tree_Leaf) 3. Block_Tree_Leaf.Childnode Å node(aij,amn) 4. Block_Tree_Leaf Å node(aij,amn) 5. IF n ≠ UpperBound(Boundary_List , aij) do 6. Start_Point_ListÅUpdate_Start_Point( 7. Start_Point_List, ain+1) 8. IF m ≠ p do 9. Start_Point_ListÅUpdate_Start_Point( 10. Start_Point_List, am+1j) 11. Boundary_List Å Update_Boundary(Boundary_List , 12. am+1n) 13. Get_Point(Boundary_List, Start_Point_List, 14. Block_Tree_Leaf) 15. return 圖十四 記錄分群區塊之演算法 1. Get_Point(Start_Point_List,Boundary_List, 2. Block_Tree_Leaf) 3. if Not EMPTY(Start_Point_List) do 4. Let aij Å Get_Head_Node(Start_Point_List)

5. Get_Block(aij, Start_Point_List , Boundary_List ,

6. Block_Tree_Leaf) 7. return

圖十五 由矩陣中取得區塊起始點之演算法

1. Get_Block(aij, Start_Point_List , Boundary_List ,

2. Block_Tree_Leaf) 3. Let MaxSize = 0 4. Let K = 0

5. Let Arr_Candidate be a array 6. while Arr_Candidate = NIL then 7. for m = i to p then 8. for n = j to UpperBound(Boundary_List, aij) 9. then 10. if Count(aij,amn) = N±K do 11. INSERT(Arr_Candidate , amn ) 12. if Size(aij,amn) > MaxSize do 13. MaxSize Å Size(aij,amn) 14. KÅK+1

15. foreach node V in Arr_Candidate then 16. if Size(aij,Arr_Candidate[v]) = MaxSize do

17. Record_Block(aij,amn,Bundary_List, 18. Start_Point_List, Block_Tree_Leaf) 19. 20. Return 圖十六 由起始點搜尋符合資料條件筆數同時為最 大面積區塊之演算法 1. Update_Start_Point(Start_Point_list , axy)

2. foreach node v in Start_Point_List do 3. if value[v].x = x do

4. value[v].y Å min( value[v].y , y) 5. return Start_Point_list 6. INSERT (Starting_Point_list , axy) 7. Start_Point_ListÅSORT_BY_X_AXIS( 8. Start_Point_list) 9. return Start_Point_list 圖十七 更新起始點之演算法 1. Update_Boundary(Boundary_List , axy)

2. foreach node v in Boundary_List do 3. if value[v].x = x do

4. value[v].y Å max( value[v].y , y) 5. return Blundary_List 6. INSERT (Boundary_list , axy)

7.

return Boundary_List 圖十八 更新邊界之演算法

4. 模擬實驗

在本章節將依據上一章節提出的方法進行模 擬。在系統實作上,本文在 Visual Studio .NET 上以 C#進行開發。而在實驗上,以亂數產生二維矩 陣模擬資料轉換至二維度矩陣上之狀態,並藉由本 文所提出之演算法進行實作模擬,而本實驗初步設 定數據如下: ■ 矩陣大小: 20 X 20 、40 X 20 、50 X 30 ■ 資料量(資料於矩陣中所佔之比例): 30%、40% ■ 區塊資料筆數: 10 筆、15 筆、20 筆 而在經過程式模擬分群後,所分群之區塊皆內 部區塊除了與 X 軸末端鄰接之區塊外,都能符合預 設條件筆數,如圖十九至二十一所示。而本實驗在 嘗試擴展至超過 100 X 100 以上之矩陣以及不同條 件筆數設定後的測試皆能達到目標效果。 圖十九 以程式模擬矩陣分群之結果(大小:20 X 20 ,資料量:40% ,區塊條件筆數:10 筆)

(6)

圖二十 以程式模擬矩陣分群之結果(大小:40 X 20 ,資料量:40% ,區塊條件筆數:20 筆) 圖二十一 以程式模擬矩陣分群之結果(大小:50 X 30 ,資料量:30% ,區塊條件筆數:15 筆)

5. 結論與未來工作

隨著電子資訊時代的來臨,時序性資料被廣泛 的利用與研究。本文提出一個新的分群架構,利用 建構多維度矩陣來分析時序性資料的分布,並以限 制群組資料數量作為條件,將時序性資料中性質相 近之資料分群。藉由均化各群組資料數量的分群方 式來提高索引資料的效率。而未來將藉由實驗測量 評估出分群之最佳條件筆數之數值,並且將目前的 分群架構拓展至多維度之分群。而如何快速索引所 分群之各個區塊,以提高檢索效率,也是本文未來 研究之目標。

參考文獻

[1] Extensible Markup Language (XML) 1.0 (Third Edition), http://www.w3.org/TR/XML/.

[2] B. Salzberg and V.J. Tsotras, “A comparison of access methods for temporal data,” submitted for publication, Tech. Report: Polytechnic Univ. (CATT-TR-94-81) or Northeastern Univ. (NU-CCS-94-21), 1994.

[3] Betty Salzberg, “On Indexing Spatial and Temporal Data”, Invited Project Review. Inf. Syst. 19(6), Page 447-465, 1994.

[4] Fusheng Wang and Carlo Zaniolo, “Publishing and querying the histories of archived relational databases in XML”, Web Information Systems Engineering, Page 93 – 102, Dec. 2003.

[5] Fusheng Wang, Carlo Zaniolo, “Temporal Queries in XML Document Archives and Web Warehouses”, TIME 2003, Page 47-55, 2003. [6] Kia Makki, Niki Pissinou, “A new storage

organization for temporal data bases”, Journal of Systems and Software 27(3),Page 159-169, 1994. [7] Manolis Gergatsoulis, Yannis Stavrakas:

Representing Changes in XML Documents using Dimensions. Xsym 2003, Page 208-222, 2003. [8] S.Y. Chien, V.J. Tsotras, and C. Zaniolo, “Efficient

schemes for managing multiversion xml documents”, VLDB Journal, Special Issue on XML Data Management, 2003.

[9] T. Mitakos, M. Gergatsoulis, Y. Stavrakas, and EV Ioannidis. “Representing time-dependent information in multidimensional XML”. Proc. of the 23rd Int. Conf. Information Technology Interfaces (ITI'01), Pula, Croatia, June 2001. [10] Thomas H. Cormen, Charles E. Leiserson,

Ronald L. Rivest, Clifford Stein, ”Introduction to Algorithm”, Second Edition, McGraw-Hill Book Company, 2001.

[11] Xiaoping Ye, Yong Tang, Zhaomei Huang, Yiquan Jiang, “Querying XML documents with temporal variables”, Computer Supported Cooperative Work in Design , Page 536 – 540, May 2004.

參考文獻

相關文件

 相關係數﹕顯示兩個隨機變數之間線性關係的強度和方向,數值介乎-1 和 1。方向以符號劃分,正值表示相同,負值表示相反。強度則以絕對值 大小衡量,一般而言,小於

 「教育或訓練行政」係屬蒐集或電腦處理個人資 料之特定目的項目之一(代號 053 ),另教育 人員任用條例第 31 條定有教育人員任用之消極

對外商品貿易指數的資料是源於進出口貨物准照及申報單的資料,而有關指數主要包括:價值指

對任意連續函數,每個小區間上的取樣點 x 都選擇在函數最 大值與最小值發生的點。如下圖,淺色方塊的高度都挑選小

下圖一是測量 1994 年發生於洛杉磯的 Northridge 地震所得 到的圖形。任意給定一個時間 t ,從圖上可看出此時間所對

• 円円想在一條筆直的路上開設一些漢堡店,已知他取了N個等間

如圖,空間中所有平行的直線,投影在 image 上面,必會相交於一點(圖中的 v 點),此點即為 Vanishing Point。由同一個平面上的兩組平行線會得到兩個

Wi-Fi 定位即利用無線網路來傳遞信號,根據各種網路參數和算法可以找出使用