国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

高性能Java設(shè)計(jì)與開發(fā)

2019-11-18 12:21:10
字體:
供稿:網(wǎng)友

     ——JDBC 篇(一)
  
  驅(qū)動(dòng)程序的選擇
  
  在企業(yè)級(jí)的java應(yīng)用中,訪問數(shù)據(jù)庫(kù)是一個(gè)必備的環(huán)節(jié)。數(shù)據(jù)庫(kù)作為數(shù)據(jù)資源的集散地,往往位于企業(yè)級(jí)軟件體系的后方,供前方的應(yīng)用程序訪問。在Java技術(shù)的體系中,應(yīng)用程序是通過JDBC(Java Database Connectivity)接口來訪問數(shù)據(jù)庫(kù)的,JDBC支持"建立連接、SQL語句查詢、處理結(jié)果"等基本功能。在應(yīng)用JDBC接口訪問數(shù)據(jù)庫(kù)的過程中,只要根據(jù)規(guī)范來操作,這些功能的實(shí)現(xiàn)不會(huì)出差錯(cuò)。但是,有些時(shí)候進(jìn)行數(shù)據(jù)查詢的效率著實(shí)讓開發(fā)人員懊惱不已,明明根據(jù)規(guī)范編寫的程序,卻得不到預(yù)期的運(yùn)行效果,造成了整個(gè)軟件的執(zhí)行效率不高。
  
  訪問數(shù)據(jù)庫(kù)的性能主要有兩個(gè)因素決定。一是數(shù)據(jù)庫(kù)服務(wù)器本身的性能,如數(shù)據(jù)庫(kù)治理系統(tǒng)、數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì);其二就是與數(shù)據(jù)庫(kù)相對(duì)獨(dú)立的JDBC應(yīng)用編程接口(API)的使用也很大程度上影響著JDBC程序的性能。前一點(diǎn)不屬于我們討論的范圍,我們不做具體論述。
  
  JDBC數(shù)據(jù)庫(kù)訪問機(jī)制:
  
  

   高性能Java設(shè)計(jì)與開發(fā)(圖一)
  圖一
  
  高性能Java設(shè)計(jì)與開發(fā)(圖二)
  圖二
  

  
  · 圖一左邊的分支稱為Type 1驅(qū)動(dòng)模式,即通常由Sun公司提供的JDBC-ODBC橋,加上一個(gè)ODBC驅(qū)動(dòng),它提供了經(jīng)由一種或多種ODBC驅(qū)動(dòng)進(jìn)行訪問的JDBC接口。通常的DBMS都支持微軟提出的ODBC規(guī)范,因此該模式可以普遍使用,非常靈活,具有很好的代碼移植性。 但該模式不適用于high-transaction環(huán)境,也沒有好的支持,并且功能有限。因?yàn)槊看握{(diào)用都要轉(zhuǎn)換成ODBC調(diào)用,所以這種模式與其他模式相比性能最差。因而Type 1僅適用于下載和自動(dòng)安裝Java程序不重要、實(shí)驗(yàn)用途或者沒有其它JDBC驅(qū)動(dòng)可用的情況下,絕不推薦用于生產(chǎn)。
  
  · 圖一右邊的分支成為Type 2驅(qū)動(dòng)模式,類似于JDBC-ODBC橋接器,需要加載到客戶機(jī),卻是一個(gè)部分用Java實(shí)現(xiàn)的驅(qū)動(dòng)接口。使用本地API,它將JDBC調(diào)用轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)(Oracle、Sybase、Informix、DB2等)客戶端接口的調(diào)用。
  
  · 圖二左邊的分支稱為Type 4驅(qū)動(dòng)模式,它一般是數(shù)據(jù)庫(kù)廠商才能實(shí)現(xiàn)的純Java的基于本地協(xié)議的驅(qū)動(dòng),直接調(diào)用DBMS(數(shù)據(jù)庫(kù)治理系統(tǒng))使用的網(wǎng)絡(luò)協(xié)議,對(duì)于企業(yè)內(nèi)部互聯(lián)網(wǎng)來說,是一個(gè)實(shí)用的解決方案。
  
  · 圖二右邊的分支稱為Type 3驅(qū)動(dòng)模式,它同樣是一個(gè)純Java驅(qū)動(dòng),不同于Type 4驅(qū)動(dòng)模式的是基于網(wǎng)絡(luò)協(xié)議。它的機(jī)制是將JDBC調(diào)用轉(zhuǎn)換為中間網(wǎng)絡(luò)協(xié)議,然后轉(zhuǎn)換為DBMS協(xié)議。中間網(wǎng)絡(luò)協(xié)議層起到一個(gè)讀取數(shù)據(jù)庫(kù)的中間件的作用,能夠連接許多類型的數(shù)據(jù)庫(kù),因而是最靈活的JDBC模式。
  
  了解了現(xiàn)有的JDBC驅(qū)動(dòng)類型以后,我們做一下綜合分析:
  
  Type1驅(qū)動(dòng)支持多種數(shù)據(jù)庫(kù)訪問,理論上利用客戶機(jī)本地代碼庫(kù),可以加速數(shù)據(jù)訪問的執(zhí)行,但因?yàn)橐鯦DBC——ODBC轉(zhuǎn)換,相應(yīng)的開銷絕對(duì)大于前者產(chǎn)生的性能提高,因此不可能有好的性能支持。由于多種原因,該類驅(qū)動(dòng)得不到服務(wù)商的好的支持,使其無論性能還是功能都相對(duì)差勁,事實(shí)上該類驅(qū)動(dòng)基本上得不到使用。
  
  Type2驅(qū)動(dòng)類似于Type1,利用了客戶機(jī)本地代碼,雖然不需要將數(shù)據(jù)庫(kù)請(qǐng)求轉(zhuǎn)換成ODBC調(diào)用,但有二進(jìn)制代碼客戶端裝載開銷,不太可能有好的性能。另外,雖然其上層用Java實(shí)現(xiàn),但因?yàn)榕c下層本地代碼邦定緊密,無論是跨平臺(tái)應(yīng)用還是多數(shù)據(jù)庫(kù)支持都很限制。因此不推薦該類型驅(qū)動(dòng)。
  
  Type3驅(qū)動(dòng)是純Java驅(qū)動(dòng),一般由應(yīng)用服務(wù)器提供商集成到應(yīng)用服務(wù)器中,為三層結(jié)構(gòu),能連接許多類型的數(shù)據(jù)庫(kù),非常靈活。看似中間多了一個(gè)環(huán)節(jié),但應(yīng)用服務(wù)器提供這種驅(qū)動(dòng)程序的同時(shí)也提供了很多優(yōu)化的功能,它們一般還會(huì)配套的提供連接池、數(shù)據(jù)緩沖區(qū)、負(fù)載均衡等,所以性能并不差。
  
  Type4驅(qū)動(dòng)也是純Java驅(qū)動(dòng),但其直接訪問數(shù)據(jù)庫(kù)。一般說來,商業(yè)DBMS的提供者往往會(huì)為自己的數(shù)據(jù)庫(kù)提供Type4的JDBC接口。這種模式的優(yōu)勢(shì)在于和數(shù)據(jù)庫(kù)本身結(jié)合比較緊密,而且是純Java的實(shí)現(xiàn),在企業(yè)級(jí)的軟件應(yīng)用中,應(yīng)該是首選。另外,第三方也給于大力支持。例如,對(duì)于Oracle數(shù)據(jù)庫(kù)來說,有Oracle、SilverStream、DataDirect等公司提供這種類型的驅(qū)動(dòng),其性能往往被評(píng)價(jià)為最高效的、最可靠的驅(qū)動(dòng)程序。但偶然也有比較麻煩的情況,例如微軟就不會(huì)提供MS SQL的JDBC接口(至少目前筆者了解的情況是這樣),這時(shí)就需要到Sun的網(wǎng)站(http://industry.java.sun.com/PRodUCts/jdbc/drivers)查找相關(guān)的模式4驅(qū)動(dòng),上面提到的DataDirect公司(http://www.datadirect-technologies.com/jdbc/jdbc.asp)就提供了支持MS SQL的Type4驅(qū)動(dòng),只是你需要支付$購(gòu)買這個(gè)JDBC驅(qū)動(dòng)。
  
  Type3和Type4第三方驅(qū)動(dòng)可能會(huì)提供比數(shù)據(jù)庫(kù)商的驅(qū)動(dòng)更好的性能, 并且能更好的執(zhí)行,究其原因也是顯而易見的,驅(qū)動(dòng)商聚精會(huì)神于驅(qū)動(dòng),數(shù)據(jù)庫(kù)商有更多其他的事情要考慮。
  
  同樣是純Java實(shí)現(xiàn)的Type3,與Type4相比,優(yōu)勢(shì)在于對(duì)多種數(shù)據(jù)庫(kù)的支持,體現(xiàn)了其靈活性。在大型的企業(yè)級(jí)的軟件應(yīng)用中,后臺(tái)數(shù)據(jù)庫(kù)往往不是一個(gè),而且是由不同的廠商支持的。不過,Type3的JDBC驅(qū)動(dòng)往往提供許多企業(yè)級(jí)的特征,例如SSL安全、支持分布式事務(wù)處理和集中治理等,因而會(huì)對(duì)你非凡的用途有很大的幫助。至于其性能,二者相當(dāng)。如何選擇,就看你應(yīng)用的需要了。
  
  綜上所述,假如可能,Type1絕不要用,Type3和Type4由于眾多廠商的支持,有連接池、數(shù)據(jù)緩沖等技術(shù)的使用,性能比Type2和Type1都要好,又都是純Java的實(shí)現(xiàn),屬于首選。
  
  另外普遍反映,對(duì)于Oracle數(shù)據(jù)庫(kù),盡管Oracle說OCI驅(qū)動(dòng)為最佳的客戶端訪問驅(qū)動(dòng),但事實(shí)上Thin驅(qū)動(dòng)程序可以獲得更好的性能。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江口县| 定南县| 大连市| 英超| 陕西省| 阳东县| 益阳市| 额尔古纳市| 吴川市| 积石山| 西盟| 霍林郭勒市| 嘉禾县| 曲靖市| 格尔木市| 潞西市| 饶河县| 福建省| 丹寨县| 普兰县| 桂阳县| 淄博市| 灵武市| 水城县| 满洲里市| 张家港市| 伊吾县| 河间市| 衡东县| 木兰县| 平阳县| 翁源县| 海晏县| 澳门| 灵武市| 鸡泽县| 黄石市| 威信县| 莒南县| 都兰县| 搜索|