[摘 要]客戶機(jī)/服務(wù)器兩層結(jié)構(gòu)的模式大大阻礙著系統(tǒng)的發(fā)展,單一的服務(wù)器結(jié)構(gòu)緊密地依賴供應(yīng)商,也難以管理客戶端的機(jī)群,文章就此問(wèn)題展開研究和探討。
[關(guān)鍵詞]數(shù)據(jù)庫(kù) 客戶端 中間件
隨著用戶業(yè)務(wù)需求的增長(zhǎng)以及Intenet/Intranet的普及。傳統(tǒng)兩層C/S模式將以三層C/S模式體系結(jié)構(gòu)取而代之。三層C/S結(jié)構(gòu)是將應(yīng)用從功能劃分成用戶界面層、商務(wù)服務(wù)層和數(shù)據(jù)層,以商務(wù)服務(wù)層為核心,通過(guò)某種形式的中間件來(lái)實(shí)現(xiàn)它的功能。
中間件在客戶機(jī)/服務(wù)器或服務(wù)器/服務(wù)器之間傳送高級(jí)通信,將客戶機(jī)群和服務(wù)器群結(jié)合起來(lái)。其工作流程是:在客戶機(jī)里的應(yīng)用程序需要駐留網(wǎng)上某個(gè)服務(wù)器的數(shù)據(jù)或服務(wù)時(shí)搜索此數(shù)據(jù)的C/S應(yīng)用程序需訪問(wèn)中間件系統(tǒng).該系統(tǒng)將查找數(shù)據(jù)源或服務(wù)。并在發(fā)送應(yīng)用程序請(qǐng)求后重新打包響應(yīng)。將其傳送回應(yīng)用程序。數(shù)據(jù)庫(kù)訪問(wèn)中間件就是實(shí)現(xiàn)這種功能的一種中間件。
一、數(shù)據(jù)庫(kù)中間件的作用
多媒體教學(xué)支撐平臺(tái)系統(tǒng).對(duì)于數(shù)據(jù)庫(kù)的容量和訪問(wèn)能力要求不苛刻.但是它存儲(chǔ)的數(shù)據(jù)類型雜、訪問(wèn)量不固定、后臺(tái)數(shù)據(jù)庫(kù)種類不一、服務(wù)器操作系統(tǒng)各異。因此.這一類數(shù)據(jù)庫(kù)中間件的作用主要是以下一些:
1. 支持常用大型數(shù)據(jù)庫(kù)的各種操作??梢灾С諳RACLE,INFORMIX,SYBASE,MSSQL,DB2,MYSQL等常用數(shù)據(jù)庫(kù),以及JDBC、ODBC接口。更換數(shù)據(jù)庫(kù)只要更換相應(yīng)的驅(qū)動(dòng)就可以,而不需要修改所開發(fā)軟件系統(tǒng)的代碼,方便安全。
2. 提供統(tǒng)一接口。屏蔽數(shù)據(jù)庫(kù)之間的操作差異。
3. 封裝復(fù)雜煩瑣的數(shù)據(jù)庫(kù)應(yīng)用接口和數(shù)據(jù)庫(kù)操作過(guò)程,簡(jiǎn)化應(yīng)用程序的數(shù)據(jù)庫(kù)操作.提高應(yīng)用程序開發(fā)效率。
4. 支持常用的操作系統(tǒng)。如Windows、UNIX、Linux等常見主流操作系統(tǒng)??缙脚_(tái)支持。便于應(yīng)用代碼在各平臺(tái)之間的移植。
二、數(shù)據(jù)庫(kù)中間件的設(shè)計(jì)
客戶端到數(shù)據(jù)連接管理器之間的是邏輯連接,而數(shù)據(jù)庫(kù)到數(shù)據(jù)連接器之間的是物理連接。
數(shù)據(jù)庫(kù)中間件位于客戶端與數(shù)據(jù)庫(kù)之間把二者隔離開來(lái)。中間件與各個(gè)客戶之間的數(shù)據(jù)通訊采用流套接字實(shí)現(xiàn),多個(gè)連接由多個(gè)線程完成,這種并發(fā)的通訊機(jī)制使得訪問(wèn)效率大大提高。中間件與數(shù)據(jù)庫(kù)之間采用JDBC連接,多用戶共享一個(gè)數(shù)據(jù)連接。同樣起到了提高數(shù)據(jù)庫(kù)訪問(wèn)效率的效果。數(shù)據(jù)庫(kù)中間件對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和操作采用SQL語(yǔ)言。
數(shù)據(jù)庫(kù)中間件的核心是數(shù)據(jù)連接管理器,它是一個(gè)服務(wù)程序,連接了客戶端和后臺(tái)數(shù)據(jù)庫(kù)??蛻舳讼蚱浒l(fā)出對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求,由數(shù)據(jù)連接管理器尋找與該數(shù)據(jù)庫(kù)的可用連接,通過(guò)數(shù)據(jù)連接將訪問(wèn)請(qǐng)求傳遞給目標(biāo)數(shù)據(jù)庫(kù)。目標(biāo)數(shù)據(jù)庫(kù)執(zhí)行相應(yīng)的SQL語(yǔ)句,將結(jié)果通過(guò)數(shù)據(jù)連接傳回?cái)?shù)據(jù)連接管理器,再傳回給客戶端。
三、數(shù)據(jù)庫(kù)中間件的實(shí)現(xiàn)方法
根據(jù)數(shù)據(jù)庫(kù)中間件的設(shè)計(jì)思想,在實(shí)現(xiàn)過(guò)程中主要運(yùn)用了下面的關(guān)鍵技術(shù)。
1. JDBC(Java Database Connectivity)。JDBC是一個(gè)通用的SQL數(shù)據(jù)庫(kù)訪問(wèn)框架.它對(duì)于不同的數(shù)據(jù)庫(kù)使用了統(tǒng)一的接口。使用JDBC只需寫一個(gè)數(shù)據(jù)庫(kù)接口。不需要重新編碼就能夠訪問(wèn)任何數(shù)據(jù)源。由于JDBC已經(jīng)得到了各大廠商的認(rèn)可與支持.也為開發(fā)者和用戶提供了一條從WEB服務(wù)器訪問(wèn)數(shù)據(jù)庫(kù)的捷徑。JDBC將進(jìn)一步得以推廣從而最終成為WE B服務(wù)器訪問(wèn)數(shù)據(jù)庫(kù)的事實(shí)標(biāo)準(zhǔn)。所開發(fā)系統(tǒng)中應(yīng)用的數(shù)據(jù)庫(kù)中間件原型就是建立在JI)BC的基礎(chǔ)上。
2. 流套接字(Stream Socket )。TCP協(xié)議提供了一條可靠的點(diǎn)對(duì)點(diǎn)通信通道,套接字是在網(wǎng)絡(luò)上運(yùn)行的兩個(gè)程序之間的雙向通信鏈路的一個(gè)端點(diǎn)。對(duì)應(yīng)于TCP的套接字稱為流套接字.它是面向連接的。服務(wù)器應(yīng)用程序偵聽特定端口,等待來(lái)自客戶的連接請(qǐng)求。當(dāng)一個(gè)連接請(qǐng)求到達(dá)時(shí),客戶與服務(wù)器之間建立一條專用連接,它們就在這條連接上通信。在連接過(guò)程中??蛻舯环峙湟粋€(gè)本地端口號(hào),并將一個(gè)套接字綁定到這個(gè)端口。客戶通過(guò)向套接字寫入信息以及從套接字中讀出來(lái)自服務(wù)器的信息的方式與服務(wù)器通信。
與此相似,服務(wù)器也獲得一個(gè)新的本地端口號(hào)。服務(wù)器也將一個(gè)套接字綁定到它的本地端口,并通過(guò)讀寫這個(gè)套接字與客戶通信。
3. 多線程技術(shù)。線程是指進(jìn)程中單一順序的控制流。每個(gè)進(jìn)程在任何給定時(shí)刻可能有若干個(gè)線程在運(yùn)行。線程共享進(jìn)程的所有的程序和數(shù)據(jù);線程有自身的運(yùn)行單元:線程有它自己的私有存儲(chǔ)和執(zhí)行環(huán)境,使得服務(wù)器進(jìn)程不隨客戶數(shù)的增加而線性增加。可減少服務(wù)器進(jìn)程的壓力,降低開銷。充分利用CPU的資源。
線程被用來(lái)建立請(qǐng)求驅(qū)動(dòng)的服務(wù)程序。每個(gè)客戶一個(gè)線程。多個(gè)線程可以并發(fā)執(zhí)行.多個(gè)并發(fā)線程對(duì)多個(gè)客戶的并發(fā)請(qǐng)求采取分而治之的措施。從而解決并發(fā)請(qǐng)求的問(wèn)題。多線程的低資源開銷和高運(yùn)行效率。使得它具有廣闊的應(yīng)用前景。多線程技術(shù)在三層客戶機(jī),服務(wù)器模式中應(yīng)用相當(dāng)廣泛。
四、結(jié)論
通過(guò)實(shí)際測(cè)試和應(yīng)用.該數(shù)據(jù)庫(kù)中間件的功能和性能都得到了充分的驗(yàn)證。在數(shù)據(jù)庫(kù)流量一般而且訪問(wèn)頻率比較低的情況下,可以做到及時(shí)準(zhǔn)確地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的查詢和寫入等操作。訪問(wèn)量大的情況下。有可能因?yàn)樽枞脱舆t造成超時(shí)的錯(cuò)誤返回。然而,對(duì)多媒體教學(xué)支撐平臺(tái)系統(tǒng)來(lái)說(shuō),峰值訪問(wèn)的情況少。而且通過(guò)對(duì)數(shù)據(jù)庫(kù)的進(jìn)一步科學(xué)設(shè)計(jì)。采用多層索引等方式??梢詼p少一次性的數(shù)據(jù)操作量,在一定程度上可以避免出現(xiàn)峰值頻繁訪問(wèn)。
針對(duì)多媒體教學(xué)平臺(tái)對(duì)數(shù)據(jù)庫(kù)的容量和訪問(wèn)能力要求不苛刻,對(duì)存儲(chǔ)的數(shù)據(jù)類型雜、訪問(wèn)量不固定、后臺(tái)數(shù)據(jù)庫(kù)種類不一、服務(wù)器操作系統(tǒng)各異所設(shè)計(jì)的數(shù)據(jù)庫(kù)中間件滿足了日常應(yīng)用環(huán)境的訪問(wèn)需求。并在異構(gòu)替換等方面體現(xiàn)了優(yōu)越性。缺點(diǎn)主要在于只能進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫(kù)查詢等操作,還不能進(jìn)行聯(lián)機(jī)事務(wù)處理。安全性、緩沖機(jī)制和連接管理也有待完善。
參考文獻(xiàn):
[ l] Blackfin Embedded Processor bf533 datasheet
[2] ADSP—BF533 Blaekfin Processor Hardware Reference