偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序種類及選擇

開(kāi)發(fā) 后端 數(shù)據(jù)庫(kù)運(yùn)維
JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序主要有四個(gè)類型。這個(gè)四個(gè)類型的驅(qū)動(dòng)程序各有各的特點(diǎn),并不能夠說(shuō)哪一個(gè)最好。數(shù)據(jù)庫(kù)管理員需要結(jié)合企業(yè)的實(shí)際情況,才能夠選擇一個(gè)合適的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型。

現(xiàn)在目前數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序市場(chǎng)上,JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序主要有四個(gè)類型。這個(gè)四個(gè)類型的驅(qū)動(dòng)程序各有各的特點(diǎn),并不能夠說(shuō)哪一個(gè)最好。數(shù)據(jù)庫(kù)管理員需要結(jié)合企業(yè)的實(shí)際情況,才能夠選擇一個(gè)合適的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型。下面筆者就JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,來(lái)談?wù)勥@個(gè)四個(gè)類型的JDBC各具有什么樣的特點(diǎn),適合在什么樣的情況下使用。

類型一:廠商提供專屬JDBC驅(qū)動(dòng)程序

有些廠商如Oracle或者SYBASE,這些數(shù)據(jù)庫(kù)廠商他們自己開(kāi)發(fā)了一些JDBC驅(qū)動(dòng)程序。這個(gè)類型的JDBC驅(qū)動(dòng)程序會(huì)將JDBC調(diào)用直接轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫(kù)本身使用的通信協(xié)議。換一句話說(shuō),應(yīng)用程序客戶端可以直接與數(shù)據(jù)庫(kù)創(chuàng)建連接。這種類型的JDBC驅(qū)動(dòng)程序主要有如下幾個(gè)特點(diǎn)。

一是JDBC驅(qū)動(dòng)程序是數(shù)據(jù)庫(kù)廠商提供的,所以應(yīng)用程序可以直接跟數(shù)據(jù)庫(kù)進(jìn)行連接,其執(zhí)行性能要比其他類型的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序要好,比ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序也要好。目前已經(jīng)有很多數(shù)據(jù)庫(kù)廠商提供專屬的JDBC驅(qū)動(dòng)程序,如甲骨文公司的Oracle數(shù)據(jù)庫(kù)產(chǎn)品,如微軟公司的SQL Server等等。

二是往往這類JDBC驅(qū)動(dòng)程序全部是由JAVA程序開(kāi)發(fā)的,而不是有C語(yǔ)言開(kāi)發(fā)的。為此這類驅(qū)動(dòng)程序往往跨平臺(tái)的性能比較好,可以在多個(gè)操作系統(tǒng)平臺(tái)上運(yùn)行。為此如果企業(yè)在Linux等非微軟的操作系統(tǒng)上部署數(shù)據(jù)庫(kù)應(yīng)用,那么采用這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是一個(gè)明智的選擇。

三是這類驅(qū)動(dòng)程序缺乏彈性。由于是數(shù)據(jù)庫(kù)廠商自己提供的專屬驅(qū)動(dòng)程序,為此往往只適用于自己的數(shù)據(jù)庫(kù)系統(tǒng),甚至只適合某個(gè)版本的數(shù)據(jù)庫(kù)系統(tǒng)。如果后臺(tái)數(shù)據(jù)庫(kù)換了一個(gè)或者版本升級(jí)了,則就有可能需要更換數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。這一個(gè)缺陷,是限制這個(gè)類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序應(yīng)用的最大障礙之一。不過(guò)根據(jù)筆者的經(jīng)驗(yàn),如果企業(yè)的數(shù)據(jù)庫(kù)應(yīng)用主要是在企業(yè)局域網(wǎng)內(nèi)部使用,則這個(gè)問(wèn)題不會(huì)很大。因?yàn)榇藭r(shí)企業(yè)往往不會(huì)隨意更換數(shù)據(jù)庫(kù)系統(tǒng),或者對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)。為此也就會(huì)不會(huì)因?yàn)檫@個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序彈性不好而給日后的工作帶來(lái)麻煩。

