為了瞭解我們系統的可行性,我們設計了一些實驗來檢驗我們系統的效 能。由於系統是建置在各資料庫之上,因此我們預期系統在處理大量資料時,能 夠維持一個穩定的執行狀態,在一般的運算上,也能夠有著可接受的效率。我們 實驗測試的環境為:
CPU:Intel Pentium4 2.0G Memory:256 Mb
Hard Disk:Maxtor 80Gb OS:Windows XP
Database:Oracle 9.1
5.1 矩陣加法的比較
圖 14 矩陣加法效能比較
圖(14)顯示的是利用 Java 程式執行矩陣加法 10 次,以及利用單一資料 庫的內儲程式來執行矩陣加法10 次,以及將資料分散至兩台資料庫利用內儲程 式各自執行矩陣加法5 次運算的結果比較。在資料量小於 50Mb 時,明顯的 Java
程式相較於資料庫內儲程式的運算有著較高的效能。但是在資料量增加成為 100Mb 後,由於矩陣加法在兩個矩陣相加後,需將結果存至第三個矩陣,所以 程式執行時會需要3 倍的計算空間,已超過了機器的實體記憶體,即使在執行之 前改變Java 執行環境(Java Runtime Environment)的旗標來增加 heap 和 stack 的大 小,但是 Java 程式在單一資料庫做完運算的時間內,仍無法結束運算。相較之 下,雖然資料庫的運算在資料量較小時,需要較多的時間來完成運算,但是在資 料量增加到一定大小後,還能穩定的完成運算。
5.2 矩陣乘法的比較
圖 15 矩陣乘法效能比較
除了矩陣加法之外,我們還測試了更耗費資源的矩陣乘法,其結果如圖(15) 所示。對一個N 維矩陣來說,矩陣乘法中矩陣的每一個位置的值需要經過 N 次 的乘法及N-1 次的加法所獲得,隨著資料量的增加,比起矩陣加法,計算的複雜 度更是可觀。以 1Mb 的資料量來說,Java 程式的實做,矩陣乘法所花費的時間 將近是矩陣加法的100 倍,且當資料量增加到為 50Mb 時,程式執行時會發生超 出記憶體的錯誤而無法執行。然而使用內儲程式執行的矩陣乘法,在執行上所花 的時間並沒有如同Java 程式那般暴增。
其間的差異,經過我們的分析,由於資料庫內儲程式能夠直接對儲存矩陣
的資料表格做存取,且矩陣存放在我們定義的 tbl 表格中,每個位置的值皆有 row_id 與 column_id 來作為資料表的鍵值,而這兩個欄與列的索引在矩陣的運算 上,提供了相當程度的便利,加速了矩陣乘法的運算。當資料量增大時,資料庫 的運算依然保持穩定的效能,並不像一般程式容易造成執行失敗的情形發生。因 此在面對大量的資料且在某些大量計算的情形下,以資料庫來完成運算,會較一 般使用程式來的更加的有效率及穩定。
5.3 資料傳輸的比較
我們建立的環境中,在服務與服務之間,底層訊息傳遞的機制是利用socket 來傳送XML 的訊息,由於各獨立的資料庫能夠將資料輸出成備份格式,並指定 傳入至特定的資料庫上,我們希望檢視我們所利用的資料傳輸的機制,與目前常 用的方法相較之下,是否會造成效能上的負擔。以格網環境為例,資料傳輸的服 務利用了GridFTP 這個通訊協定,而 GridFTP 則是建立在目前通用的 FTP 協定 之上,所以我們使用了socket 與 FTP 來傳輸資料,作了簡單的實驗。
圖 16 資料傳輸效能比較
結果顯示,我們使用socket 來傳遞資料,與在格網環境中使用的 FTP 相較,
資料量增加的情況下,兩者皆有著類似的效能,因此我們的系統在資料傳輸的效 能上,也能保持一個穩定的狀態。
5.4 k-means 程式比較
在我們的系統中提供了利用XML 來完成程序的編寫,並由於我們的系統架 構能夠支持平行程式的運算,所以我們編寫了k-means 的平行程式,希望來比較 在我們系統的環境下將程式平行化並執行,與利用單獨資料庫的內儲程式來完成 運算之間的效能的差別。
圖 17 k-means 比較
由實驗結果可以看出,將資料分散至兩台資料庫上執行所需的時間,與在 單一資料庫上執行的時間相比,並非理想中的二分之一;同樣的,分散至四台資 料庫執行的時間,也大於單一資料庫上執行所需時間的四分之一。分析差異造成 的原因,由於在計算完成後,尚須將結果傳回至主機,且在整個程式的執行過程 中,需要資料的傳遞時間計算在內,以及執行運算的各台機器的狀態不一,在平 行計算後,主程式需要得到每一台運算完的結果,才能繼續程式的執行,因此若 有某台機器的執行速度較慢,則會降低程式整體的執行速度。加上由於在平行 k-means 程式一開始,需要從主機上將運算的資料經由資料庫輸出(Export)、傳 遞、以及資料庫輸入(Import)至各機器上,這個部分也佔去部分執行時間,所以 我們將平行k-means 程式中,一開始傳輸部分資料的時間扣除,單純比較運算之 間的速度差異,實驗結果在圖(18)。
圖 18 平行 k-means 運算比較
整體而言,將運算切割並分散至多台機器上執行,在執行大量運算時,由 於各台機器僅需要處理部分的原始資料,因此在計算時間上能夠有效的減少。相 較於在單一的機器上運作,花費較短的時間而能提供較佳的效能。