張志強,王偉鈞,周利軍,黎忠文
(成都大學 計算機學院,四川 成都 610106)
在文本挖掘領域的研究中,很多學者提出分詞的產生以及新詞的發現都是極其重要的處理過程[1-2].在這些過程中,會產生海量的分詞數據和新詞候選詞數據,對這些海量數據的處理效率極大地影響著整個文本挖掘項目運行的進度.如何提高數據的處理效率是文本挖掘研究的重要問題[3-5].
通常,海量數據一般都存儲在數據庫中,若要進行數據處理,就必須進行數據庫的讀寫操作,由此需要設計相應的數據庫讀寫策略.而采用常規的數據庫讀寫策略實現的處理方式盡管可以完成海量數據的處理,但數據處理的效率較低.為了提高數據庫讀寫的速度和數據處理的效率,本研究對常規的數據庫讀寫策略進行了優化分析,提出并設計了優化后的數據庫讀寫策略,最后利用JAVA 語言實現了該策略.實驗結果表明,優化后的數據庫讀寫策略實現的數據處理速度比常規數據庫讀寫策略實現的數據處理速度更快,從而其數據處理效率更高.
本研究所涉及到的分詞數據處理過程,是在文本挖掘中,從數據庫中讀取分詞數據,根據新詞候選詞的產生算法生成多個新詞候選詞,并將新產生的新詞候選詞寫入數據庫中,為文本挖掘后期的分析處理提供基礎數據.
在分詞數據處理過程中,常規的數據庫讀寫策略實現過程分為4 步驟:①利用JDBC 數據庫訪問接口,建立數據庫訪問連接對象;②利用JDBC 接口的executeQuery 方法執行select 語句完成從數據庫的分詞表中提取分詞數據;③將新產生的新詞候選詞利用JDBC 接口的executeUpdate 方法執行insert語句寫入數據庫中;④關閉數據庫訪問連接,釋放數據庫連接資源.
常規的數據庫讀寫策略在分詞數據處理過程中的關鍵代碼結構如下:


為了提高數據庫讀寫的速度,需要對常規數據庫讀寫策略進行優化設計,對此本研究采用帶連接池數據庫讀寫策略.
1.2.1 連接池.
在每次對數據庫進行讀寫時,都需要建立數據庫連接對象.當頻繁讀寫數據庫時,數據讀寫的效率將會變低.為了提高數據讀寫效率,采用數據庫連接池技術.通過設計數據庫連接池來分配、管理和釋放數據庫連接,連接池允許程序重復使用一個現有的數據庫連接,而不是重新建立一個連接,同時連接池也會釋放空閑時間超過最大空閑時間的數據庫連接,以此避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏,從而能顯著地提高對數據庫讀寫的速度.
本研究設計的連接池實現的原理是在系統初始化的時候,為數據庫連接建立一個“緩沖池",預先在緩沖池中放入一定數量的連接.當用戶需要訪問數據庫時,并非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象.使用完畢后,該連接并不關閉,而是將連接放回連接池中,為下一個請求訪問使用.而連接的建立、斷開都由連接池來管理.同時,可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及連接池中的連接數動態增長等.連接池模型如圖1 所示.

圖1 連接池模型示意圖
1.2.2 帶連接池數據庫讀寫策略的實現.
由于JDBC 接口本身并不提供可以直接使用的連接池API 函數,需要單獨設計連接池.本研究設計了ConnectionPools 連接池類來實現連接池的功能.
連接池類的關鍵代碼結構如下:

帶連接池數據庫讀寫策略在分詞數據處理過程中的關鍵代碼結構如下:

數據處理過程中,數據庫讀寫策略使用的連接是從連接池中獲取,使用完后再放入連接池中,為后面的數據庫讀寫操作繼續使用,因此,每次數據庫讀寫時,并不需要重新建立連接和釋放連接,從而使得數據庫讀寫速度提高,其數據處理效率也得到提高.
為了更進一步提高數據庫的讀寫速度和數據處理效率,本研究在帶連接池數據庫讀寫策略的基礎上又進一步進行了優化.本次優化中,將數據庫寫操作以批處理方式進行,每次完成一批SQL 語句的執行,從而減少了單條SQL 語句執行的資源開銷,又更進一步提高了數據處理的效率.批處理操作實現的關鍵步驟是:每次從新詞候選詞數組中提取候選詞后,動態產生一條insert 語句,該語句用于將候選詞寫入到數據庫的候選詞表中,并將該insert 語句利用JDBC 接口的addBatch 方法添加到批處理操作的集合中,以此類推,直到當批處理集合容納的SQL語句的條數滿足設置的最大容量后,再一次性地提交給數據庫執行.批處理數據庫讀寫策略實現模型如圖2 所示.