為此筆者建議,如果企業(yè)的數(shù)據(jù)庫(kù)應(yīng)用相對(duì)穩(wěn)定,那么在數(shù)據(jù)庫(kù)開(kāi)發(fā)或者部署的時(shí)候,最好使用廠商提供的專屬JDBC驅(qū)動(dòng)程序。因?yàn)檫@個(gè)類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序其與數(shù)據(jù)庫(kù)之間的連接最直接,其執(zhí)行性能最好。不過(guò)其前提是數(shù)據(jù)庫(kù)廠商提供了這種類型的JDBC驅(qū)動(dòng)程序。據(jù)筆者了解,像開(kāi)源的MySQL數(shù)據(jù)庫(kù)好像還沒(méi)有提供專屬的JDBC驅(qū)動(dòng)程序。如果數(shù)據(jù)庫(kù)管理員在MySQL數(shù)據(jù)庫(kù)平臺(tái)上部署應(yīng)用的話,則即使想采用專屬JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序也是行不通的。此時(shí)可能管理員要采用其他類型的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。

類型二:三層式架構(gòu)的JDBC驅(qū)動(dòng)程序。

這種三層式架構(gòu)的JDBC驅(qū)動(dòng)程序主要采用間接連接方式來(lái)連接數(shù)據(jù)庫(kù)。首先JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序會(huì)先將JDBC函數(shù)調(diào)用翻譯成與數(shù)據(jù)庫(kù)無(wú)關(guān)的網(wǎng)絡(luò)通信協(xié)議。其次由一個(gè)叫做中介層服務(wù)器的部件會(huì)充當(dāng)翻譯家的角色,會(huì)對(duì)這些報(bào)文進(jìn)行翻譯。最后JDBC才把這部分內(nèi)容轉(zhuǎn)換成相對(duì)應(yīng)的關(guān)系型數(shù)據(jù)庫(kù)通信協(xié)議。也就是說(shuō),在客戶端與數(shù)據(jù)庫(kù)服務(wù)器之間有一個(gè)中介服務(wù)器的角色,客戶端與服務(wù)器之間的通信需要通過(guò)這個(gè)中介服務(wù)器來(lái)進(jìn)行。

這個(gè)類型的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型有如下幾個(gè)特點(diǎn)。

一是提供了比較好的擴(kuò)展性。如當(dāng)某些原因下需要更換后臺(tái)數(shù)據(jù)庫(kù)的時(shí)候,只需要調(diào)整中介層與數(shù)據(jù)庫(kù)之間的JDBC驅(qū)動(dòng)程序即可。而對(duì)于前端的應(yīng)用程序的負(fù)面影響可以降至到最低。在大部分情況下,前端的應(yīng)用程序基本上不需要調(diào)整;有些只需要重新指定所采用的后臺(tái)數(shù)據(jù)庫(kù)即可。

二是這個(gè)JDBC驅(qū)動(dòng)程序也是百分之百利用JAVA語(yǔ)言進(jìn)行編寫的。為此如果采用的應(yīng)用程序開(kāi)發(fā)平臺(tái)也是JAVA的話,那么無(wú)疑他們之間的兼容性會(huì)很好。所以如果采用的是JDeveloper等JAVA開(kāi)發(fā)平臺(tái)的話,這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序能夠?yàn)閿?shù)據(jù)庫(kù)開(kāi)發(fā)人員提供比較穩(wěn)定的開(kāi)發(fā)平臺(tái)。

三是在性能上,其不甚理想。由于采用三層式架構(gòu)的JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,其需要通過(guò)中介服務(wù)器角色來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。雖然這種架構(gòu)提供了比較高的擴(kuò)展性,但是其執(zhí)行性能的話就受到了影響。在同等條件下,這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序其執(zhí)行性能沒(méi)有專屬JDBC驅(qū)動(dòng)程序好。魚(yú)與熊掌不能夠兼得,數(shù)據(jù)庫(kù)開(kāi)發(fā)人員需要在性能與擴(kuò)展性上做出一個(gè)艱難的抉擇。

類型三:客戶端函數(shù)庫(kù)類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。

通常情況下數(shù)據(jù)庫(kù)軟件會(huì)提供一種叫做客戶端函數(shù)庫(kù)的組件。這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序就是建立在這個(gè)函數(shù)庫(kù)之上的。此時(shí)系統(tǒng)會(huì)先將JDBC調(diào)用轉(zhuǎn)換成數(shù)據(jù)庫(kù)的客戶端函數(shù)庫(kù)對(duì)應(yīng)的應(yīng)用程序接口(這個(gè)步驟在客戶端上完成),然后再同數(shù)據(jù)庫(kù)進(jìn)行連接。這種方式跟三層式架構(gòu)的JDBC驅(qū)動(dòng)程序不同。前者是直接連接數(shù)據(jù)庫(kù)的,而后者則是以間接的方式(中間有中介服務(wù)器角色)來(lái)連接數(shù)據(jù)庫(kù)。對(duì)于這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序有如下幾個(gè)特點(diǎn)。

