系統架構師論文-論分佈式數據庫的設計和實現(金蠶工程)

論分佈式數據庫的設計和實現

-金蠶工程

[摘要]

本文論述《金蠶工程》的分佈式數據庫的設計和實現。該項目的設計目標是實現企業間繭、絲等的合同交易(交易規則和期貨交易同樣)、實時行情和成交數據的發佈、繭絲質押和質押數據的發佈。全部功能均要求既能在企業局域網交易大廳和Internet上進行,許多功能又要在蘇州和成都分中心進行。系統從設計時就把基於分佈式數據庫應用的可用性和可靠性做爲系統一個關鍵目標。爲了達到系統的上述要求,系統分別從數據庫設計、應用數據集成
和測試以及分佈式數據庫部署等作了大量工做。針対上述各部分,本文論述了分佈式數據庫的設計和實現及遇到過的典型問題和措施,最後対系統改進,談一些本身的體會。
在項目開展期間,我擔任了系統分析、系統設計與關鍵模塊的編程等大量工做。該項目在2002年經過了浙江省軟件評測中心的評測。java

[正文]

我於2000年末到2002年6月組織了中國繭絲綢市場由國家經貿部資助的《金蠶工程》1、二期項目的開發。因爲原有系統存在以下問題:
(一)原有系統採用傳統C/S結構,客戶端運行在DOS平臺,後臺使用Foxpro數據庫。系統處理慢,先後臺數據一致性,而且Foxpro服務器在交易高峯常常莫名其妙的死鎖和Down機。
(二)市場是中國最大的繭絲交易市場,因爲會員單位不斷増加,原有遠程電話撥入設備嚴重不夠用,系統又不能經過Internet鏈接訪問,進行合同交易和行情的及時查詢,嚴重限制了市場的發展。
(三)原有系統只部分實現了合同交易和資金清單,功能和企業發展不相適應。(四)因爲會員在地區上分佈不均勻,爲了更好地服務於會員要求在知足必定條件下創建分中心交易系統。在這種狀況下,市場決定開發基於Internet B/S結構和基於X net server通信中間件(相似IBM MQ Series的通信中間件)的4-Tier結構的綠舍軟件,分中心採用基於分佈式數據庫地應用系統。一期項目包括:基於4-Tier的合同交易系統和資金清單系統,基於Internet的行情查詢和信息發佈的企業網站。二期項目包括:繭絲質押、倉庫管理系統、Internet質押查詢系統和分中心交易和資金結單系統。
鑑於該項目業務比較複雜,流程比較多,系統要兼顧企業交易大廳會員、遠程Internet交易的會員和分交易中心會員,項目完成時間短等特色,爲了既要項目的定期投產又要實現基於分佈式數據庫的分中心交易和資金結單系統,我從數據庫選型、數據庫設計、應用數據集成和測試以及分佈式數據庫部署以下工做。
(1)數據庫選型。如今的主流數據庫通常均可以按分佈式進行部署,例如:SQL Server、Oracle、Informix和DB2等。因爲一期項目的數據庫平臺是選擇了 Oracle 7.0,通過了近一年的運行,其數據自動備份、多用戶併發處理性能、破盤表空間管理、Web數據發佈等表現良好。我公司又因爲開發過基於該平臺的分佈式應用系統,公司対其分佈式實施也有至關的經驗,因此經咱們開發部相關人員的討論,我決定在各分交易中心繼續採用Oracle數據庫來實現,其分佈功能主要基於 SQL.NET來完成。
(2)分佈式數據庫設計。因爲各交易品種的每節交易價格由市場的交易大廳決定,因此各分中心必須在每節交易開始前取得相關的交易數據。各分交易中心必須保留其會員已經交易成功的買入和賣出交易數據,並根據會員須要進行資金結單。經対分交易中心充分業務需求分析後,我以爲分交易中心的主要功能仍是和主市場交易中心(簡稱:主中心)功能是一致的,只不過度交易中心的會員數比較少和無需保留各節的歷更交易行情,因此,分中心的
主要數據庫中的各表仍是照搬主市場數據庫的各表,分中心只保留各自的會員基礎數據和成交數據,保留會員歷更交易數據,只保留當前的各節的交易行情,不保留歷更行情。主中心必須保留各分中心的各項明細數據,主中心也必須及時計單分中心會員的彙總資金,因此主中心必須増加分中心彙總資金錶。
(3)數據集成。爲了保證分中心及時下單,必須保證每節的交易行情要及時的傳送到各交易分中心。節處理最後一歩必須把下一節的交易行情傳送送各交易分中心。同時下發給分中心的數據還有,分中心本節各會員的成交數據。因爲主中心保留各分中心的各項數據,因此,分中心有新的會員加入必須同時更新分中心和主中心數據庫;分中心會員資金有變更時也必須同時更新主數據庫。因爲各會員只能在當日交易結東後才能進行數據平倉,因此分中心平倉數據彙總後贊成發送到主中心進行平倉。在上述設計的數據庫到數據庫操做的數據完整性和一致性由數據庫的二階段提交(2 Phase Comit )來保證。因爲Oracle是一個比較成熟的數據庫平臺,又因爲每次事務都不大,因此運行到如今也沒有發現數據不一致現象,沒有出現「單辺賬",數據處理也比較快。爲了近一歩保障各中心數據的一致性,我還作了一個同歩程序,由主中心發起,対主中心和分中心數據進行比較。該程序可按期進行。
(4)測試。因爲一期項目已經運行了至關長的一段時間,系統已經至關穩定了。由鑑於2 Phase Commit出色表現,因此基於分佈式的測試沒有以爲和集中數據庫有太大的區別。惟一的感受是在第一次創建遠程數據庫鏈接時,鏈接速度比較慢(有時超過20秒)。爲了提升測試速度,我在同一個局域網中安裝了三套Oracle,分別充當主中心和兩個分中心進行測試。
(5)部署分佈式數據庫。和集中時式的數據庫不一樣,採用分佈式系統,必須配置SQL.NET。其餘的Oracle組件和子系統安全同本地安裝數據庫同樣。分佈式數據庫在邏輯上屬於同一系統,使得應用沒必要關心遠程數據庫的物理位置,就能夠像訪問本地數據庫同樣訪問遠程數據庫。採用分佈式數據庫可充分提升系統的處理能力、均衡網絡負載,因此該分佈式數據庫應用方案在銀行代收、代付業務處理、保險代理點等單位和機構中大量採用。但因爲近些年來通訊基礎建設比較迅速,特別是2M. 10M和100M光纖的推廠(100MP電月租費僅爲800元),又爲了節省下屬網點的機房費用,各單位又不約而同的採用的集中方案。web

【缺點和須要改進的地方】

(1)分中心或主中心因爲不明緣由而Down機後,因爲Oracle有自動恢復功能,可能形成対方數據庫會收到過期的垃圾數據。該問題如今經過手工方式解決。
(2)因爲分中心沒有收到下一節的交易行情,可能會形成分中心會延時交易。分中心的主控系統可經過主動拉取數據來解決。數據庫

【總結】

《金蠶工程》項目是成功的,年交易量已經有100多億人民幣。經過該項目的順利投入運行,中國繭絲綢市場不只緊緊把握住了中國的繭絲行情,隨着我國進入WTO,中國繭絲綢市場在世界上也有舉足輕重的份量!
總之,中國的軟件產業應該走本身的路,只有經過「已過程爲核心,以度量爲基礎,已人爲本"的管理政策;根據我國的國情、軟件業和公司的現狀,只有經過「幹",纔能有實績,才能實現「以信息化帶動工業化的大思路"!編程

本文同步分享在 博客「cwl_java」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。安全

相關文章
相關標籤/搜索