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