介紹
在資料庫中存儲一個關係r,有以下幾種方法:
(1) 本地存儲:數據在本地資料庫系統中存儲。
(2) 複製:系統維護某個關係r的幾個完全相同的副本(拷貝) ,各個副本存儲在不同的節點上。與複製相對的方式是只存儲關係r的一個拷貝。
(3) 分片:關係被劃分為幾個片段(垂直分片、水平分片或混合分片) ,各個片段存儲在不同的節點上。
(4) 複製和分片:關係被劃分為幾個片段,系統為每個片段維護幾個副本。
數據複製實際上就是指在資料庫系統的多個資料庫間拷貝和維護資料庫對象的過程。這個對象可以是整個表、部分列或行、索引、視圖、過程或者他們的組合等。廣義上,凡是通過資料庫系統生成資料庫對象副本的過程都可以稱為複製。實現數據複製的幾種常見方法主要有拷貝法(使用SQL語句中COPY命令) 、觸發器方法、狹義意義上的複製技術方法。狹義的數據複製,是指由資料庫系統提供的數據複製組件(數據複製模組)實現,由資料庫系統管理的數據複製。
分類
按複製的內容、方法分類
1、表複製
是把某一時刻源數據表的內容通過網路複製到副本,因為複製的內容是某一時刻的表的狀態,所以又形象地成為錶快照。表複製傳輸的是數據,是將整個出版物複製給訂購者。它的內容也可以是部分的行/列或者視圖等。表複製,往往需要複製較多的數據。因而對網路資源需求相對較高,不僅要求有較高的傳輸速度,而且要保證網路傳輸的可靠性。
2、事務複製
是把修改源資料庫的事務傳送到副本。複製的可以是修改的表項、事務或事務日誌。副本接收到複製內容後,通過在本地資料庫執行接收到的事務操作來實現與源數據或者過程的一致。
事務複製在網路中傳送的是事務,即將發生的變化傳送給訂購者,是一種增量複製。在事務複製中,由於要不斷監視源資料庫的數據變化,因而主伺服器的負擔較重。當出版數據發生變化時,這種變化很快會傳遞給訂購者,而不像表複製那樣等待一個相對較長的時間間隔。某些資料庫系統中的過程化複製,實質上是一種程式化了的事務複製。
從參與複製的節點間的關係分類
1、主從複製
複製中只允許從源資料庫(即主資料庫)向其他資料庫(從資料庫)複製對象,複製對象存放在從資料庫站點中。主從複製是最基本的一種結構。在這種結構中,定義一個主節點,其源數據稱為主節點數據(或主拷貝) ;定義1到n個複製節點,其從主節點複製過來的數據稱為複製點數據(或副拷貝) 。數據更新操作只能在主拷貝上進行,然後複製給其它副拷貝。
2、對等複製
所有副本在任何節點都可以被修改,並且修改可以傳送給其他副本,即所有站點的地位、作用是等同的,沒有主從關係。
3、級聯式複製
是主從結構的一個擴展,它也是由一個主拷貝和若干個副拷貝組成。不同於主從結構的是它允許每個從屬副拷貝(從屬站點)具有複製的能力,即一個從屬副拷貝可以把接收到的複製數據再傳給下一個從屬副拷貝。例如,在Oracle中一個快照站點也可以作為主站點。
按照複製的複雜性分類
當複製中主要是單向的更新或者說在只有主站點可以對數據進行更新時,我們常稱之為基本複製。當複製中包含了雙向或多向的更新,此時有可能產生多個站點同時更新某一數據的情況(如可更新的快照複製、對等複製及對等複製和基本複製混合的複製實現等) ,在實際資料庫系統中往往稱為高級複製。在高級複製中,往往會產生複製衝突,套用和實現相對複雜。其他的一些分類方法,可參見各資料庫系統從不同角度對複製技術的分類。
發展趨勢
資料庫技術正在以前所未有的速度發展和套用,同時也在推動資料庫複製技術尤其是高級複製技術的進一步發展。在高級複製中,如何根據實際情況組合配置各種複製方案、儘量避免衝突、組合配置複製衝突解決方案是分散式資料庫數據複製技術的難點。一方面這需要實際的環境的支撐;另一方面需要各種複製方案和衝突解決方案技術的發展;另外這些方案的組合搭配也包含了許多技術和技巧,而這些組合也需要不斷在實踐中檢驗。這都是今後複製資料庫技術研究的重點。我們相信,隨著技術的進步,特別是隨著多主體高級數據複製技術的完善,資料庫複製技術必將帶給我們更多的安全和便利,為數據存儲、傳輸提供更加方便、快捷的方法,為分散式資料庫的套用提供更強大的功能。