




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于數(shù)據(jù)分組方法的數(shù)據(jù)倉庫并行預計算和查詢三第六章并行化算法的實現(xiàn)6.1串行預計算程序構造在串行預計算程序中,一共有ubing、dfhandle、qutientube和tuplehandle4個類,其中dfhandle和tuplehandle兩個類是輔助功能類。它們的類圖如圖6.1所示。dfhandle的主要功能是翻開關閉數(shù)據(jù)文件,將數(shù)據(jù)文件中的元組一條一條地讀進來,然后將該條元組交給tuplehandle處理,tuplehandle將元組的各維數(shù)據(jù)分割開來,每次處理一維,并將該維數(shù)據(jù)存在程序指定的一個內存區(qū)域中。關于ubing類和qutientube類的詳細介紹,將在以下的章節(jié)中給出。圖6.
2、1dfhandle類和tuplehandle類6.1.1ubing類ubing類的類圖如圖6.2所示,其中l(wèi)addata()的作用是使用dfhandle類,翻開指定的數(shù)據(jù)文件,將元組讀出之后,使用tuplehandle來將各個維度和度量值的數(shù)據(jù)拆分開來,然后對所有的維度做映射操作,寫入映射文件,同時將映射后的維度數(shù)據(jù)存在data這個二維數(shù)組里,度量值存在srdata中,直到把所有數(shù)據(jù)文件都讀入data和srdata中。在讀數(shù)據(jù)之前,laddata還會先統(tǒng)計基表中有多少條元組,元組有多少維和多少個度量值,某度量值上的聚集操作分別是哪種,這些數(shù)據(jù)分別存在tuplesnu,disnu,srsnu和a
3、ggfunrder中。avgfun()、axfun()、infun()、sufun()和untfun()里面分別是平均、最大值、最小值、和、計數(shù)等聚集操作的實現(xiàn)。圖6.2ubing類ubing類的工作主要是完成預計算真正開場之前的準備工作,把所有數(shù)據(jù)都讀入內存之后,qutientube類便可以使用這些數(shù)據(jù)來進展預計算工作。ubing類的prepute()函數(shù)是一個虛函數(shù),它的詳細實如今qutientube中。qutientube類是ubing類的一個子類。6.1.2qutientube類qutientube類publi繼承于ubing。它的類圖如圖6.3所示。通過調用prepute()開場預計
4、算工作。圖6.3qutientube類程序首先會創(chuàng)立disnu+1個aggdidatax文件,用來存放不同層次的上界,同時也創(chuàng)立同樣多個的aggsrdatax文件,用來存放相對應的度量值。data0中存放ubing從數(shù)據(jù)文件讀出的data內容,同樣srdata0中存放相應的度量值,data1和srdata1中將存放的是將data0、srdata0里數(shù)據(jù)排序后的結果,用來排序的算法在partitin()中實現(xiàn)。prepute()接下來便會調用dfs()開場計算上界并將上界與其所對應的度量值寫入相應層次的文件中。dfs()的詳細算法詳見本文4.2節(jié)。預計算程序的數(shù)據(jù)流圖如圖6.4所示。圖6.4串行
5、預計算程序中的數(shù)據(jù)流6.2預計算并行化并行預計算程序中,在串行程序的根底上增加了兩個類:分別是dispathanager類和dispathrker類。顧名思義,dispathanager類中的方法是為主從形式中的主進程所調用,dispathrker類中的方法是在從進程中調用。根據(jù)本文5.1節(jié)中的描繪,dispathanger類主要的工作是完成數(shù)據(jù)讀入、映射和數(shù)據(jù)分發(fā)工作。dispathrker的工作是接收主進程發(fā)送過來的數(shù)據(jù)。6.2.1dispathanager類和dispathrker類dispathanager類和dispathrker類的類圖如圖6.5所示。數(shù)據(jù)的讀入工作將由ubing類
6、轉移到dispathanager類中,但由于從進程無法接觸到文件信息,因此,主進程必須將與數(shù)據(jù)文件相關的數(shù)據(jù)預先得出并發(fā)送給每個從進程。dispathanager在初始化時便會調用getdatafilenu()和getnfig()。getdatafilenu函數(shù)使用dfhandle和tuplehandle來完成工作。首先翻開數(shù)據(jù)文件,將第一行讀出。數(shù)據(jù)文件的第一行是用來寫明基表有多少個維度和度量值,每個維度和度量值的名稱分別是什么。getdatafilenu里會根據(jù)里面的信息分辨出哪些是維度數(shù)據(jù),哪些是度量值,分別有多少個,度量值以何種方式進展聚集操作等,然后把這些數(shù)據(jù)保存下來。最后是統(tǒng)計整個
7、數(shù)據(jù)文件有多少條元組。這些操作根本和ubing:laddata中前面局部的操作一樣。圖6.5dispathanager和dispathrker類圖getnfig函數(shù)的作用是將保存著各個進程數(shù)據(jù)分配比例的配置文件內容讀出,并根據(jù)getdatafilenu中得到的元組條數(shù),計算出每個進程應當接收的元組條數(shù)。計算完之后,將這些信息保存在pnfig中。接下來,dispathanager便會將pnfig里的數(shù)據(jù)連同度量值操作方式和文件夾名稱發(fā)送到每個相應的進程中,如圖6.6所示。同時,在從進程中運行的dispathrker也調用了revnfig()。主從進程間通過pi的點對點通信,完成配置數(shù)據(jù)的發(fā)送和接
8、收。dispathrker接收完配置數(shù)據(jù)之后,將配置數(shù)據(jù)存如pnfig里。在完成配置數(shù)據(jù)的交互之后,dispathrker將會利用收到的數(shù)據(jù),如元組條數(shù)、維度數(shù)和度量值數(shù)來決定該分配多大的內存空間以存下將要收到的數(shù)據(jù),并開場等待接收數(shù)據(jù)。而dispathanager那么會調用laddata()來將數(shù)據(jù)文件載入內存。dispathanager在laddata()時是將數(shù)據(jù)存入兩個長度分別為idinu*ituplenu和isrnu*ituplenu的一維數(shù)組中,它們分別是pdidata和psrdata。與串行預計算程序中的ubing作用類似,dispathanager會在載入數(shù)據(jù)的同時完成映射的工
9、作。但當dispathanager準備好要發(fā)送到其中一個從進程的數(shù)據(jù)之后,它便會調用senddata(),指明將要發(fā)送的進程號,將數(shù)據(jù)發(fā)送出去。如圖6.7所示。圖6.6發(fā)送和接收配置數(shù)據(jù)示意圖圖6.7發(fā)送和接收數(shù)據(jù)示意圖在每個從進程都接收完數(shù)據(jù)和主進程完成laddata之后,每個進程都會有裝著維度數(shù)據(jù)和度量值的兩個一維數(shù)組。在并行程序的ubing中,由于不再需要與文件打交道,所以將ubing:laddata()重載,將它的輸入?yún)?shù)由數(shù)據(jù)文件名改為文件夾名稱、pdidata、psrdata和paggfun。在這個函數(shù)中,ubing將會把pdidata和psrdata這兩個一維數(shù)組的數(shù)據(jù)讀出,存成
10、二維數(shù)組。這樣,數(shù)據(jù)發(fā)送過程已經(jīng)結束,預計算開場之前的數(shù)據(jù)準備工作已經(jīng)完成,接下來便是各個進程調用qutientube里的prepute()函數(shù),開場預計算工作。接下來在每個進程中的工作情況,和串行環(huán)境下的情況一致。6.3串行查詢程序構造在串行查詢程序中,同樣也有dfhandle和tuplehandle這兩個輔助類。實現(xiàn)查詢功能主要由以下三個類完成:aggstrage、lseubequery、queryputatin。它們的類圖如圖6.8所示。圖6.8查詢程序類aggstrage類的主要功能是面向立方體數(shù)據(jù)的操作。它封裝了讀入預計算所產生文件的方法,如ladapdata是將ap文件讀入,用來映
11、射查詢語句。ladaggdata用來將某一層立方體文件內容讀進內存。串行查詢程序首先會通過queryputatin:getqueryrerd()將查詢語句批量地讀入,存在queryrerds里,然后調用lseubequery:query()。在lseubequery:query()中,程序通過aggstrage所實例化的aggstrage對象將映射關系文件讀入,并調用apsti()將查詢語句映射為整型數(shù)組。映射后的查詢語句存在tqrybj中,然后將tqrybj中的內容,一次一條地遞交給pintquery()進展查詢。大致的流程如圖6.9所示。圖6.9串行查詢流程pintquery首先會確定該條
12、查詢語句的層次,然后判斷該層次的數(shù)據(jù)是否已經(jīng)載入內存,假如沒,那么調用aggstrage:ladaggdata()將其載到內存中。然后開場順序掃描各條上界,使用isvered來判斷該上界是否被查詢語句所覆蓋。假如掃描完一層還找不到所覆蓋的上界,那么繼續(xù)掃描下一層文件。詳細流程在本文4.3節(jié)。6.4并行查詢在并行查詢程序中,增加了兩個類,分別是queryanager類和queryrker類。串行程序中的queryputatin類被取消,它的功能將在queryanager類中實現(xiàn),lseubequery中的apsti()函數(shù)也放在queryanager類中實現(xiàn)。圖6.10中所示為queryanag
13、er類和queryrker類的類圖。6.4.1queryanager類和queryrker類并行查詢程序首先會在主進程中調用queryanager:ladquery()來將查詢語句全部存入內存queryrerds二維數(shù)組中。接著就是調用queryanager:apquery()將查詢語句映射成整型數(shù)組,存入queryanager:pquery中。與并行預計算程序類似,并行查詢程序中,主進程也會預先將一些配置數(shù)據(jù)發(fā)送給從進程,其中包括了查詢語句的條數(shù)、數(shù)據(jù)的維度和度量值數(shù)。從進程在接收完這些數(shù)據(jù)之后,做一些初始化工作,為即將發(fā)送過來的查詢數(shù)據(jù)做準備。實現(xiàn)這個功能的是queryanager:bra
14、dastnfig()和queryrker:reeivenfig()。在配置數(shù)據(jù)發(fā)送完畢之后,便是開場發(fā)送查詢數(shù)據(jù),主進程調用queryanager:bradastquery()將查詢數(shù)據(jù)分發(fā)到各個從進程上,從進程接收完之后,將查詢語句存入queryrker:pquery中。結果的指針。主進程與從進程分別調用lseubequery:query(queryanager:pquery,queryanager:pqueryresults0)和lseubequery:query(queryrker:pquery,queryrker:pqueryresult)開場進展查詢工作。圖6.10queryanager類和queryrker類查詢的流程如圖6.11所示,在query()中的實現(xiàn)過程根本與串行程序過程一致。在查詢完畢之后,各個從進程將會把存放著查詢結果的數(shù)組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動應用軟件測試及發(fā)布服務協(xié)議
- 二零二五年度FDA注冊委托代理及產品注冊市場準入服務協(xié)議
- 2025版泵車租賃市場動態(tài)分析與合同調整合同
- 2025版智能交通系統(tǒng)采購咨詢與招標代理服務合同
- 2025年礦山資源居間代理合同(含環(huán)保標準)
- 2025年智能家電系統(tǒng)定制研發(fā)與制造合同
- 二零二五年度網(wǎng)絡安全保密管理服務合同
- 二零二五年度智能機器人研發(fā)與應用合同
- 2025年度防盜門進出口貿易代理服務合同
- 2025年度爆破工程爆破材料供應及技術服務合同
- GB/T 13323-2009光學制圖
- GB 28755-2012簡易升降機安全規(guī)程
- FZ/T 43022-2011莨綢工藝飾品
- 2023年南開經(jīng)濟學考研真題
- 糖化簡介0623課件
- DB3701-T 29-2022附件:智慧中藥房建設與運行規(guī)范
- 大專畢業(yè)論文3000字格式12篇
- 皮部經(jīng)筋推拿技術
- DBJ46-048-2018 海南省建筑工程防水技術標準
- 房地產湯臣樓書
- 全國行政區(qū)域身份證代碼表(EXCEL版)
評論
0/150
提交評論