• 沒有找到結果。

第四章 系統實作與展示

4.3 測詴數據

4.3.2. 建立 index 測詴數據

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

表 4.1 沒建 index 的測詴數據表

4.3.2. 建立 index 測詴數據

根據上 4.2 節 chunk table 效能評估說明,將 chunk table 的 metadata 建立 index 理論上是可以增加 SQL 執行的時間,所以,我們另外將 chunk table 的 metadata 建立 index,再用相同的 SQL 測詴語句來測量是否可以改善沒有建立 index 的 chunk table 及 SQL 語句自動轉換機制影響系統執行時間,目的在於量測 chunk table metadata 建立 index 對 SQL 語句執行時間的影響結果。

實際測詴以租戶數 100、每個租戶 5 個資料表、每個資料表 5 個欄位、每個 資料表 100 筆資料列,的資料量來測詴,每個量測項目共執行 10 次,chunk 數 量為 2,去除最高與最低量測結果算出平均 SQL 語句執行時間。實際測詴時,

分 3 種情境測詴:使用 private table 多租戶 schema 設計方式、使用 chunk table 多租戶 schema 設計方式並將 metadata 建立 index 及有使用 Aspect 並以 chunk table 為資料庫設計方式且將 metadata 建立 index 的 SQL 與具自動轉換機制。以 上 3 種情境來測詴系統執行時間的延遲結果,並與前一小節沒有建立 metadata index 的執行結果比較,藉此實驗將 metadata 建立 index 是否可以改善系統執行 效率。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4.31 有建 index 的測詴數據圖

將 chunk table 的 metadata 欄位建立 index 後的實驗結果如圖 4.31,結果出乎 我們預料,chunk table 建立 metadata index 之後在 SELECT 的陳述式表現相當 出色,甚至比 private table 的 SELECT 表現還要出色,大大的降低了查詢的時 間,而在 INSERT、UPDATE、DELETE 等陳述式執行結果表現上,雖然 UPDATE 還是比 private table 增加了執行時間,但卻比起未建立 metadata index 時大幅縮 短了 30 倍的執行時間,大幅改善了 chunk table 的執行效能。而 INSERT 的效能 表現上是與未建立 index 時的 chunk table 差不多,DELETE 的部分則是與 private table 的執行效能差不多。整體而言,都比起我們所預期的大幅改善 chunk table 的執行效能。

詳細實驗數據如表 4.2,使用我們自動轉換機制搭配 chunk table metadata 建 立 index 的結果,雖然都會增加程式執行的時間,但卻也比起未建 index 的 chunk table 整體表現快了約將近 10 倍的執行效率,對本研究應用到實務上的幫助很 大。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

表 4.2 有建 index 的測詴數據表

上述數據評估,使用 chunk table 為多租戶資料庫 schema 設計方法是可行 的,建立 meta data index 後不但讓執行時間表現優於 private table(除了 INSERT 及 UPDATE 外),也可以因為所有租戶共用資料表而大幅提高設備資源使用率。

透過本研究工具,更可用 private table 方式開發程式,以 chunk table 方式實作,

大幅縮短多租戶應用程式開發成本。

戶一資料表(private table)的資料庫架構轉換為共享資料表(chunk talbe)架構的 SQL 語句轉換機制。另外也利用 AOP 幫助我們將語句轉換機制結合到 JDBC 驅 動程式,達到自動化轉換的目的,將低程式開發人員的工作負擔。

第一階段整理歸納 SQL 語法,將如何由 Private Table 資料綱要設計方法轉 換成 Chunk Table 資料綱要的步驟系統化,並與 Schema-Mapping table 相互搭配,

整理歸納 DDL 與 DML 兩個部分 SQL 語句改寫機制的轉換規則,並實作出具 SQL

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

5.2 未來發展

多租戶技術的發展目前也面臨一些的技術上的難點,包括資料隔離、客製化組 態、架構擴展和效能客製化。我們提出幾個未來可以繼續研究的工作,加強多租 戶應用系統的功能。

1. 將本研究提出的 SQL 語句自動轉換機制實際建置到一套雲端多租戶應 用系統,期望能增加雲端多租戶應用系統的發展。

2. 共享資料表的多租戶系統架構下,租戶們共用資源,如何更加強資料的 隔離性、隱密性及安全性的議題探討,確實將不同租戶間的資料隔離讓 彼此間的資料不會受到干擾,期待未來能有更好的方法提出。

3. 共用資料表架構的執行效能問題,當租戶數量增加時,如何在共享資料 表的狀況下提升資料查詢及維護的效能,使用動態負載平衡的方式會比 一開始就分配好固定的資源的方式能夠有效的利用資源,避免造成資源 浪費的問題。如何在共用軟硬體設備的環境下達到動態資源分配甚至是 依照客戶需求客製化分配資源,也將會是一個研究的議題。

【1】 Stefan Aulbach, Torsten Grust, Dean Jacobs, Alfons Kemper, Jan Rittinger, June 2008, Multi-Tenant Databases for Software as a Service: Schema-Mapping Techniques, ACM SIGMOD.

【2】 Frederick Chong & Gianpaolo Carraro. 2006. Architecture Strategies for Catching the Long Tail. Microsoft Corporation.

【3】 Multi-Tenant Data Architecture

http://msdn.microsoft.com/en-us/library/aa479086.aspx

【4】 Berthold Reinwald, 2010, Multitenancy,IBM Almaden Research Center, UW MSR Summer Institute.

【5】 張妏瑛,「應用剖面技術實作資料庫存取應用之偵錯工具」,國立政治大學

【9】 The AspectJ Project

http://eclipse.org/aspectj/

【10】Eclipse

http://www.eclipse.org/

【11】Java API 1.6

http://docs.oracle.com/javase/6/docs/api/

【12】JSqlParser parses

http://jsqlparser.sourceforge.net/

【13】Java Compiler Compiler (JavaCC) - The Java Parser Generator http://javacc.java.net/

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

【14】SQL 語法解釋器 jsqlparser

http://www.iteye.com/topic/968200