圖2 批處理數據庫讀寫策略架構模型示意圖
批處理數據庫讀寫策略在分詞數據處理過程中的關鍵代碼結構如下:

為了比較不同的數據庫讀寫策略對數據處理效率的影響,本研究對常規數據庫讀寫策略、帶連接池數據庫讀寫策略、批處理數據庫讀寫策略分別進行了測試實驗.測試環境中,軟件環境是,后臺數據庫系統采用SQL Sever 2008 R2,數據庫中分詞表的記錄數為2 944 條,操作系統為Windows XP SP3;硬件環境是,CPU 為Intel Core 2 Duo T6570(2.10 GHz),內存4 GB.
本研究設計的連接池類,可以設置連接池中容納的連接個數的最大值,從而動態調整連接池的性能.為了測試連接池最大容量對數據處理效率的影響,將連接池容納的連接個數的最大值分別設置為10、20、30、40、50、60、70、80、90、100,每種設置情況測試10 次.測試的結果如表1 所示.
從表1 的測試的結果可以看出,當連接池中容納的連接個數的最大值設置為40 時,數據處理效率相對最高.
批處理數據庫讀寫策略的優化方案設計中,批處理集合容量(批處理集合中容納的SQL 語句條數)的設置對數據處理效率也有相應的影響,為了測試批處理集合容量對數據處理效率的影響,將批處理集合容量分別設置為100、200、300、400、500、600、700、800、900、1000 進行測試,每種設置測試10 次,其中連接池最大容量設置為40.測試的結果如表2 所示.

表1 連接池的最大容量對數據處理效率的影響

表2 批處理集合容量對數據處理效率的影響
從表2 的測試結果可以看出,當批處理集合容量設置為400 時,數據處理的效率最高.
為了比較不同的數據庫讀寫策略的數據處理效率,本研究對3 種數據庫讀寫策略的數據處理進行了比較測試.每種數據處理方式測試了10 次,其中,帶連接池數據庫讀寫策略的數據處理方式中將連接池容量的最大值設置為40;批處理數據庫讀寫策略的數據處理方式中將批處理集合容量設置為400.測試的結果如表3 所示.

表3 不同數據庫讀寫策略的數據處理效率的比較
從表3 可見,批處理數據庫讀寫策略的數據處理方式無論是數據處理的最優時間值,還是數據處理的平均時間值,其處理時間值都是最小的.由此看見,批處理數據庫讀寫策略的數據處理效率最高.帶連接池數據庫讀寫策略的數據處理效率比常規數據庫讀寫策略的數據處理效率提高約18%,批處理數據庫讀寫策略數據處理效率比常規數據庫讀寫策略的數據處理效率提高約20%.
文本挖掘中,當數據庫存儲的數據量是海量時,為了提高數據處理的效率,設計一種高效的數據庫讀寫策略是非常重要的.本研究設計了帶連接池數據庫讀寫策略和批處理數據庫讀寫策略,通過測試實驗看出其數據處理的效率得到明顯的提高.
[1]孫鐵利,劉延吉.中文分詞技術的研究現狀與困難[J].信息技術,2009,33(7):187-189 +192.
[2]趙偉,戴新宇,尹存燕,等.一種規則與統計相結合的漢語分詞方法[J].計算機應用研究,2004,21(3):23-25.
[3]文必龍,宗文棟.海量并行處理系統的大數據讀寫接口優化研究[J].鄭州輕工業學院學報(自然科學版),2012,27(3):28-30 +48.
[4]孫勝耀,聶利穎.基于數據挖掘的高校學生信息海量數據處理[J].電腦知識與技術,2011,7(24):5823-5825.
[5]賀瑤,王文慶,薛飛.基于云計算的海量數據挖掘研究[J].計算機技術與發展,2013,23(2):69-72.