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