一是創(chuàng)建于各數(shù)據(jù)庫(kù)特有的客戶端函數(shù)庫(kù)之上,為此其執(zhí)行性能比較好。通常情況下各個(gè)數(shù)據(jù)庫(kù)廠商會(huì)根據(jù)自己數(shù)據(jù)庫(kù)軟件的特點(diǎn),開(kāi)發(fā)客戶端函數(shù)庫(kù)。他們?cè)陂_(kāi)發(fā)這個(gè)函數(shù)庫(kù)的同時(shí),本身就考慮到了性能與優(yōu)化方面的問(wèn)題。而且,這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序又是直接連接數(shù)據(jù)庫(kù)的,為此從性能上考慮,其要比三層式架構(gòu)的JDBC驅(qū)動(dòng)程序要好的多。但是反過(guò)來(lái)說(shuō),其執(zhí)行性能在同等條件下仍然趕不上第一種專屬JDBC驅(qū)動(dòng)程序。

二是其兼容性差。如果數(shù)據(jù)庫(kù)管理員采用這個(gè)類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的話,需要在客戶端上安裝特定的軟件(其中包含有客戶端函數(shù)庫(kù))。而且這個(gè)軟件往往是數(shù)據(jù)庫(kù)廠商提供的。不同廠商的數(shù)據(jù)庫(kù)軟件其客戶端函數(shù)庫(kù)是不同的。為此如果需要更換數(shù)據(jù)庫(kù)系統(tǒng)的話,此時(shí)需要同時(shí)更新各個(gè)客戶端的函數(shù)庫(kù)。當(dāng)數(shù)據(jù)庫(kù)用戶比較多的時(shí)候,這是非常耗時(shí)的一項(xiàng)工作。

三是其不是百分之百的利用JAVA語(yǔ)言編寫。由于客戶端函數(shù)庫(kù)中的內(nèi)容很多都是跟數(shù)據(jù)庫(kù)的編程平臺(tái)相關(guān)。為此這種類型的JDBC驅(qū)動(dòng)程序不可能百分之百都有JAVA語(yǔ)言來(lái)實(shí)現(xiàn)。由于這方面的限制,為此其跟JAVA應(yīng)用程序開(kāi)發(fā)平臺(tái)的兼容性就沒(méi)有以上兩個(gè)類型的驅(qū)動(dòng)程序那么好了。而且能夠提供這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的廠商也不是很多。如好像微軟的SQL SERVER等數(shù)據(jù)庫(kù)系統(tǒng)也沒(méi)有提供這方面的JDBC驅(qū)動(dòng)程序。所以從應(yīng)用層面考慮,這種數(shù)據(jù)庫(kù)驅(qū)動(dòng)類型是使用的最少的。

類型四:橋接型的JDBC驅(qū)動(dòng)程序。

有些應(yīng)用系統(tǒng),以前是在ODBC數(shù)據(jù)庫(kù)啟動(dòng)程序上面開(kāi)發(fā)的;而現(xiàn)在數(shù)據(jù)庫(kù)管理想在JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序開(kāi)發(fā)應(yīng)用程序,那該怎么辦呢?數(shù)據(jù)庫(kù)開(kāi)發(fā)人員是否需要推翻原有的架構(gòu)進(jìn)行重新開(kāi)發(fā)呢?答案是否定的,也是肯定的。這個(gè)答案或許有點(diǎn)前后矛盾的感覺(jué)。否定說(shuō)的是數(shù)據(jù)庫(kù)管理員不用全部推翻原先的架構(gòu),而是可以原先的架構(gòu)跟新的架構(gòu)并存。肯定的是為了后續(xù)應(yīng)用程序性能與穩(wěn)定性的考慮,在合適的時(shí)候數(shù)據(jù)庫(kù)開(kāi)發(fā)人員最好能夠慢慢的對(duì)原先的開(kāi)發(fā)架構(gòu)進(jìn)行調(diào)整。不過(guò)在這個(gè)調(diào)整的過(guò)程中,新舊兩個(gè)開(kāi)發(fā)架構(gòu)是可以同時(shí)采用的。另外有些數(shù)據(jù)庫(kù)系統(tǒng)可能沒(méi)有提供以上三種類型的任何一種JDBC數(shù)據(jù)庫(kù)啟動(dòng)程序。如使用用戶比較多的ACCESS數(shù)據(jù)庫(kù)系統(tǒng)。如果JAVA程序開(kāi)發(fā)人員需要在這個(gè)數(shù)據(jù)庫(kù)上開(kāi)發(fā)應(yīng)用軟件的話,可能就需要用到這個(gè)橋接型的JDBC驅(qū)動(dòng)程序。這個(gè)類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序有如下幾個(gè)特點(diǎn)。

