摘要:該文對當前流行的分布式數據庫的數據復制技術進行了詳細的研究,并對數據復制的應用場合和過程做了系統的研究。分布式數據庫具有比較成熟的技術和應用環境,其中數據復制技術在分布式數據庫中應用越來越廣泛。基于數據復制技術,將使得分布式數據庫的開發和應用變得非常簡單。
關鍵詞:分布式數據庫;數據復制;數據同步
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)29-0277-03
A Research into Duplication of the Distributed Database
LI Li-gong
(Tianjin Railway Technical and Vocational College,Tianjin 300240,China)
Abstract: This paper analyses the technology and the application of the duplication of the distributed database in detail. The distributed database is a mature technology,and the duplication is in more and more application. On the base of data duplication, the development and application of it will become fairly/extremely simple.
Key words: distributed data bank; data duplication; data simultaneous
隨著數據庫及網絡技術的飛速發展和廣泛應用,特別是Internet的迅速普及,大大方便了跨地域企業的發展和管理。為了適應競爭環境,提高企業自身的管理水平,在管理上往往既要有各部門的局部控制和分散管理,也要有整個組織的全局控制和高層次的集中管理。這種集中管理要求各部門之間的信息既能靈活流動和共享,又能統一管理和使用。
隨著應用需求的擴大和管理水平的提高,集中式數據庫越來越體現出其局限性,這也直接導致了分布式數據庫的出現。隨著計算機網絡技術和數據庫技術的發展,分布式數據庫技術已經成熟,并且得到越來越廣泛的應用。然而,傳統的分布式數據庫系統既要提供局部管理又要實現全局同步,這就為應用系統的開發和布置帶來了很大的挑戰性。數據庫復制技術的出現為分布式數據庫的數據同步和管理提供了技術支持和保證,同時也解決了數據庫應用系統的開發和數據庫控制、管理之間的矛盾。
1 引言
分布式數據庫技術是分布式計算的一個重要組成部分,該技術允許數據在多個服務器端共享。采用分布式數據庫技術,一個本地服務器可以存取不同物理地點的遠程服務器上的數據,也可以使所有服務器均可持有數據的拷貝,以使分布式系統中的所有服務器均可進行本地存取。
在一個純分布式數據庫系統中,數據可以在很多個站點獲得,但只有一個站點存儲該數據。例如,某學院擁有主校區、北校區、南校區等三個校區,在三個校區分別布置有dbStudents、ndbStudents、sdbStudents三個數據庫站點,這是一個純分布式數據庫系統的三個站點,students表存放在dbStudents的站點上,三個站點都可以訪問students表,但是只有dbStudents對students的操作是本地存取的,其余站點都需要通過遠程訪問來存取students表。
在一個采用復制技術的分布式數據庫系統中,數據不僅可以在多個站點獲得,而且都是本地存取,各個站點都有該數據的副本。在上述例子中,students表不僅存儲在dbStudents上,在ndbStudents和sdbStudents上都有students表的拷貝,不論在哪個站點上訪問students表,對該表的操作都是本地存取。而各個服務器之間的數據同步則由數據庫系統通過相應的規則自動完成,對用戶來說是透明的。
幾乎所有的大型數據庫系統都提供了自己的數據復制解決方案和數據復制組件。分布式數據庫復制技術為分布式數據庫系統提供了許多優勢,在實踐中也有大量現實的需要。下面,以SQL Server2005為例來研究分布式數據庫的數據復制的機制和應用方法。
2 數據復制運行機制
SQL Server2005中的數據復制不僅能將一個數據庫的內容通過網絡復制到一個或多個服務器上,也能將數據庫的變化情況通過網絡傳遞給其他服務器。通過這種技術,可保證在多臺服務器中數據的一致性。任何一臺服務器上數據產生的變化,將引起其他服務器中數據的同步變化。
2.1 復制原理
在講述復制的概念時,通常可以借助出版業中常用的概念來了解復制服務的運行機制和相關術語,實際上在數據復制技術中也使用了出版業術語來表示復制拓撲中的組件,如發布服務器、分發服務器、訂閱服務器、發布、項目和訂閱等。
SQL Server2005中復制的運行機制是:發布服務器產生一個或多個發布,發布包含若干項目,發布服務器可以直接發行發布,也可以使用分發服務器代理發行。訂閱者接收訂閱的發布。
在復制中,包括發布服務器、發布、項目、分發服務器、訂閱服務器、訂閱等組件和服務。
復制的運行機制如圖1所示。在復制過程中有一個“復制代理”組件,復制代理負責在發布服務器和訂閱服務器之間復制和移動數據。對于復制過程,由自定義應用程序開始。自定義應用程序在對數據庫中數據進行修改后,由發布服務器根據事先設置的規則生成發布,然后由復制代理組件將發布的內容提供給分發服務器或直接分發給訂閱服務器。分發服務器在接收到發布后,也可以將發布傳輸到訂閱服務器。訂閱服務器收到發布之后,將數據庫中的數據與發布進行同步,使數據與發布服務器中的數據保持一致。
分發服務器可以和發布服務器合并,也可以單獨設置。如果單獨設置分發服務器,則可以減輕發布服務器的負擔,分發服務器負責將發布服務器要發布的數據傳送給訂閱服務器。
2.2 復制的類型
Microsoft SQL Server 2005 提供了3種可供使用的復制類型:事務性復制、合并復制、快照復制。
事務性復制通常從發布數據庫對象和數據的快照開始。創建了初始快照后,在發布服務器上所做的數據更改和架構修改通常在修改發生時傳遞給訂閱服務器。數據更改將按照其在發布服務器上發生的順序和事務邊界,應用于訂閱服務器,因此,在發布內部可以保證事務的一致性。默認情況下,事務性發布的訂閱服務器應視為只讀,因為更改將不會傳播回發布服務器。但是,事務性復制卻提供了允許在訂閱服務器上進行更新的選項。
與事務性復制相同,合并復制通常也是從發布數據庫對象和數據的快照開始,并且用觸發器跟蹤在發布服務器和訂閱服務器上所做的后續數據更改和架構修改。訂閱服務器在連接到網絡時將與發布服務器進行同步,并交換自上次同步以來發布服務器和訂閱服務器之間發生更改的所有行。合并復制允許不同站點自主工作,并在以后將更新合并成一個統一的結果。由于更新是在多個節點上進行的,同一數據可能由發布服務器和多個訂閱服務器進行了更新。因此,在合并更新時可能會產生沖突,合并復制提供了多種處理沖突的方法。
快照復制將數據以特定時刻的瞬時狀態分發,而不監視對數據的更新。發生同步時,將生成完整的快照并將其發送到訂閱服務器。快照復制可由其自身使用,但是快照處理通常還用于為事務性發布與合并發布提供初始的數據和數據庫對象集。在數據更改量很大,但很少發生時,快照復制是最合適的。
復制類型的選擇取決于多種因素,其中包括實際復制環境、要復制的數據類型和數量,以及是否在訂閱服務器上更新數據等等。實際環境包括復制中所涉及的計算機數量和位置,以及這些計算機是客戶端(工作站、便攜式電腦或手持設備)還是服務器。
2.3 復制代理
復制使用許多稱為代理的獨立程序執行與跟蹤更改和分發數據關聯的任務。默認情況下,復制代理實際上是SQL Server 代理安排的作業,必須基于SQL Server 代理,這些作業才能運行。復制代理通常有快照代理、日志讀取代理、分發代理、合并代理、隊列讀取代理、復制維護作業等構成。
3 數據復制的應用
3.1 數據復制的應用場合
復制的目的是提供數據的副本于多個服務器上,除了確保數據的同步、一致性之外,還可以提高數據查詢存取的性能。使用復制可以實現:
允許多個服務器保存相同數據的副本,當多個服務器需要讀取同一數據,或需要為應用程序分隔服務器時,可以提高數據庫存取的性能;
1) 具有較大的自主性,用戶可以在離線時處理數據副本,然后在連接時將對其他數據庫所做的操作傳播出去。也就是進行數據的同步更新。
2) 有利于OLTP應用程序與分析處理數據庫或數據倉庫這些需要讀取大量數據的應用程序區分開,以避免系統擁堵。
3) 依據業務實際需要,可以縮放要瀏覽的數據。例如,使用Web類型的應用程序瀏覽數據,只需要提供部分數據庫供網絡用戶瀏覽使用。
4) 提高數據匯總與讀取性能;
5) 使數據更貼近個人或組。這有助于減少多重用戶數據更新和查詢的沖突,因為數據可以通過網絡來分發,而且根據不同業務單位和用戶的需求來分割數據。
6) 使用復制作為服務器策略的一部分,復制是待命服務器策略的一項選擇。SQL Server2005的其他選擇包括記錄文件傳送及容錯轉移集群,用以在服務器故障時提供數據副本。
3.2 數據復制的過程
執行復制的過程會因所選復制類型和選項的不同而有所區別,但一般來說,復制由下列幾個階段組成:配置復制和發布數據、創建和初始化訂閱、同步數據。
3.2.1 配置復制和發布數據
復制部署始于配置發布服務器和分發服務器。分發服務器在事務性復制中的作用十分重要,但在合并復制和快照復制中的作用比較有限,僅用于代理歷史記錄和錯誤報告及監視。合并復制和快照復制通常使用與發布服務器在同一臺計算機上運行的分發服務器,而事務性復制可能使用遠程分發服務器,尤其在發布服務器為高吞吐量的 OLTP 系統時。
配置發布服務器和分發服務器后,可以根據數據、數據子集和數據庫對象來創建發布。創建發布時需要確定下列內容:
1) 要復制的數據和數據庫對象。
2) 要使用的復制類型和復制選項,包括篩選。
3) 快照文件的存儲位置以及初始同步發生的時間(除非手動傳遞初始數據集)。
4) 要為復制設置的其他屬性。
5) 根據配置發布時所選的復制類型和選項,訂閱服務器可能在傳遞初始數據集之后可以修改數據并將這些數據更改傳播到發布服務器,繼而可以將這些更改傳播到其他訂閱服務器。
3.2.2 創建和初始化訂閱
創建發布后,可以創建訂閱并配置其他選項。無論選擇快照復制、事務性復制,還是合并復制,在默認情況下,復制都會創建發布架構和數據的初始快照,然后將其保存到指定的快照文件夾位置。創建訂閱后,將根據創建發布時指定的計劃應用初始快照。如果訂閱服務器已具有初始數據集或希望手動應用快照,可以跳過一個或多個快照步驟。
3.2.3 同步數據
同步是在初始數據集應用于訂閱服務器后,在發布服務器和訂閱服務器之間傳播數據的過程。對于快照復制,同步意味著在訂閱服務器上重新應用快照,以便訂閱數據庫中的架構和數據與發布數據庫保持一致。對于事務性復制,同步數據意味著在發布服務器和訂閱服務器之間分發數據修改,如插入、更新和刪除。對于合并復制,同步意味著合并在多個站點上進行的數據修改,檢測并解決任何沖突,并且最終使數據在所有站點上收斂為相同的數據值。
4 結束語
本文介紹了分布式數據庫的數據復制原理與應用。在跨地域的網絡上構造基于因特網的分布式數據庫系統應用時,由于信息分布在不同的站點上,用戶往往要從多個站點獲取數據完成操作,同時要保證一定的效率和可用性。為了滿足這種需求,在分布式數據庫系統中使用復制機制是一種捷徑。實踐證明,在分布式數據庫系統中使用復制機制,對于建立跨地域的分布式數據庫系統具有較高的可行性,有著廣闊的應用前景。
與純分布式數據庫系統相比,采用復制技術的分布式數據庫系統更具有優勢:
1) 復制技術提高了系統的可靠性。當一個站點不可達時,用戶可以繼續查詢甚至更新剩余站點上的數據。也就是說,復制技術提供了優秀的Fail-Over保護。
2) 復制技術對共享數據提供了快速、本地的訪問,系統可以在多個站點之間進行訪問量的平衡。一些用戶訪問一個站點,而另一些用戶訪問其他站點,這樣減輕了所有站點的負載。同時用戶可以就近訪問所需的數據,減少了遠程訪問的代價,提高了系統的效率和響應速度。
3) 復制技術可以把相同的數據分布到多個不同區域的網絡,這樣,那些存在于區域的應用程序只需訪問本區域網絡內的站點,而不用訪問中心站點,從而大大減少了網絡通信的負載。
參考文獻:
[1] 劉智勇. SQL Server2005寶典[M].北京:電子工業出版社,2007.
[2] 李立功.SQL Server2005實例教程[M].北京:中國電力出版社,2008.
[3] (美) Solid Quality Learning.SQL Server 2005從入門到精通[M].王為,譯.北京:清華大學出版社,2006.