分散式資料庫設計10-14
本文提出了在.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 銀聯分散式資料庫安全設計分散式資料庫
- 【系統設計】分散式鍵值資料庫分散式資料庫
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- 分散式資料庫分散式資料庫
- 金融級分散式資料庫架構設計要點分散式資料庫架構
- 分散式時序資料庫QTSDB的設計與實現分散式資料庫QT
- 分散式資料庫概述分散式資料庫
- Greenplum資料庫,分散式資料庫,大資料資料庫分散式大資料
- 多層結構下分散式資料庫資料容災概要性設計分散式資料庫
- 著名的分散式事務資料庫谷歌Spanner設計有坑!分散式資料庫谷歌
- 讓資料庫不再成為業務發展瓶頸——分散式資料庫架構設計資料庫分散式架構
- 分散式資料庫系列(三)分散式資料庫
- 分散式資料庫系列(二)分散式資料庫
- 分散式資料庫系列(一)分散式資料庫
- 關聯式資料庫設計資料庫
- 分析型資料庫:分散式分析型資料庫資料庫分散式
- 《分散式資料庫HBase案例教程》分散式資料庫
- 分散式資料庫管理系列(一)分散式資料庫
- openGauss 分散式資料庫能力分散式資料庫
- 【資料庫設計】資料庫的設計資料庫
- 分散式資料庫如何控制資料重複 ?分散式資料庫
- 分散式資料庫火了 開源填補資料庫空白分散式資料庫
- 分散式資料庫技術論壇分散式資料庫
- “熱搜”中的分散式資料庫分散式資料庫
- 分散式資料庫排序及優化分散式資料庫排序優化
- 聊聊分散式 SQL 資料庫Doris(三)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(四)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(六)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(七)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(八)分散式SQL資料庫
- 分散式資料庫的健康評估分散式資料庫
- 分散式資料庫系統(DDBS) 概述分散式資料庫
- Hadoop元件--分散式資料庫HbaseHadoop元件分散式資料庫
- 分散式時序資料庫InfluxDB分散式資料庫UX
- 分散式資料庫 RethinkDB 2.0 釋出分散式資料庫
- 分散式資料庫元件——Database Link分散式資料庫元件Database
- ArcGIS Engine+分散式資料庫操作分散式資料庫
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記