一是其保留了ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,把相關(guān)的SQL語(yǔ)句通過(guò)JDBC驅(qū)動(dòng)程序轉(zhuǎn)換為ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序可以理解的語(yǔ)句。應(yīng)用這個(gè)數(shù)據(jù)類型的時(shí)候,數(shù)據(jù)庫(kù)管理員不用考慮數(shù)據(jù)庫(kù)底層的連接問(wèn)題。同時(shí)如果應(yīng)用系統(tǒng)原先是在ODBC的架構(gòu)下開(kāi)發(fā)的,還可以保留原先的架構(gòu)。

二是其維護(hù)比其他類型的驅(qū)動(dòng)程序都要麻煩與復(fù)雜。一方面由于這種類型的驅(qū)動(dòng)程序仍然需要用到ODBC,所以在客戶端上還需要部署有ODBC驅(qū)動(dòng)程序。另一方面,系統(tǒng)先調(diào)用JDBC驅(qū)動(dòng)程序;然后再通過(guò)JDBC驅(qū)動(dòng)程序調(diào)用ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序;然后再連接到數(shù)據(jù)庫(kù)。中間經(jīng)過(guò)了多個(gè)環(huán)節(jié)。如何其中任何一個(gè)環(huán)節(jié)出現(xiàn)了問(wèn)題,都可能導(dǎo)致數(shù)據(jù)庫(kù)連接的故障。萬(wàn)一真的出現(xiàn)了問(wèn)題的話,那么數(shù)據(jù)庫(kù)管理員查找問(wèn)題就會(huì)變得復(fù)雜的多。

總之筆者建議數(shù)據(jù)庫(kù)管理員最好采用第一、二種數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序;如果這兩種驅(qū)動(dòng)程序不支持的話,那么就采用第三種驅(qū)動(dòng)程序。對(duì)于第一種驅(qū)動(dòng)程序數(shù)據(jù)庫(kù)管理員要慎用,除非數(shù)據(jù)庫(kù)管理員對(duì)自己的能力相當(dāng)?shù)淖孕拧?/P>

 

【編輯推薦】

  1. JDBC技術(shù)發(fā)展歷程以及技術(shù)概覽
  2. JDBC與JSP簡(jiǎn)單模擬MVC三層架構(gòu)
  3. 在JDBC設(shè)計(jì)中加速JSP訪問(wèn)數(shù)據(jù)庫(kù)
責(zé)任編輯:佚名 來(lái)源: IT專家網(wǎng)
相關(guān)推薦

2011-03-17 14:19:23

JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序

2009-07-06 18:17:46

JDBC驅(qū)動(dòng)程序

2009-06-15 14:18:00

netbeans配置JDBC驅(qū)動(dòng)程序

2009-07-20 18:01:38

Oracle JDBC

2009-07-15 15:30:12

MyEclipse J

2009-07-16 13:26:43

DB2 JDBC驅(qū)動(dòng)

2009-07-10 17:13:29

Jython的安裝JDBC驅(qū)動(dòng)程序Jython

2009-09-04 10:10:33

Visual Basi

2009-07-08 18:20:21

JDBC驅(qū)動(dòng)

2011-01-10 18:21:38

linux編寫程序

2017-03-03 08:40:32

2009-08-12 18:20:39

C#事件驅(qū)動(dòng)程序

2010-01-07 13:27:22

Linux驅(qū)動(dòng)程序

2009-07-16 17:22:56

JDBC數(shù)據(jù)庫(kù)編程

2009-07-06 17:23:34

JDBC連接數(shù)據(jù)庫(kù)

2009-07-09 15:41:15

JDBC連接MySQL

2021-12-06 07:47:36

Linux 驅(qū)動(dòng)程序Linux 系統(tǒng)

2013-10-31 16:29:10

Linux內(nèi)核

2019-10-22 15:40:34

Windows 10驅(qū)動(dòng)程序Windows

2009-12-07 09:39:04

Linux設(shè)備驅(qū)動(dòng)硬件通信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)