分散式資料庫設計10-14

beifengwang發表於2013-10-21
本文提出了在.Net環境下使用一種新的開發語言C#結合ADO.Net資料訪問模型來開發分散式資料庫系統,大大簡化了開發過程。 

  1 分散式資料庫系統

  就其本質而言,分散式資料庫系統的資料在邏輯上是統一的,而在物理上卻是分散的。與集中式資料庫相比它有如下主要優點:

  · 解決組織機構分散而資料需要相互聯絡的問題。

  · 均衡負載。負載在各處理機間分擔,可避免臨界瓶頸。

  · 可靠性高。資料分佈在不同場地,且存有多個副本,即使個別場地發生故障,不致引起整個系統的癱瘓。

  · 可擴充性好。當需要增加新的相對自主的組織單位時,可在對當前機構影響最小的情況下進行擴充。

  分散式資料庫系統雖然有諸多優點,但它同時也帶來了許多新問題。如:資料一致性問題、資料遠端傳遞的實現、通訊開銷的降低等,這使得分散式資料庫系統的開發變得較為複雜。幸運的是,微軟的.Net開發環境為我們提供了C#開發語言和ADO.Net資料訪問模型,結合兩者來開發分散式資料庫系統能夠大大簡化開發工作。

  2 遠端處理框架和ADO.Net

  開發分散式資料庫系統需要解決的兩個重要問題是:各場地間的資料通訊以及對資料庫的操作及管理。使用C#結合ADO.Net能夠高效、可靠地解決這兩方面的問題。具體表現為,在C#中透過使用.Net遠端處理框架能夠方便地解決資料、命令遠端傳遞問題;C#透過ADO.Net對資料庫進行操作,使分散式資料庫系統中對資料庫的各種操作變得高效、可靠,同時易於解決資料一致性問題。

  2.1 .Net遠端處理框架

  實現資料和命令的遠端傳遞有三種方式。第一種是使用報文或訊息的方式,把要傳送的資料轉化為流格式,再透過套接字程式設計用報文的形式傳送到遠端主機。此種方法麻煩,不易實現。第二種是使用Web Service,即各遠端主機提供一個資料庫查詢服務的Web Service。這種方式只能對單個場地進行查詢,無法實現多場地的聯合查詢。第三種是使用.Net遠端處理框架(.Net Remoting Framework)技術,它將遠端呼叫的技術細節隱藏起來,服務程式只需透過簡單的設定就可以把本地物件變成為遠端提供服務的遠端物件,客戶端可以像訪問本地物件一樣透明地訪問遠端物件,所有的訊息、報文等都交給.Net Remoting物件處理,大大簡化了開發。

2.2 ADO.Net

  ADO.Net以XML為核心,是.Net資料庫應用程式的解決方案。它使用離線資料結構,資料來源中的資料被快取到資料集(DataSet)物件中,使用者無須鎖定資料來源,資料以XML格式儲存。

  2.2.1 ADO.Net管理資料一致性

  在分散式資料庫系統中,很可能出現多個使用者同時訪問和修改資料的情況,因此,對於分散式資料庫系統,資料一致性是不可或缺的。ADO.Net透過使用樂觀一致性方案來控制資料一致性(實際上DataSet物件被設計成支援使用樂觀一致性控制機制),即資料行只有在資料庫中真正被更新時才會被鎖定,而在悲觀一致性方案中,資料行在從被提取出來到在資料庫中更新這段時間內一直被鎖定。因此,使用ADO.Net能夠在更少的時間內響應數量巨大的使用者。

  另外,在分散式資料庫系統中,還會經常遇到當使用者修改自從提取出來以來已經被修改的行時,違反一致性原則。對此問題ADO.Net也作了很好地解決,即使用DataSet物件為每一條修改過的記錄維護兩個版本:原始版本和更新版本,在更新的記錄被寫回資料庫之前,先要把資料集中記錄的原始版本與資料庫中的當前版本進行比較,如果兩個版本匹配,就在資料庫中更新記錄;否則,就會出現違反一致性原則的錯誤。



  3 例項開發

  一個家用電器連鎖店設有一個總部和許多分店,總部和分店以及各分店之間經常需要進行各種資訊的查詢(如:商品當日價目表、各店銷售狀況和庫存資訊等),對此組織機構建立分散式資料庫查詢系統,可實現總部和各店資訊的共享,便於統一管理。

  3.1 系統設計

  3.1.1系統結構圖

3.1.2 系統實現步驟

  系統實現分為三個主要步驟。首先,為總部和各分店設計資料庫。由於資料量較大,故採用SQL Server為每個分店建立銷售和庫存資料庫,同時為總部建立員工資料庫、整個連鎖店的存貨資料庫、信用卡客戶資料庫以及供應商資訊資料庫等。其次,需要建立一個提供資料庫服務(DbServer)的動態連結庫(dll),將查詢時所要用到的一些服務(如:遠端物件的釋出和獲取等)和函式(如:本地異地資料表的查詢、資料表的遠端建立和刪除、表間的連線和合並等)置入該dll中,各分店都需要使用這個dll,以便查詢時對一些服務和函式進行呼叫。最後,根據實際需要開發客戶端查詢介面。

  3.2系統實現的關鍵技術

  3.2.1 遠端物件的釋出與獲取

  系統執行後所要做的第一個工作是釋出本地的遠端物件並獲取其它各店所釋出的遠端物件。釋出遠端物件時,首先要設定一個網路埠號,然後建立並註冊一個通道,最後釋出該伺服器端的啟用物件。其它場地的伺服器根據IP地址和網路埠號即可方便地獲取所釋出的遠端物件.

3.2.2資料庫的訪問

  透過ADO.Net訪問資料庫,可以方便地連線資料庫,將資料來源中的資料匯入DataSet物件中,在DataSet物件中可對資料表進行各種操作,而且DataSet物件本身也可遠端傳遞。這為開發分散式資料庫系統帶來極大方便。

3.2.3 查詢

  分散式資料庫系統中的查詢一般分為三類:本地查詢、遠端查詢和聯合查詢。本地查詢和集中式資料庫的查詢沒什麼區別;對於遠端查詢,只要獲取遠端物件後,呼叫查詢函式,即可方便地實現;最複雜的是聯合查詢,涉及到多場地之間資料的查詢、表的遠端建立、傳遞、連線、合併等技術。下面以例項介紹聯合查詢的實現。

  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29212814/viewspace-774711/,如需轉載,請註明出處,否則將追究法律責任。

相關文章