摘 要:隨著Linux系統(tǒng)廣泛應(yīng)用,數(shù)據(jù)庫的開發(fā)至關(guān)重要。本文主要闡述“Linux+數(shù)據(jù)庫”的開發(fā)模式,用動態(tài)PL/SQL高級數(shù)據(jù)庫程序設(shè)計語言,提出了基于動態(tài)PL/SQL的數(shù)據(jù)庫開發(fā)的兩種模式,對動態(tài)PL/SQL數(shù)據(jù)庫服務(wù)器進(jìn)行了設(shè)計,并給出了客戶端與數(shù)據(jù)庫服務(wù)器的連接方式。這種基于動態(tài)PL/SQL數(shù)據(jù)庫具有良好的安全和跨平臺效果。
關(guān)鍵詞:Linux PL/SQL 數(shù)據(jù)庫
中圖分類號:TP2文獻(xiàn)標(biāo)識碼:A文章編號:1674-098X(2011)04(c)-0015-01
1 概述
Linux是一類Unix計算機(jī)操作系統(tǒng)的統(tǒng)稱。Linux操作系統(tǒng)的內(nèi)核的名字也是“Linux”。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展中最著名的例子。嚴(yán)格來講,Linux這個詞本身只表示Linux內(nèi)核,但在實際上人們已習(xí)慣了用Linux來形容整個基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。Linux得名于計算機(jī)業(yè)余愛好者Linus Torvalds。Linux符合POSIX標(biāo)準(zhǔn),具有多任務(wù)、多用戶、設(shè)備獨立、自由代碼和自由軟件等特點。Linux最具代表性的應(yīng)用是與數(shù)據(jù)庫結(jié)合。隨著數(shù)據(jù)庫技術(shù)的普遍應(yīng)用和Linux操作系統(tǒng)的不斷成熟,很多企業(yè)和網(wǎng)站使用了“Linux+數(shù)據(jù)庫”的模式。Linux與數(shù)據(jù)庫的結(jié)合已成為一種不可逆轉(zhuǎn)的趨勢。
PL/SQL是一種高級數(shù)據(jù)庫程序設(shè)計語言,該語言專用于在各種環(huán)境下對Oracle數(shù)據(jù)庫進(jìn)行訪問[2]。它將第四代語言(SQL)的強大功能和靈活性與第三代語言(C++, Java)的過程結(jié)構(gòu)的優(yōu)勢融為一體。從該語言的名稱可以看出,PL/SQL是在SQL語言中擴(kuò)充了面向過程語言中使用的程序結(jié)構(gòu),如:變量和類型、控制語句、過程和函數(shù)、對象類型和方法。PL/SQL語言實現(xiàn)了過程結(jié)構(gòu)與SQL的無縫集成,從而為用戶提供一種功能強大的結(jié)構(gòu)化程序設(shè)計語言。動態(tài)PL/SQL語句限制更少,許多必須要在編譯時知道的事情在運行時刻之前可以不確定。需要的話,可以將整個SQL語句等到運行時刻再確定。
2 數(shù)據(jù)庫應(yīng)用模式
模式又稱概念模式或邏輯模式,對應(yīng)于概念級。它是由數(shù)據(jù)庫設(shè)計者綜合所有用戶的數(shù)據(jù),按照統(tǒng)一的觀點構(gòu)造的全局邏輯結(jié)構(gòu),是對數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的總體描述,是所有用戶的公共數(shù)據(jù)視圖(全局視圖)。它是由數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)模式描述語言(Data Description Language,DDL)來描述、定義的,體現(xiàn)、反映了數(shù)據(jù)庫系統(tǒng)的整體觀。數(shù)據(jù)庫應(yīng)用程序分為三個部分:用戶界面、應(yīng)用邏輯和數(shù)據(jù)庫。為了編譯并運行一個PL/SQL快,程序員必須將該塊提供給PL/SQL引擎來處理。借助于Oracle公司和其它開發(fā)商提供的開發(fā)工具,PL/SQL可以用于應(yīng)用程序的各個層次。
2.1 客戶端/服務(wù)器模式
在這種模式中,應(yīng)用程序由客戶端和服務(wù)器端兩部分組成??蛻舳素?fù)責(zé)處理用戶界面,而服務(wù)器端管理數(shù)據(jù)庫。通常,PL/SQL引擎駐留在服務(wù)器端,在個別情況下,PL/SQL引擎也可以駐留在客戶端。
服務(wù)器端的PL/SQL:從Oracle6.0版開始,PL/SQL引擎就駐留在數(shù)據(jù)庫服務(wù)器端,這也是PL/SQL引擎的默認(rèn)位置。由于數(shù)據(jù)庫服務(wù)器可以處理SQL語言,所以SQL語句和PL/SQL塊都可以送到該服務(wù)器進(jìn)行處理。一個客戶應(yīng)用程序,不管是用Oracle開發(fā)工具實現(xiàn)或使用其它開發(fā)工具編制的,都可以向數(shù)據(jù)庫服務(wù)器提供SQL語句和PL/SQL塊。PL/SQL塊和SQL語句通過網(wǎng)絡(luò)送往服務(wù)器。一旦服務(wù)器收到了這些內(nèi)容,SQL語句將直接進(jìn)服務(wù)器內(nèi)含的SQL語句執(zhí)行器,而PL/SQL塊則送往PL/SQL引擎進(jìn)行語法分析。在PL/SQL塊運行期間,PL/SQL引擎負(fù)責(zé)執(zhí)行過程語句(如賦值語句和存儲過程調(diào)用等)。對于該塊中出現(xiàn)的SQL語句(如Select語句等),PL/SQL引擎講它們送往SQL語句執(zhí)行器執(zhí)行。
2.2 用戶界面、應(yīng)用邏輯和數(shù)據(jù)庫模式
在模式中,用戶界面、應(yīng)用邏輯和數(shù)據(jù)庫是三個獨立的部分。該模式下的客戶是典型的廋客戶類型,如瀏覽器一類的客戶軟件。應(yīng)用層邏輯全部位于成為應(yīng)用服務(wù)器的獨立層中,在這種環(huán)境下,PL/SQL引擎通常只放置在服務(wù)器中。
3 在Linux中基于PL/SQL數(shù)據(jù)庫服務(wù)器設(shè)計
在Linux中,設(shè)計兩層的應(yīng)用模式,即服務(wù)器端和客戶端,結(jié)構(gòu)如圖1所示。客戶端的主要作用就是與數(shù)據(jù)庫服務(wù)器建立連接,進(jìn)行數(shù)據(jù)的查詢、修改和輸入等;Web服務(wù)器主要提供網(wǎng)絡(luò)的相關(guān)功能;數(shù)據(jù)庫服務(wù)器主要用來對客戶端的請求進(jìn)行相應(yīng)并進(jìn)行數(shù)據(jù)庫的日常維護(hù)。
3.1 工作流程
(1)建立與數(shù)據(jù)庫服務(wù)器的連接。包括適當(dāng)使用服務(wù)器認(rèn)識的用戶名和口令來對連接進(jìn)行身份認(rèn)證。建立了連接后,服務(wù)器選中要使用的特定數(shù)據(jù)庫。(2)與數(shù)據(jù)庫進(jìn)行連接。其主要目的是運行常規(guī)SQL命令,包括添加和刪除表,以及向它們添加記錄;也可以對返回結(jié)果的數(shù)據(jù)庫進(jìn)行查詢。(3)返回客戶端的查詢結(jié)果。(4)關(guān)閉客戶端與服務(wù)器的連接。
3.2 數(shù)據(jù)庫的安全分析
建立數(shù)據(jù)庫后,還必須建立和維護(hù)數(shù)據(jù)庫系統(tǒng)的安全性,這對網(wǎng)絡(luò)應(yīng)用是非常必要的,為了保證網(wǎng)絡(luò)數(shù)據(jù)庫的安全,采取了下面一些方法。
(1)用戶控制。Oracle數(shù)據(jù)庫安全性的核心是數(shù)據(jù)庫用戶的帳號。在訪問數(shù)據(jù)庫的任何對象之前,用戶首先必須用一個有效的帳號和密碼連接到該數(shù)據(jù)庫。
(2)用戶權(quán)限。在創(chuàng)建Oracle用戶后,如果該用戶不能創(chuàng)建自己的數(shù)據(jù)庫對象或者訪問其它Oracle用戶擁有的對象,那將是沒有意義的。Oracle定義了兩種類型的權(quán)限:系統(tǒng)權(quán)限和對象權(quán)限,用于控制Oracle用戶可進(jìn)行的操作。
4 客戶端與數(shù)據(jù)庫服務(wù)器的連接
在SQL*Plus下輸入SQL或PL/SQL命令之前,必須先實現(xiàn)與數(shù)據(jù)庫服務(wù)器的連接。一般有兩種常用連接方法:(1)在SQL*Plus命令行輸入用戶標(biāo)識和口令,或輸入連接字符串。(2)進(jìn)入SQL*Plus后使用CONNECT語句。用戶通過網(wǎng)頁請求,Web服務(wù)器收到后,進(jìn)行請求的解析并進(jìn)行信息的打包,通過TCP/IP協(xié)議發(fā)送到遠(yuǎn)方的數(shù)據(jù)庫;在數(shù)據(jù)庫服務(wù)器端,接收Web服務(wù)器的請求,然后根據(jù)不同的請求對本機(jī)上的數(shù)據(jù)庫進(jìn)行不同的操作,最后將結(jié)果通過TCP/IP送回到Web服務(wù)器。Web服務(wù)器接收到返回的結(jié)果,對結(jié)果進(jìn)行解包,進(jìn)行結(jié)果的解析并實現(xiàn)在網(wǎng)頁上。
5 結(jié)語
隨著計算機(jī)技術(shù)和數(shù)據(jù)庫技術(shù)的快速發(fā)展,Linux系統(tǒng)的不斷成熟,基于動態(tài)PL/SQL的數(shù)據(jù)庫開發(fā)具有實現(xiàn)簡單,功能強大,可靠和跨平臺等優(yōu)點,“Linux+數(shù)據(jù)庫”的模式的應(yīng)用越來越廣泛。
參考文獻(xiàn)
[1]王錦標(biāo).計算機(jī)控制系統(tǒng).清華大學(xué)出版社,2008
[2]張炯明.安全電子商務(wù)實用技術(shù)[M].北京:清華大學(xué)出版社,2002.
[3]周文艷,夏麗麗.電子商務(wù)中的數(shù)據(jù)庫技術(shù).科技創(chuàng)新導(dǎo)報,2010年第32期.
[4]王迎云,卞顯銳.淺述電子商務(wù)安全.科技創(chuàng)新導(dǎo)報,2009年第10期.