摘要:介紹了Oracle分布式數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù)方法,闡述了Oracle分布式數(shù)據(jù)庫(kù)在煤炭物資供應(yīng)系統(tǒng)中的應(yīng)用,并以陜西彬長(zhǎng)煤炭物資供應(yīng)系統(tǒng)為例,詳細(xì)地說(shuō)明了基于Oracle的煤炭物資供應(yīng)系統(tǒng)數(shù)據(jù)庫(kù)分布式設(shè)計(jì)與實(shí)現(xiàn)。
關(guān)鍵詞:分布式數(shù)據(jù)庫(kù);Oracle;煤炭物資供應(yīng)系統(tǒng)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)05-1029-02
Design and Implementation of Distributed Database of Coal Supply System
YU Fang-tao,WU Wei-shan
(Xi'an University of Architecture and Technology,Xi'an 710055,China)
Abstract: Introduces the designing method of the distributed database based on Oracle. Expatiates the application of distributed Oracle database in coal supplies System and implement a system named Shanxi Bingchang Coal Supply System to explain the design and implementation of the distributed database in detail.
Key words: distributed system; oracle; coal supply system
1 引言
建立公司的物資供應(yīng)系統(tǒng)是提升企業(yè)核心競(jìng)爭(zhēng)力的需要,通過(guò)該系統(tǒng)加強(qiáng)和實(shí)現(xiàn)公開(kāi)透明、快速反應(yīng)、高效運(yùn)轉(zhuǎn)的物資供應(yīng)體制和運(yùn)行機(jī)制,提高工作效率和管理水平,強(qiáng)化監(jiān)督管理,實(shí)現(xiàn)企業(yè)物資供應(yīng)與設(shè)備管理效益和企業(yè)整體效益最佳化,最大程度降低采購(gòu)成本,節(jié)約采購(gòu)資金,減少儲(chǔ)備資金占用,實(shí)現(xiàn)更優(yōu)的企業(yè)戰(zhàn)略決策。實(shí)現(xiàn)從需求計(jì)劃提報(bào)、采購(gòu)計(jì)劃生成、采購(gòu)計(jì)劃執(zhí)行、物資入庫(kù)、物資領(lǐng)用、庫(kù)房管理、設(shè)備管理等物資供應(yīng)業(yè)務(wù)全過(guò)程管理。
怎樣才能有效地進(jìn)行信息共享,關(guān)聯(lián)控制,強(qiáng)化管理,運(yùn)用分布式數(shù)據(jù)庫(kù)則不失為一個(gè)好的解決方法,它可將分散的倉(cāng)庫(kù)物資管理信息通過(guò)聯(lián)網(wǎng)集中及時(shí)傳送,解決了倉(cāng)庫(kù)多而散、管理難的問(wèn)題,并以此為契機(jī),幫助企業(yè)強(qiáng)化管理,真正達(dá)到提高物資管理水平、控制成本和提升生產(chǎn)效率的目的。
所以,用分布式數(shù)據(jù)庫(kù)來(lái)管理煤炭物資數(shù)據(jù),是近年來(lái)煤炭物資供應(yīng)系統(tǒng)常用方法之一,其分布式實(shí)現(xiàn)主要依賴(lài)于關(guān)系數(shù)據(jù)庫(kù)(如Oracle)所提供的分布式功能。
2 Oracle系統(tǒng)的分布式設(shè)計(jì)技術(shù)介紹
2.1 分布式數(shù)據(jù)庫(kù)系統(tǒng)[1]
分布式數(shù)據(jù)庫(kù)系統(tǒng)DDSS(Distributed Database Server System)是在計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)上和成熟的集中式數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)上發(fā)展起來(lái)的,它除了具有集中式一些特點(diǎn)(如數(shù)據(jù)的邏輯獨(dú)立性和物理獨(dú)立性,數(shù)據(jù)的全局共享等)外,還有很多獨(dú)立的、不同于集中式數(shù)據(jù)庫(kù)系統(tǒng)的性質(zhì)和特點(diǎn)(網(wǎng)絡(luò)的透明性、數(shù)據(jù)冗余和冗余透明性、數(shù)據(jù)片段透明性、局部自治性、數(shù)據(jù)庫(kù)的安全性、完整性和并行事務(wù)的可串行性),也決定了它的特有的優(yōu)點(diǎn)(分布式控制、增強(qiáng)了數(shù)據(jù)共享性、可靠性和可用性、改善了系統(tǒng)性能、可擴(kuò)充性好)。
2.2 分布式數(shù)據(jù)庫(kù)設(shè)計(jì)方法[2]
分布式數(shù)據(jù)庫(kù)設(shè)計(jì)方法與集中式的設(shè)計(jì)方法相似,但亦具有獨(dú)特之處,就是要考慮數(shù)據(jù)庫(kù)的分布問(wèn)題,即如何把一個(gè)數(shù)據(jù)庫(kù)合理的存儲(chǔ)在多個(gè)節(jié)點(diǎn)上。分布式數(shù)據(jù)庫(kù)設(shè)計(jì)方法包括下面三種:1)重復(fù)存儲(chǔ)。如果數(shù)據(jù)庫(kù)文件被重復(fù)存儲(chǔ),則系統(tǒng)中至少有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)庫(kù)文件。其優(yōu)點(diǎn)是可用性強(qiáng)和增強(qiáng)了并行性。2)數(shù)據(jù)的分片存儲(chǔ)。也就是把全局關(guān)系的元組分成元組的子集(水平分片),屬性分成屬性子集(垂直分片),或兩者混合進(jìn)行(混合分片)。片段的分配設(shè)計(jì)決定如何將分片映射到物理影響,它影響數(shù)據(jù)庫(kù)的物理分布。3)數(shù)據(jù)的組合存儲(chǔ)。數(shù)據(jù)的組合存儲(chǔ)方法是重復(fù)存儲(chǔ)和分片存儲(chǔ)相結(jié)合的方法。給定一個(gè)數(shù)據(jù)庫(kù)關(guān)系R。組合存儲(chǔ)方法首先把R劃分成多個(gè)數(shù)據(jù)庫(kù)片段。任何片段即可以存儲(chǔ)在一個(gè)節(jié)點(diǎn)上也可以復(fù)制成多個(gè)副本,存儲(chǔ)到多個(gè)節(jié)點(diǎn)。
一般來(lái)說(shuō),為了實(shí)現(xiàn)分布式數(shù)據(jù)的特點(diǎn),最大的限度地體現(xiàn)它的優(yōu)勢(shì),在進(jìn)行分布式數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),遵循以下原則:結(jié)合自治,不依賴(lài)與控制節(jié)點(diǎn);操作連續(xù),計(jì)劃的活動(dòng)不得要求中止;位置獨(dú)立;分片獨(dú)立;復(fù)制獨(dú)立;分布式查詢(xún)、優(yōu)化分布式數(shù)據(jù)庫(kù)的查詢(xún);分布式事務(wù)管理;硬件獨(dú)立,網(wǎng)絡(luò)獨(dú)立;操作系統(tǒng)獨(dú)立;數(shù)據(jù)庫(kù)獨(dú)立。這是奠定分布式數(shù)據(jù)庫(kù)的基礎(chǔ)。
2.3 分布式數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟[3]
2.3.1 確定數(shù)據(jù)的物理位置
在分布式數(shù)據(jù)庫(kù)環(huán)境中,對(duì)每一數(shù)據(jù)表都要首先確定其最佳的存放位置,從而使整體數(shù)據(jù)的分布更加合理。在這一過(guò)程中,需要考慮的因素主要有以下幾點(diǎn):每一結(jié)點(diǎn)需傳遞的事務(wù)量;每一結(jié)點(diǎn)使用的數(shù)據(jù)量;網(wǎng)絡(luò)的性能與可靠性;各結(jié)點(diǎn)速度、磁盤(pán)容量;若結(jié)點(diǎn)間連接不通后的訪問(wèn)規(guī)則;表間聯(lián)系對(duì)數(shù)據(jù)完整性的影響等。
2.3.2 確定數(shù)據(jù)庫(kù)及其對(duì)象
對(duì)每一存放數(shù)據(jù)的獨(dú)立結(jié)點(diǎn)都要建立至少一個(gè)數(shù)據(jù)庫(kù),對(duì)于不同的應(yīng)用,在同一地點(diǎn)也可以建立多個(gè)數(shù)據(jù)庫(kù)。在每一數(shù)據(jù)庫(kù)中還要根據(jù)實(shí)際需求建立有關(guān)的數(shù)據(jù)庫(kù)對(duì)象,如Oracle中有關(guān)數(shù)據(jù)庫(kù)對(duì)象有Table、View、Snapshot、Synonym、DatabaseLink等。
2.3.3 確定數(shù)據(jù)存取機(jī)制
分布式數(shù)據(jù)庫(kù)的一大重要特點(diǎn)是數(shù)據(jù)訪問(wèn)的透明性。在應(yīng)用系統(tǒng)中,不同的功能會(huì)需要訪問(wèn)不同數(shù)據(jù)庫(kù)中的數(shù)據(jù)。為了達(dá)到數(shù)據(jù)訪問(wèn)的透明性,在分布式數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)就需要確定如何存取其它數(shù)據(jù)庫(kù)中的數(shù)據(jù),如何實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)中數(shù)據(jù)表的鏈接等規(guī)則。
2.4 Oracle分布式系統(tǒng)訪問(wèn)技術(shù)[4]
Oracle數(shù)據(jù)系統(tǒng)作為優(yōu)秀的企業(yè)級(jí)DBMS產(chǎn)品之一,得到了廣泛的應(yīng)用。ORACLE分布式數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)客戶(hù)/服務(wù)器體系結(jié)構(gòu)。SQL*NET允許多臺(tái)運(yùn)行ORACLE產(chǎn)品的計(jì)算機(jī)相互通訊。用戶(hù)對(duì)此單一邏輯的數(shù)據(jù)庫(kù)中數(shù)據(jù)的任一請(qǐng)求,都被自動(dòng)分解、自動(dòng)尋址、自動(dòng)轉(zhuǎn)換為網(wǎng)絡(luò)請(qǐng)求,并在相應(yīng)結(jié)點(diǎn)上實(shí)現(xiàn)相應(yīng)的操作。ORACLE 分布式數(shù)據(jù)庫(kù)管理系統(tǒng)支持混合的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),還支持混合網(wǎng)絡(luò)協(xié)議,并自動(dòng)地進(jìn)行網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換。
分布式ORACLE數(shù)據(jù)庫(kù)系統(tǒng)可以用多個(gè)數(shù)據(jù)庫(kù)滿(mǎn)足多個(gè)工作組、部門(mén)或地區(qū)的需求,并把它們連接在一起,邏輯上可以看成一個(gè)單個(gè)的大數(shù)據(jù)庫(kù), 而物理上存放于網(wǎng)絡(luò)的多個(gè)Oracle數(shù)據(jù)庫(kù)。用戶(hù)可以通過(guò)網(wǎng)絡(luò)對(duì)異地?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)同時(shí)進(jìn)行存取,而服務(wù)器之間的協(xié)同處理對(duì)于工作站用戶(hù)及應(yīng)用程序而言是完全透明的:開(kāi)發(fā)人員無(wú)需關(guān)心網(wǎng)絡(luò)的鏈接細(xì)節(jié)、無(wú)需關(guān)心數(shù)據(jù)在網(wǎng)絡(luò)接點(diǎn)中的具體分布情況、也無(wú)需關(guān)心服務(wù)器之間的協(xié)調(diào)工作過(guò)程。數(shù)據(jù)庫(kù)之間的鏈接建立在DATABASE LINK上。數(shù)據(jù)庫(kù)鍵接的建立語(yǔ)句為:
CREATE [PUBLIC] DATABASE LINK Linkname
[CONNECT TO username IDENTIFIED By password]
[USING‘connectstring']
其中:Linkname 數(shù)據(jù)庫(kù)鏈接的名稱(chēng)
Username 用戶(hù)帳戶(hù)
password 口令
connectstring 遠(yuǎn)程數(shù)據(jù)庫(kù)的連接串
4 煤炭物資信息系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)
彬長(zhǎng)物資供應(yīng)系統(tǒng)(以下簡(jiǎn)稱(chēng)BCWZ)是一個(gè)面向彬長(zhǎng)煤炭供應(yīng)公司進(jìn)行物資供應(yīng)管理的集成化分布式信息系統(tǒng)。由于該公司管理上使用單位所需物資的集中采購(gòu)、集中儲(chǔ)備和集中配送管理方式,采用駐礦站-地方倉(cāng)庫(kù)-公司倉(cāng)庫(kù)管理模式,煤炭物資管理業(yè)務(wù)分布在三級(jí)管理部門(mén),因此BCWZ系統(tǒng)中的分布式處理至關(guān)重要。
4.1 BCWZ體系結(jié)構(gòu)
BCWZ運(yùn)行在由4個(gè)局域子網(wǎng)構(gòu)成的廣域網(wǎng)上。4個(gè)局域網(wǎng)分別分布于物資供應(yīng)總公司和3個(gè)分礦,管理所采用SSL VPN連接到分礦數(shù)據(jù)庫(kù)中。系統(tǒng)在物資供應(yīng)總公司和3個(gè)分礦的服務(wù)器中分別建立4個(gè)數(shù)據(jù)庫(kù)。
BCWZ的主要功能包括如圖1。
BCWZ的主要信息數(shù)據(jù)流程如圖2。
4.2 數(shù)據(jù)說(shuō)明
根據(jù)系統(tǒng)的功能及信息數(shù)據(jù)流程需求,BCWZ中的數(shù)據(jù)及其使用情況分為以下幾類(lèi):
類(lèi)型一:人員、部門(mén)、崗位、任職、單位等做參考用的數(shù)據(jù)等(屬于靜態(tài)數(shù)據(jù));
類(lèi)型二:文件內(nèi)容、采購(gòu)過(guò)程等與文件流轉(zhuǎn)相關(guān)的數(shù)據(jù)等(屬于動(dòng)態(tài)數(shù)據(jù)),物資供應(yīng)總公司和分礦都會(huì)有數(shù)據(jù)流轉(zhuǎn);
類(lèi)型三:業(yè)務(wù)屬性數(shù)據(jù),如倉(cāng)庫(kù)、貨位、合同、入出庫(kù)、采購(gòu)屬性等(屬于動(dòng)態(tài)數(shù)據(jù)),主要業(yè)務(wù)在物資供應(yīng)總公司,部分中型業(yè)務(wù)在礦上辦理,部分小型業(yè)務(wù)在駐礦站辦理等;
類(lèi)型四:圖形數(shù)據(jù),包括供應(yīng)商資質(zhì)、合同附件等(屬于圖形數(shù)據(jù))。
4.3 分布式設(shè)計(jì)
根據(jù)系統(tǒng)對(duì)分布式的需求,BCWZ中數(shù)據(jù)庫(kù)分布式設(shè)計(jì)方案如下:
對(duì)于類(lèi)型一數(shù)據(jù),物資供應(yīng)總公司數(shù)據(jù)庫(kù)中建立數(shù)據(jù)表,分礦數(shù)據(jù)庫(kù)中建立對(duì)物資供應(yīng)總公司表的快照和視圖,對(duì)這些數(shù)據(jù)的大部分修改在物資供應(yīng)總公司進(jìn)行,分局通過(guò)視圖修改這些數(shù)據(jù),通過(guò)快照查詢(xún)這些數(shù)據(jù);對(duì)于類(lèi)型二數(shù)據(jù),物資供應(yīng)總公司和分礦的數(shù)據(jù)庫(kù)中分別建立數(shù)據(jù)表,數(shù)據(jù)存放在數(shù)據(jù)的產(chǎn)生地;對(duì)于類(lèi)型三數(shù)據(jù),數(shù)據(jù)存放在分礦的數(shù)據(jù)庫(kù)中,在物資供應(yīng)總公司的數(shù)據(jù)庫(kù)中分別建立對(duì)3個(gè)分礦數(shù)據(jù)庫(kù)的DATABASE LINK,物資供應(yīng)總公司通過(guò)視圖創(chuàng)建或修改這些數(shù)據(jù),通過(guò)快照查詢(xún)這些數(shù)據(jù);分礦和駐礦站系統(tǒng)登錄到對(duì)應(yīng)分局的數(shù)據(jù)庫(kù),直接對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行操作。
快照可以基于多個(gè)基表查詢(xún),可按照先設(shè)置的時(shí)間間隔定期自動(dòng)刷新。建立快照的語(yǔ)句如下:
CREATE SNAPSHOT snapshot_name
[STORAGE(STORAGE PARAMETERS)]
[STABLESPACE tablespace_name]
[REFRESHP[FAST/COMPLETE/FORCE]]
As query
以合同屬性數(shù)據(jù)為例,在分礦建立表Bargain,分礦操作此表,在物資供應(yīng)總公司建立視圖和快照如下:
CREATE VIEW V$BARGAIN_FK AS SELECT * FROM SUPDBA.BARGAIN@SUP_FK;
CREATE SNAPSHOT S$BARGAIN_FK
PCTFREE 5 PCTUSED 60
TABLESPACE users
STORAGE INITIAL 50K NEXT 50K
USING INDEX STORAGE (INITIAL 25K NEXT 25K)
REFRESH START WITH ROUND(SYSDATE + 1) + 23/24
NEXT SYSDATE + 1
AS SELECT * FROM SUPDBA.BARGAIN@SUP_FK;
/* 快照從第二天23點(diǎn)開(kāi)始刷新,每天刷新一次 */
BCWZ中的類(lèi)型四數(shù)據(jù)圖形數(shù)據(jù)是用Oracle Spatial[5],它不僅使空間數(shù)據(jù)在Oracle數(shù)據(jù)庫(kù)中存儲(chǔ)成為可能,同時(shí)還將地理信息中的空間算子、空間分析集成到數(shù)據(jù)庫(kù),并結(jié)合Oracle數(shù)據(jù)庫(kù)的特性,對(duì)空間數(shù)據(jù)進(jìn)行治理。由于Oracle Spatial系統(tǒng)建立在功能強(qiáng)大的服務(wù)器上,又實(shí)現(xiàn)了高效的空間索引技術(shù)(R-tree),能輕松地處理海量地圖數(shù)據(jù)。因此利用Oracle Spatial,用戶(hù)可以將空間數(shù)據(jù)直接存儲(chǔ)到Oracle數(shù)據(jù)庫(kù)服務(wù)器中,在客戶(hù)端通過(guò)MapInfo Professional或MapX及MapXtreme,利用Oracle Spatial提供的空間算子結(jié)合SQL語(yǔ)句,對(duì)空間數(shù)據(jù)進(jìn)行編輯、查詢(xún)和其他復(fù)雜空間分析。Oracle Spatial中的空間索引采用R-Tree技術(shù),即由Spatial引擎提供的最小外接矩形,將各空間實(shí)體的各個(gè)局部,按照從大到小的分格方法存儲(chǔ)在索引中,并按照從小到大的范圍進(jìn)行索引搜索,以便根據(jù)給定的坐標(biāo),快速定位某一空間對(duì)象。空間索引技術(shù)實(shí)現(xiàn)了動(dòng)態(tài)的“拓?fù)潢P(guān)系”機(jī)制,只有在需要時(shí),系統(tǒng)才根據(jù)空間索引建立并使用實(shí)體間的拓?fù)潢P(guān)系,這是一種“隱式”的拓?fù)潢P(guān)系。通過(guò)這種“隱式”的拓?fù)潢P(guān)系,用戶(hù)不需要建立復(fù)雜的“特征表”,就能方便地進(jìn)行空間查詢(xún)與分析,實(shí)現(xiàn)多種拓?fù)浞治龉δ堋2捎肙racle Spatial 存儲(chǔ)、管理空間數(shù)據(jù),易于解決數(shù)據(jù)共享、分布式處理、網(wǎng)絡(luò)通信、開(kāi)放式開(kāi)發(fā)、并發(fā)控制、網(wǎng)絡(luò)化集成、跨平臺(tái)運(yùn)行及數(shù)據(jù)安全恢復(fù)機(jī)制等方面的難題。
5 結(jié)束語(yǔ)
分布式數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)已經(jīng)被成功的應(yīng)用于各行各業(yè)海量數(shù)據(jù)、多數(shù)據(jù)類(lèi)型的MIS中以及大型WEB服務(wù)等項(xiàng)目的開(kāi)發(fā)中。對(duì)于BCWZ系統(tǒng)來(lái)說(shuō),借助于DDSS成熟的技術(shù)來(lái)實(shí)現(xiàn)分布式處理,解決的公司駐礦站-地方倉(cāng)庫(kù)-公司倉(cāng)庫(kù)管理模式下對(duì)數(shù)據(jù)庫(kù)應(yīng)用的需求,隨著應(yīng)用中深入進(jìn)行,也出現(xiàn)了諸如管理和維護(hù)困難以及運(yùn)行效率等問(wèn)題,這是下一步研究解決問(wèn)題,亦是目前DDSS研究的方向之一。
參考文獻(xiàn):
[1] 李建中,王珊. 數(shù)據(jù)庫(kù)系統(tǒng)原理[M]. 第2版.電子工業(yè)出版社,2004.
[2] 談冉,康瑞華,李凌. 物流信息系統(tǒng)的分布式數(shù)據(jù)庫(kù)設(shè)計(jì)[J]. 武漢理工大學(xué)學(xué)報(bào),28(8):38-41.
[3] 榮芳,楊成韞. 土地信息系統(tǒng)數(shù)據(jù)庫(kù)分布式設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,19(2):35-38.
[4] 王子牛.ORACLE分布式數(shù)據(jù)庫(kù)及其應(yīng)用程序的建立[J].貴州工業(yè)大學(xué)學(xué)報(bào),28(1):54-57.
[5] 張大爭(zhēng),何建國(guó),董恒,等. 基于Oracle Spatial 的異構(gòu)空間數(shù)據(jù)應(yīng)用研究[J]. 國(guó)土資源信息化, 2002,33(3):33-36.
[6] 姚文林,王存剛,劉世棟.基于Oracle的分布式數(shù)據(jù)庫(kù)設(shè)計(jì)與技術(shù)[J]. 計(jì)算機(jī)工程與應(yīng)用. 2006,32(20):89-91.