呂曉東
分布式網(wǎng)絡(luò)中數(shù)據(jù)庫中間件將其與平臺的一些細節(jié)進行封裝,使得應(yīng)用程序開發(fā)不必過多的考慮數(shù)據(jù)庫底層的一些細節(jié),而且對底層配置進行更改時,可不修改應(yīng)用程序代碼,提高程序編寫效率與質(zhì)量。因此,加強分布式網(wǎng)絡(luò)中數(shù)據(jù)庫中間件技術(shù)的研究具有重要意義。本文對數(shù)據(jù)庫中間件及數(shù)據(jù)分布方法進行探討,并以JDBC中間件技術(shù)為例進行探討,以供參考。
【關(guān)鍵詞】分布式網(wǎng)絡(luò) 數(shù)據(jù)庫 中間件技術(shù) 研究
中間件應(yīng)用于軟件開發(fā)中不僅有助于提高軟件的可移植性,而且進一步提高操作系統(tǒng)適應(yīng)分布式網(wǎng)絡(luò)性能。中間件包括事務(wù)處理中間件、面向消息中間件、數(shù)據(jù)庫中間件等多種類型,其中數(shù)據(jù)庫中間件可從結(jié)構(gòu)不同的數(shù)據(jù)庫中讀取數(shù)據(jù),使得異構(gòu)平臺的數(shù)據(jù)庫訪問問題得以順利解決。
1 數(shù)據(jù)庫中間件
近年來我國軟件產(chǎn)業(yè)發(fā)展迅速,數(shù)據(jù)庫中間件技術(shù)因此得到廣泛應(yīng)用。目前來看,數(shù)據(jù)庫中間件主要包括JDBC、EJB、CORBA等,其中JDBC由Java語言編寫,可實現(xiàn)對不同結(jié)構(gòu)數(shù)據(jù)庫的訪問。JDBC包括JDBCQ驅(qū)動應(yīng)用程序編程接口、應(yīng)用程序編程接口兩層,后者對Java中的接口與類進行定義,允許使用小應(yīng)用程序?qū)崿F(xiàn)數(shù)據(jù)庫的連接,而且可實現(xiàn)公用與本地數(shù)據(jù)庫的同時連接。EJB可實現(xiàn)事務(wù)處理、數(shù)據(jù)存儲、生命周期等業(yè)務(wù)邏輯,在具有處理事務(wù)能力的同時,為程序的進一步擴展與開發(fā)提供較大便利。CORBA適合應(yīng)用在分布式網(wǎng)絡(luò)中,支持軟件、硬件間互操作。由于其由標(biāo)準的接口、語言、協(xié)議構(gòu)成,使用期間可不受平臺限制,使得其具備互操作、易移植、可重用優(yōu)點。
2 數(shù)據(jù)分布方法
數(shù)據(jù)庫中間件可無差別的訪問分布式網(wǎng)絡(luò)中的異構(gòu)數(shù)據(jù)庫,而這一功能的實現(xiàn)建立在對數(shù)據(jù)分布式存儲深入了解的基礎(chǔ)上。分析傳統(tǒng)分布方法可知,其包括同步復(fù)制技術(shù)、分段技術(shù)以及單表子系統(tǒng)技術(shù),其中同步復(fù)制技術(shù)在分布式系統(tǒng)中具有較高應(yīng)用率,通過互相復(fù)制服務(wù)器數(shù)據(jù),實現(xiàn)系統(tǒng)穩(wěn)定性的提高。該技術(shù)雖然使得查詢速度、系統(tǒng)性能得到明顯提高,但會導(dǎo)致更新速度的變慢,增加時間成本。分段技術(shù)在參考分頁大小的基礎(chǔ)上進行查詢,使得數(shù)據(jù)處理速度以及傳輸數(shù)據(jù)能力明顯提高。單表子系統(tǒng)技術(shù)使得不同子系統(tǒng)可存儲多個單表,但當(dāng)數(shù)據(jù)規(guī)模比較大時,記錄數(shù)增長迅速,降低數(shù)據(jù)庫運行效率的同時,使得維護數(shù)據(jù)庫的成本增加。
3 JDBC中間件技術(shù)
3.1 JDBC接口技術(shù)
JDBC將訪問數(shù)據(jù)庫接口進行統(tǒng)一,應(yīng)用者可忽略數(shù)據(jù)庫底層間的不同而直接用于不同類數(shù)據(jù)庫的訪問。訪問行為的實現(xiàn)需JDBC驅(qū)動程序支撐,不過使用者不用考慮驅(qū)動程序的具體實現(xiàn)細節(jié)。正是因為JDBC具備上述優(yōu)點,使得其在數(shù)據(jù)庫程序開發(fā)中應(yīng)用廣泛。
3.2 JDBC體系結(jié)構(gòu)
JDBC體系主要由Database層、JDBC Driver Manager、應(yīng)用程序編程接口、Java Application層構(gòu)成,不同層有著自身的職責(zé),彼此之間相互協(xié)作。其中Database層由數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫信息構(gòu)成,在不經(jīng)驅(qū)動程序?qū)φ埱筮M行轉(zhuǎn)化錢,其無法理解應(yīng)用程序發(fā)送的有關(guān)數(shù)據(jù)處理請求。JDBC Driver Manager層負責(zé)驅(qū)動程序的管理,即,依據(jù)不同類型的數(shù)據(jù)庫,確定對應(yīng)的驅(qū)動程序。在此基礎(chǔ)上應(yīng)用程序編程接口便可操作數(shù)據(jù)庫中的數(shù)據(jù)。Java Application層職責(zé)在于響應(yīng)接口和用戶操作的響應(yīng),并實現(xiàn)對JDBC的調(diào)用。
3.3 JDBC驅(qū)動程序
依據(jù)使用方法、特性及訪問方式可將JDBC驅(qū)動程序分為四種類型,即,純Java JDBC驅(qū)動程序、網(wǎng)絡(luò)協(xié)議驅(qū)動程序、部分Java本地JDBC應(yīng)用程序接口、JDBC-ODBC橋驅(qū)動程序。其中純Java JDBC驅(qū)動程序之中存在訪問不同數(shù)據(jù)路的協(xié)議,在這些協(xié)議支持下,客戶端可直接連接數(shù)據(jù)路,完成一些操作。網(wǎng)絡(luò)協(xié)議驅(qū)動程序工作時需要借助其他中間件,實現(xiàn)對數(shù)據(jù)庫信息的讀取操作。該驅(qū)動程序?qū)嶋H工作時,中間件接收數(shù)據(jù)路訪問請求,轉(zhuǎn)化成被數(shù)據(jù)路識別的指令,而后數(shù)據(jù)庫才會響應(yīng)相關(guān)的查詢操作,并依據(jù)原路將結(jié)果返回。部分Java本地JDBC應(yīng)用程序接口由部分Java程序與部分本地代碼構(gòu)成。實際應(yīng)用時為能實現(xiàn)對不同數(shù)據(jù)庫的訪問,需要將對應(yīng)的代碼庫加載進去,并采用對應(yīng)的統(tǒng)一資源定位符,給驅(qū)動程序命名不同的名稱。當(dāng)為Oracle數(shù)據(jù)庫時,其主要代碼為:
Class.forName(“oracle.jdbc.driver.oracleDriver”);
Connection
con=DriverManager.getConnection(“jdbc:oracle.thin:@localhost:1521:Student”,“scott”,“tiger”);
JDBC-ODBC橋驅(qū)動程序由ODBC驅(qū)動程序、JDBC-ODBC橋組成,借助與ODBC的連接,實現(xiàn)與數(shù)據(jù)路的連接。
3.4 JDBC連接池
數(shù)據(jù)庫實際應(yīng)用過程中會遇到大量訪問的情況,如想提高大量訪問情況下的訪問效率,需要配置連接池,以指向不同類型的數(shù)據(jù)庫。JDBC連接池對數(shù)據(jù)庫的基本信息進行了定義,涉及數(shù)據(jù)超時、連接數(shù)量等參數(shù)。
連接池由數(shù)據(jù)庫操作、連接池以及線程池構(gòu)成,其中數(shù)據(jù)庫操作的功能為執(zhí)行不同查詢語句、實現(xiàn)查詢結(jié)果的返回,并對查詢發(fā)生的異常進行處理。連接池的作用在于管理、建立以及釋放連接。連接池中一般會存儲之前已建立完成的連接,當(dāng)查詢操作經(jīng)由線程池調(diào)度進行連接時,連接池會提供一個連接,用于完成數(shù)據(jù)庫的連接。當(dāng)查詢操作完成后,將連接重新放回連接池即可。線程池的作用在于確保線程資源的合理應(yīng)用,并統(tǒng)一進行線程調(diào)度,用于響應(yīng)不同查詢請求,并確保線程分配的合理性。
4 總結(jié)
分布式網(wǎng)絡(luò)中數(shù)據(jù)庫中間件技術(shù)的應(yīng)用,降低程序開發(fā)難度,提高程序開發(fā)效率,尤其增強了軟件的可擴展性與可移植性,因此,加強在數(shù)據(jù)庫中間件方面的研究,對提高軟件開發(fā)水平具有重要意義,應(yīng)引起足夠的重視。
參考文獻
[1]田淼.分布式異構(gòu)數(shù)據(jù)庫同步中間件的設(shè)計與實現(xiàn)[D].西安電子科技大學(xué),2012.
[2]喬洪宇.分布式數(shù)據(jù)庫中間件驅(qū)動模塊的設(shè)計與實現(xiàn)[D].哈爾濱工業(yè)大學(xué),2014.
[3]蘇文偉.分布式網(wǎng)絡(luò)中數(shù)據(jù)庫中間件技術(shù)探討[J].電子技術(shù)與軟件工程,2016,02:196.
作者單位
大慶油田井下作業(yè)分公司信息中心數(shù)據(jù)庫室 黑龍江大慶市 163000