[摘 要]如何高效、安全地保持數據庫之間數據同步是當前數據庫技術研究熱點問題。本文對於分布式數據庫系統同步傳輸技術,通過數據庫同步機制研究解決了多級數據庫信息交換過程中上下級數據庫數據不一致問題。
[關鍵詞]分布式數據庫 同步傳輸 MobiLink 觸發器
隨著企業的不斷發展和壯大,企業的各子部門地處於不同區域的情況越來越多,為了使企業異地使用相同的數據,大多數企業都采用了數據庫提供的同步技術來解決這一問題,但該方法操作難度較大,而數據庫提供的同步技術也會因網絡、電力等原因造成時間同步無法進行,引起數據的丟失等[1]。本文就如何高效、安全地保持分布式數據庫之間數據同步進行研究,以期解決以上問題。
一、分布式數據庫同步技術理論概述
(一)分布式數據庫概述及特點
分布式數據庫(Distributed Database, DDB)是計算機網絡環境中各場地(Site)或結點(Node)上數據庫的邏輯集合。一般稱傳統方式的數據庫為集中式數據庫(Centralized Database, CDB);稱分布式數據庫系統中的各場地數據庫為局部數據庫(Local Database, LDB),是物理的數據庫;稱分布式數據庫為全局數據庫(Global Database, GDB),是邏輯的數據庫。分布式數據庫具有分布性和邏輯協調性。分布性是指數據不是存放在單一場地為單個計算機配置的存儲設備上,而是按全局需要將數據劃分成一定結構的數據子集,分散地存儲在各個場地上;邏輯協調性是指各場地上的數據子集,相互間由嚴密的約束規則加以限定而在邏輯上是一個整體。
(二)數據庫同步技術
通過交換每個成員中所有已更新的記錄和對象, 來更新一個副本集的兩個成員的過程。當每個副本集內的更改都相互應用於另一個副本集時, 兩個副本集成員就實現了同步。數據庫同步又分三種[2]:直接同步,即用於在直接連接到局域網的副本之間對數據進行同步的方法, 可通過共享的網絡;文件夾使用間接同步,即一種用於斷開連接環境中( 如帶著便攜式計算機外出時) 的同步方法,必須用“復制管理器”來配置間接同步;Internet 同步,用於將已配置了 Internet 服務器的脫機環境中的副本同步。必須使用“復制管理器”來配置 Internet 同步。
(三)緩沖池技術
一個緩沖池是與單個數據庫相關聯的,可以被多個表空間使用。當考慮將緩沖池用於一個或多個表空間時,必須保證表空間頁大小和緩沖池頁大小對於緩沖池所“服務”的所有表空間而言都是一樣的。一個表空間只能使用一個緩沖池。數據庫連接緩沖池,其實就是保存數據庫連接的一個集合。需要數據庫連接緩沖池是因為每次對數據庫的開閉都是非常耗時耗資源的,如果並發請求過大,可能就導致系統反應緩慢甚至造成崩潰。
(四) 觸發器實現算法簡介
當前數據庫應用的一個普遍要求是數據庫管理系統能夠在一些數據庫相關事件發生時觸發預先定義的操作,實現信息管理的自動化,因此引進了觸發器機制。觸發器可以增強引用完整性,加強復雜業務的規則,或者監控數據庫的變動,並執行一定的數據操作。觸發器機制實現主要涉及觸發事件的檢測以及觸發條件的判決等關鍵技術問題,以及對觸發器的編譯存儲和調用執行等具體操作。
觸發器事件檢測機制包括對事件的檢測和存儲,是實現觸發器的關鍵。觸發器的條件判決機制是觸發器的核心,根據 SQL99 標准的定義,可以將觸發器分為前觸發、約束判定和後觸發三種類型。觸發器的更新操作是對一個觸發器進行編譯後,替換已存在的作用在同一個表上的同名觸發器,基本操作與觸發器的創建是一致的;觸發器的刪除操作步驟主要是在數據字典中對指定的觸發器進行查詢並刪除。
二、需求分析
(一)系統功能
分布式數據庫同步系統主要完成對於網絡中數據庫系統的數據同步操作及相關設置,通過編寫程序實現網絡中對於 Oracle,MS SQL Sever 等數據庫之間數據的同步操作。利用緩沖池技術提供數據交換的安全保障,確保數據在同步過程中保持數據的一致性。采用標准的數據通訊方式,以及標准的同步交換協議。實現主數據庫對結點Oracle 數據庫,MS SQL Sever 數據庫數據的同步。觸發同步機制,使得主數據庫與結點數據庫數據保持一致性。 定制對異構數據庫自動同步操作,可以實現按預定規則實現定時更新數據庫數據。
(二)總體設計
分布式數據庫數據同步系統由變化捕獲、日志還原、同步觸發、通訊和數據更新等 5 個模塊組成。變化捕獲模塊負責捕獲變化並記錄日志;日志還原模塊把變更操作還原成數據庫語句;同步觸發模塊根據同步策略激活通訊發送;通訊模塊負責數據的發送與接收;數據更新模塊負責把傳送過來的數據更新到目標數據庫。
對於整個系統功能模塊來講,分布式數據庫同步系統包含五個基本功能模塊:啟動 ORA 同步,啟動 MMS 同步,自動同步,同步 ORA,同步 SQL。(1)啟動 ORA 同步,在主機數據庫所在服務器啟動 ORA 同步服務;(2)啟動 MMS 同步,在主機數據庫所在服務器啟動 SQL 同步服務;(3)自動同步,在主機數據庫所在服務器啟動自動同步服務,使得同步工作按照預定設置的條件進行自動同步服務;(4)同步 ORA,對於網絡中主機數據庫與 ORA 的結點數據庫進行同步工作,同步以後使得主數據庫與 ORA 的結點數據庫數據保持一致;(5)同步 SQL,對於網絡中主機數據庫與 SQL 結點數據庫進行同步工作,同步以後使得主數據庫與 SQL 的結點數據庫數據保持一致。
三、系統設計關鍵技術分析
(一)系統配置介紹
通用數據傳輸平台基於選定的 MobiLink 技術作為軟件開發的技術支持,使用Sybase ASA8.0 作為 MobiLink 的客戶端與同步服務器。通用數據傳輸平台系統具有傳輸對象的配置與定義功能,采用基於傳輸緩沖池的數據同步傳輸與日志傳輸技術,以撥號網絡作為主要應用環境,同時支持實時網絡傳輸環境。通用數據傳輸平台體現了通用性、高效性、安全性和穩定性。
(二)MobiLink 技術概述
MobiLink 技術一種基於發布/訂閱方式的異步消息中間件技術[3]。主要是以MobiLink 客戶端在建立 MobiLink 用戶的基礎上完成單向的同步發布/同步預訂,MobiLink 同步服務器只需要處於啟動的狀態,使 MobiLink 客戶端通過 MobiLink 同步服務器來進行同步。
1.MobiLink 的同步過程技術
同步會話是 MobiLink 客戶端和同步服務器之間的雙向數據交換過程,始終由客戶端開始進行同步過程。在此過程中,客戶端必須建立並維護與同步服務器的連接。如果成功,此會話將使遠程數據庫和統一數據庫保持相互一致的狀態。同步過程中包括上載和下載兩部分。 對於數據行的上載,MobiLink 客戶端准備並發送一個上載流,它包含從上次同步後在 MobiLink 客戶端經過更新、插入或刪除的所有行的列表。類似地,對於數據行的下載,MobiLink 同步服務器准備並發送一個下載流,它包含插入、更新和刪除的列表。
2.MobiLink 的同步腳本
MobiLink 同步邏輯由存儲在統一數據庫中的腳本組成,這些腳本可以是單個語句,也可以是存儲過程調用。在同步過程中,MobiLink 同步服務器將讀取這些腳本,並對統一數據庫執行這些腳本。腳本為您提供了在同步過程中的不同時間點執行任務的機會。您可以使用 Sybase Central,也可以使用存儲過程將腳本添加到統一數據庫中。
每個腳本對應於同步過程中的一個特定事件。僅當某個操作必須發生時才編寫腳本。所有不必要的事件都無需定義。同步過程的兩個主要部分是處理上載的信息和准各要下載的行。MobiLink同步服務器將在首次需要某一校本時讀取它進行准各,只讀取和准備一次。只要一個事件被激活,便執行與其關聯的腳本。大多數同步腳本都接受來自MobiLink同步服務器的參數您可以在腳本中使用這些參數,通過在腳本中放置問號即可做到這一點。腳本是以組的方式進行組織的,這些組被稱為腳本版本。通過指定特定的版本,MobiLink 客戶端可以選擇使用哪一組同步腳本來處理上載流及准備下載流。
3.MobiLink 的同步方式
MobiLink 的同步方式可以分為兩種[4]:1.基於時間戳的同步。時間戳方法是可以進行高效的同步的最實用的通用技術。此項技術涉及跟蹤每個用戶上次進行同步的時間,並使用此信息控制下載到每個遠程數據庫的行。MobiLink保留了一個用以說明每個 MobiLink 用戶上一次下載數據的時間的時間戳值。該值被稱為上次下載的時間戳。上次下載的時間戳將作為一個參數被提供給許多事件,該時間戳還可以在同步腳本中使用。2.快照同步。基於時間戳的同步適合於大多數同步。不過,有時候可能需要更新數據快照。表的快照同步是指完全下載表中的所有相關行,而不考慮這些行以前是否已經下載。這是最簡單的同步方法,但會引起大量的不必要的數據集交換,從而導致性能下降。可以使用快照同步下載表中的所有行,或者將此方法與在遠程數據庫之間對行進行分區中描述的行分區方法結合使用。快照同步最適合用於同時具有以下兩種特征的表:(1)行數相對較少:當表中行數比較少時,下載所有行所產生的開銷也會相對較小。(2)行信息經常更改:當表中的大多數行頻繁進行更改時,采用顯式排除上次同步後未發生更改的行的方法就沒有太大的必要。
(三)數據庫設計
分布式數據同步系統采用緩沖池技術來確保數據傳輸的安全性和一致性,根據系統分析:(1)主機數據庫主要由三部分組成:用戶信息表,本地數據庫表,傳輸緩沖池表;(2)子機數據庫主要有兩部分組成:本地數據庫表和傳輸緩沖池表。
(四)數據庫同步過程分析
數據庫同步系統同步數據總體同步過程如下:(1)用戶登陸,根據用戶信息表進行登陸操作;(2)啟動同步,針對不同的數據庫啟動對應的同步服務;(3)同步數據,同步操作開始;(4)比較緩沖池數據,如果相同說明雙方數據一致,同步結束;如果不同則更新緩沖池當中的數據,直到兩個緩沖池當中的數據再次達到一致;(5)更新緩沖池數據;(6)更新本地數據庫數據;(7)同步結束。
四、結論
隨著分布式數據庫廣泛應用於各個行業,異構數據庫海量數據傳輸成為計算機研究人員關注的焦點,本文研究了分布式數據庫之間數據同步,采用傳輸緩沖池同步技術,確保發送數據庫與接收數據庫數據的一致性。