劉向東
摘要:數(shù)據(jù)庫是一種數(shù)據(jù)管理技術(shù),對信息系統(tǒng)的數(shù)據(jù)存儲、管理和調(diào)度起著重要的作用。本文從數(shù)據(jù)庫技術(shù)入手,首先介紹了目前流行的三種數(shù)據(jù)庫體系結(jié)構(gòu):單用戶數(shù)據(jù)庫結(jié)構(gòu)、主從式數(shù)據(jù)庫結(jié)構(gòu)和分布式結(jié)構(gòu),并在此基礎(chǔ)上引出了Client/Server(客戶端/服務(wù)器)數(shù)據(jù)庫結(jié)構(gòu)。然后,文章介紹了Client/Server數(shù)據(jù)庫系統(tǒng)的設(shè)計要點,包括網(wǎng)絡(luò)軟件和協(xié)議、數(shù)據(jù)庫和客戶端開發(fā)工具的設(shè)計方法。最后,以地圖數(shù)據(jù)庫為例展示了Client/Server數(shù)據(jù)庫系統(tǒng)的設(shè)計結(jié)果。Client/Server數(shù)據(jù)庫系統(tǒng)提高了系統(tǒng)容量、效率、穩(wěn)定性和安全性,在不同規(guī)模的系統(tǒng)中得到了廣泛的應(yīng)用。
關(guān)鍵詞:數(shù)據(jù)庫;主從式結(jié)構(gòu);Client/Server結(jié)構(gòu)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)11-0008-03
1引言
數(shù)據(jù)庫技術(shù)是一種數(shù)據(jù)管理技術(shù),具有結(jié)構(gòu)化、冗余度低、程序與數(shù)據(jù)高度獨立、易于擴展和編譯應(yīng)用等優(yōu)點。數(shù)據(jù)庫是指長期存儲在計算機中的結(jié)構(gòu)化數(shù)據(jù)集合,基于某種數(shù)據(jù)模型實現(xiàn)對數(shù)據(jù)的組織、描述和存儲,并向用戶提供數(shù)據(jù)共享服務(wù)?,F(xiàn)在,數(shù)據(jù)庫技術(shù)已應(yīng)用于各類大型、小型甚至微型計算機以確保數(shù)據(jù)的完整性和共享性[1]。
數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎(chǔ),而數(shù)據(jù)庫設(shè)計則是系統(tǒng)開發(fā)過程中最關(guān)鍵的過程,實現(xiàn)了數(shù)據(jù)的組織、存儲、維護和檢索等功能,使信息系統(tǒng)能夠方便、及時、準確地從數(shù)據(jù)庫中獲取所需的信息。數(shù)據(jù)庫設(shè)計是否合理,決定了信息系統(tǒng)的各個模塊能否實現(xiàn)緊密結(jié)合并協(xié)同工作[2]。
2數(shù)據(jù)庫結(jié)構(gòu)
數(shù)據(jù)庫系統(tǒng)可以按照不同方式進行分類,根據(jù)最終用戶的不同類型,可分為單用戶數(shù)據(jù)庫結(jié)構(gòu)、主從式數(shù)據(jù)庫結(jié)構(gòu)、分布式數(shù)據(jù)庫結(jié)構(gòu)和Client/Server數(shù)據(jù)庫結(jié)構(gòu)。
2.1單用戶數(shù)據(jù)庫結(jié)構(gòu)
單用戶數(shù)據(jù)庫結(jié)構(gòu)是一種早期簡單的數(shù)據(jù)庫結(jié)構(gòu),應(yīng)用程序、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)等所有的數(shù)據(jù)庫系統(tǒng)都安裝在同一臺計算機上,該計算機由一名用戶獨享,不同計算機之間不能共享數(shù)據(jù)[3]。
以企業(yè)各部門為例,各部門使用自己的計算機實現(xiàn)數(shù)據(jù)管理,所有計算機之間都是相互獨立的。由于不同部門之間不能共享數(shù)據(jù),企業(yè)中存儲了大量冗余數(shù)據(jù),如每個員工的ID、姓名等個人信息被反復(fù)存儲在人事、會計、技術(shù)等不同部門的數(shù)據(jù)庫中。
2.2主從式數(shù)據(jù)庫結(jié)構(gòu)
在主從式數(shù)據(jù)庫結(jié)構(gòu)中,應(yīng)用程序、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)等數(shù)據(jù)庫系統(tǒng)均安裝在一個具有多個用戶的主機上,所有的處理任務(wù)都由主機完成,終端用戶能夠訪問數(shù)據(jù)庫并與主機共享數(shù)據(jù)資源[4]。
主從式數(shù)據(jù)庫結(jié)構(gòu)最主要的特點是集中式的數(shù)據(jù)存儲和數(shù)據(jù)處理,其優(yōu)點在于結(jié)構(gòu)簡單,易于管理和維護。但是,當(dāng)終端用戶較多時,主機處理任務(wù)較繁重,容易成為數(shù)據(jù)庫系統(tǒng)的性能瓶頸,如果主機的處理任務(wù)失敗,整個數(shù)據(jù)庫系統(tǒng)都會失敗,因此主從式數(shù)據(jù)庫系統(tǒng)可靠性不高。
2.3分布式數(shù)據(jù)庫結(jié)構(gòu)
在分布式數(shù)據(jù)庫結(jié)構(gòu)中,數(shù)據(jù)作為一個整體存儲在數(shù)據(jù)庫中,但其實際上分布在網(wǎng)絡(luò)中不同的物理節(jié)點。網(wǎng)絡(luò)中的每個節(jié)點既能夠獨立訪問和處理本地數(shù)據(jù)庫中的數(shù)據(jù)以執(zhí)行本地應(yīng)用程序,同時也可以訪問和處理多個遠程數(shù)據(jù)庫中的數(shù)據(jù)以執(zhí)行全局應(yīng)用程序[5]。
顧名思義,分布式數(shù)據(jù)庫結(jié)構(gòu)的主要特點是分布式的數(shù)據(jù)存儲和數(shù)據(jù)處理,分布式數(shù)據(jù)庫系統(tǒng)是計算機和網(wǎng)絡(luò)技術(shù)發(fā)展的必然產(chǎn)物,滿足了企業(yè)和組織在地理分散分布的需求。然而,數(shù)據(jù)的分布式存儲為數(shù)據(jù)處理、管理和維護都帶來了一定的困難,同時數(shù)據(jù)庫的遠程訪問過程受到網(wǎng)絡(luò)帶寬和速率的影響明顯。
3 Client/Server數(shù)據(jù)庫結(jié)構(gòu)
在主從式數(shù)據(jù)庫系統(tǒng)中,每個節(jié)點都是一個通用的計算機,既執(zhí)行數(shù)據(jù)庫管理系統(tǒng)的功能,又執(zhí)行應(yīng)用程序。隨著工作站的普及,用戶開始分離將二者功能逐漸分離。網(wǎng)絡(luò)中的一些計算機節(jié)點專門用于執(zhí)行數(shù)據(jù)庫管理系統(tǒng)的功能,稱為數(shù)據(jù)庫服務(wù)器,簡稱服務(wù)器;其他計算機節(jié)點安裝數(shù)據(jù)庫管理系統(tǒng)的外圍應(yīng)用程序開發(fā)工具支持用戶功能,稱為客戶端。這就是Client/Server(客戶端/服務(wù)器)數(shù)據(jù)庫結(jié)構(gòu)的原型[6]。
Client/Server數(shù)據(jù)庫結(jié)構(gòu)如圖1所示,其中,系統(tǒng)的Oracle Sybase、Infomix等應(yīng)用軟件和數(shù)據(jù)庫等安裝在服務(wù)器端,服務(wù)器通常有多個進程,能夠接受來自多個客戶端的數(shù)據(jù)請求??蛻舳藢⒂脩粽埱笠越Y(jié)構(gòu)化查詢語言的形式發(fā)送到服務(wù)器,服務(wù)器完成數(shù)據(jù)查詢和處理并將處理結(jié)果返回客戶端,并不是返回整個數(shù)據(jù),極大地減少了網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量,從而提高了數(shù)據(jù)庫系統(tǒng)性能、吞吐量和負載能力。另外,Client/Server數(shù)據(jù)庫結(jié)構(gòu)的往往更開放,客戶端和服務(wù)器均可以在不同的硬件和軟件平臺上運行,可以應(yīng)用不同的數(shù)據(jù)庫應(yīng)用開發(fā)工具,使應(yīng)用程序更易于移植,軟件維護成本更低。
Client/Server數(shù)據(jù)庫結(jié)構(gòu)可分為集中式服務(wù)器結(jié)構(gòu)和分布式服務(wù)器結(jié)構(gòu)[7]。
如圖2所示,集中式服務(wù)器結(jié)構(gòu)包含一個數(shù)據(jù)庫服務(wù)器和多個客戶端服務(wù)器,主要特點是集中式的數(shù)據(jù)存儲和分布式的數(shù)據(jù)處理。與主從式數(shù)據(jù)庫結(jié)構(gòu)類似,數(shù)據(jù)庫服務(wù)器需要為多個客戶端提供服務(wù),容易成為系統(tǒng)瓶頸,限制系統(tǒng)性能。
如圖3所示,分布式服務(wù)器結(jié)構(gòu)包含多個分布式的服務(wù)器,是分布式數(shù)據(jù)庫和Client/Server數(shù)據(jù)庫的結(jié)合,主要特點是分布式數(shù)據(jù)和分布式處理。與分布式數(shù)據(jù)庫結(jié)構(gòu)類似,數(shù)據(jù)在不同服務(wù)器上的分布式存儲為數(shù)據(jù)處理、管理和維護帶來一定困難。
4 Client/Server數(shù)據(jù)庫系統(tǒng)設(shè)計
4.1網(wǎng)絡(luò)軟件和協(xié)議
本文通過Windows NT操作系統(tǒng)實現(xiàn)client/server數(shù)據(jù)庫系統(tǒng)的設(shè)計,所需硬件資源較少,對不同規(guī)模的公司都比較實用[8]。NT操作系統(tǒng)支持豐富的網(wǎng)絡(luò)協(xié)議,包括:
(1)NetBEUI:微軟的嵌入式網(wǎng)絡(luò)協(xié)議,能夠?qū)崿F(xiàn)數(shù)據(jù)包的高速無路由傳輸功能。
(2)NWLink IPX/SPX協(xié)議:NetWare兼容協(xié)議,可用于NetWare服務(wù)器的連接。
(3) TCP/IP協(xié)議:具有路由功能的行業(yè)標準協(xié)議,可作為主網(wǎng)協(xié)議。
4.2 數(shù)據(jù)庫
NT操作系統(tǒng)最常用的數(shù)據(jù)庫工具是微軟開發(fā)的SQL Server,結(jié)構(gòu)緊湊、功能強大、容量龐大,能夠與NT操作系統(tǒng)無縫連接。除此之外,Sybase、Oracle等也是常用的數(shù)據(jù)庫工具。
4.3 客戶端開發(fā)工具
客戶端開發(fā)工具的選擇對用戶來說非常重要,常用的開發(fā)工具包括ODBC、C/C++、VFP3.0、VB、PowerBuilder、Delphi等[9]。
4.4 地圖數(shù)據(jù)庫系統(tǒng)
以地圖數(shù)據(jù)庫為例,如圖4所示,一個完整的Client/Server數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫服務(wù)器、客戶端和網(wǎng)絡(luò)三個部分[10]。
(1)數(shù)據(jù)庫服務(wù)器:用來處理來自客戶端的SQL請求,并將處理結(jié)果返回給客戶端。事實上,所有的數(shù)據(jù)操作、并發(fā)控制、安全審計和系統(tǒng)管理都是通過數(shù)據(jù)庫服務(wù)器完成的。
(2)客戶端:用于發(fā)送SQL請求并處理請求結(jié)果,客戶端通常用于處理應(yīng)用程序的邏輯。
(3)網(wǎng)絡(luò):提供服務(wù)器和客戶端之間的連接,對用戶是透明的。網(wǎng)絡(luò)性能將直接影響數(shù)據(jù)庫系統(tǒng)性能。
Client/Server數(shù)據(jù)庫是網(wǎng)絡(luò)中所有節(jié)點建立的一套支持站點自治和全局自治的有機組合,包含數(shù)據(jù)庫管理系統(tǒng)、通信管理、本地數(shù)據(jù)庫和全局數(shù)據(jù)庫四類功能模塊。
(1)數(shù)據(jù)庫管理系統(tǒng):提供Client/Server數(shù)據(jù)庫系統(tǒng)界面功能,確保全局數(shù)據(jù)庫的完整性。
(2)通信管理:處理節(jié)點間基本通信功能的通信軟件。
(3)本地數(shù)據(jù)庫:可通過本地節(jié)點訪問的數(shù)據(jù)庫。
(4)全局數(shù)據(jù)庫:可通過網(wǎng)絡(luò)中所有節(jié)點訪問的數(shù)據(jù)庫。
5 結(jié)論
本文從數(shù)據(jù)庫技術(shù)入手,首先介紹了目前流行的三種數(shù)據(jù)庫體系結(jié)構(gòu):單用戶數(shù)據(jù)庫結(jié)構(gòu)、主從式數(shù)據(jù)庫結(jié)構(gòu)和分布式結(jié)構(gòu),并在此基礎(chǔ)上引出了Client/Server(客戶端/服務(wù)器)數(shù)據(jù)庫結(jié)構(gòu)。然后,文章介紹了Client/Server數(shù)據(jù)庫系統(tǒng)的設(shè)計要點,包括網(wǎng)絡(luò)軟件和協(xié)議、數(shù)據(jù)庫和客戶端開發(fā)工具的設(shè)計方法。最后,以地圖數(shù)據(jù)庫為例展示了Client/Server數(shù)據(jù)庫系統(tǒng)的設(shè)計結(jié)果。Client/Server數(shù)據(jù)庫系統(tǒng)提高了系統(tǒng)容量、效率、穩(wěn)定性和安全性,在不同規(guī)模的系統(tǒng)中得到了廣泛的應(yīng)用[11]。
參考文獻:
[1] 馮玉村. 數(shù)據(jù)庫系統(tǒng)技術(shù)[M]. 華中工學(xué)院出版社, 1984.
[2] 丁智剛. C/S模式與B/S模式相結(jié)合的數(shù)據(jù)庫系統(tǒng)技術(shù)研究[J]. 網(wǎng)絡(luò)空間安全, 2011(11):41-44.
[3] 郭忠勝. 基于GIS數(shù)據(jù)管理系統(tǒng)的研究與實踐[D]. 解放軍信息工程大學(xué), 2004.
[4] 王濤, 劉潤彬. 一種主從式數(shù)據(jù)庫應(yīng)用模式的研究與應(yīng)用[C]. 中國電子學(xué)會青年學(xué)術(shù)年會暨中國電子學(xué)會青年工作委員會成立十周年學(xué)術(shù)研討會, 2002.
[5] 王鑫, 王占江. 淺談分布式數(shù)據(jù)庫架構(gòu)[J]. 計算機光盤軟件與應(yīng)用, 2012(8):41-41.
[6] 黃麗霞. Client/Server數(shù)據(jù)庫結(jié)構(gòu),應(yīng)用軟件設(shè)計及其訪問機制[J]. 數(shù)據(jù)分析與知識發(fā)現(xiàn), 2000, 16(4):26-29.
[7] 劉洪星, 譚新明. Client/Server 數(shù)據(jù)庫及其設(shè)計要點[J]. 武漢交通科技大學(xué)學(xué)報, 1998(2):153-155.
[8] JoeSalemi, 奚舸. Claris FileMaker Pro 3.0 Server for Windows NT——FileMaker Pro為Client/Server重下定義[J]. 電子與電腦, 1997(7):44-44.
[9] 劉欣, 邱力軍, 廖琪梅,等. 利用Delphi開發(fā)Client/Server數(shù)據(jù)庫[J]. 醫(yī)學(xué)爭鳴, 2001(s1):133-134.
[10] 李治柱. C/S模式下數(shù)字地圖的研究與實現(xiàn)[D]. 上海交通大學(xué), 2009.
[11] 王江偉. 分布式數(shù)據(jù)庫與Client/Server體系縱橫談[J]. 軟件和信息服務(wù), 1997(10):5-9.