網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步_第1頁
網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步_第2頁
網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步_第3頁
網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步_第4頁
網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網(wǎng)絡隔離環(huán)境下數(shù)據(jù)庫的同步11.相關概念數(shù)據(jù)庫同步數(shù)據(jù)庫復制21.相關概念數(shù)據(jù)同步(DataSynchroaization),又稱為數(shù)據(jù)的同步更新,并沒有嚴格的定義,這里我們引用兩個普遍接受的概念,數(shù)據(jù)同步是一個使得兩個集合中的數(shù)據(jù)看起來一致的處理過程數(shù)據(jù)同步是一種允許在不同計算機上的多個數(shù)據(jù)庫間保持數(shù)據(jù)一致性的手段。我們也可以理解為數(shù)據(jù)同步就是使分布在各結點上的副本數(shù)據(jù)與原數(shù)據(jù)彼此達到一致的過程。反過來也可以這樣說,所有導致各結點數(shù)據(jù)不一致的情況,都是缺乏數(shù)據(jù)同步控制造成的。定義:數(shù)據(jù)庫同步是指能在不同場地間的同構或異構數(shù)據(jù)庫在一定時間內保持數(shù)據(jù)一致性的過程。31.相關概念數(shù)據(jù)庫復制允許您在一個或多個遠程位置將數(shù)據(jù)的副本從一個服務器分發(fā)到一個或多個目標服務器中。使用復制技術,用戶可以將一份數(shù)據(jù)發(fā)布到多臺服務器上,從而使不同的服務器用戶都可以在權限的許可的范圍內共享這份數(shù)據(jù)。復制技術可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性。41.相關概念在實際使用中,從兩個數(shù)據(jù)庫數(shù)據(jù)最終要達到一致性的角度來看,數(shù)據(jù)庫同步和復制的含義是相同的,后面如不特別聲明,后面認為兩者概念一致。52.數(shù)據(jù)庫復制分類數(shù)據(jù)庫復制的分類有多種方法。1.按復制的內容、方法分類分為表復制和事務復制。62.數(shù)據(jù)庫復制分類(1)表復制表復制是把某一時刻源數(shù)據(jù)表的內容通過網(wǎng)絡復制到副本,因為復制的內容是某一時刻的表的狀態(tài),所以又形象地成為表快照。表復制傳輸?shù)氖菙?shù)據(jù),是將整個出版物復制給訂購者。它的內容也可以是部分的行、列或者視圖等。表復制,往往需要復制較多的數(shù)據(jù),因而對網(wǎng)絡資源需求相對較高,不僅要求有較高的傳輸速度,而且要保證網(wǎng)絡傳輸?shù)目煽啃浴?2.數(shù)據(jù)庫復制分類(2)事務復制事務復制是把修改源數(shù)據(jù)庫的事務發(fā)送到副本。復制的可以是修改的表項、事務或事務日志。副本接收到復制內容后,通過在本地數(shù)據(jù)庫執(zhí)行接收到的事務操作來實現(xiàn)與源數(shù)據(jù)庫或者過程的一致。事務復制在網(wǎng)絡中傳送的是事務,即將發(fā)生的變化傳送給訂購者,是一種增量復制。在事務復制中,由于要不斷監(jiān)視源數(shù)據(jù)庫的數(shù)據(jù)變化,因而主服務器的負擔較重。當出版數(shù)據(jù)發(fā)生變化時,這種變化很快會傳遞給訂購者,而不是表復制那樣等待一個相對較長的時間間隔。某些數(shù)據(jù)庫系統(tǒng)中的過程化復制實質上是一種程序化了的事務復制。82.數(shù)據(jù)庫復制分類2.按參與復制的節(jié)點間的關系分類按參與復制的節(jié)點間的關系可分為主從復制、對等復制和級聯(lián)式復制。92.數(shù)據(jù)庫復制分類(1)主從復制主從復制指的是參與多個數(shù)據(jù)庫的各個副本中有一個是主副本,數(shù)據(jù)的更新只在主副本上發(fā)生,其他副本的數(shù)據(jù)變化無需同步到主副本上去,單向同步實現(xiàn)起來比較簡單,可以由源數(shù)據(jù)庫負責數(shù)據(jù)完整性一致性,目標數(shù)據(jù)庫甚至可以去除類似主外鍵、觸發(fā)器定義的數(shù)據(jù)約束,并且在系統(tǒng)崩潰時恢復起來較容易。102.數(shù)據(jù)庫復制分類(2)對等復制對等復制指的是參與同步各個副本之間無主從之分,所有副本的作用和地位是等同的,數(shù)據(jù)更新可能發(fā)生各個副本上,并且更新可以傳播到其他副本,并保持各個副本之間的數(shù)據(jù)一致性。對等復制實現(xiàn)起來較復雜,需要考慮更新沖突的檢測和解決。實際應用中可以通過確立特定的數(shù)據(jù)只在某個站點有更新權限,從而避免更新沖突,或者某個站點的更新具有較高的優(yōu)先級來裁決沖突。112.數(shù)據(jù)庫復制分類(3)級聯(lián)式復制級聯(lián)式復制是主從結構的一個擴展,它也是由一個主拷貝和若干個副拷貝組成,不同于主從結構的是它允許每個從屬副拷貝具有再復制的能力,即一個從屬副拷貝可以把接收到的復制數(shù)據(jù)再傳給下一個從屬副拷貝。例如,在Oracle中一個快照站點也可以作為主站點。122.數(shù)據(jù)庫復制分類3.按照復制的復雜性分類按照復制的復雜性可分為基本復制和高級復制。132.數(shù)據(jù)庫復制分類(1)基本復制復制中主要是單向的更新或者說在只有主站點可以對數(shù)據(jù)進行更新時。142.數(shù)據(jù)庫復制分類(2)高級復制復制中包含了雙向或多向的更新,此時有可能產生多個站點同時更新某一數(shù)據(jù)的情況,如可更新的快照復制,對等復制及對等復制和基本復制混合的復制實現(xiàn)等。在高級復制中,往往會產生復制沖突,應用和實現(xiàn)相對復雜。另外不同的數(shù)據(jù)庫廠商也從不同的實現(xiàn)角度使用角度對數(shù)據(jù)庫復制進行了分類。153.數(shù)據(jù)庫同步的一致性方式1.緊湊一致性方式采用此種方式的復制又稱為同步復制,它是指所有結點上的副本數(shù)據(jù)保持嚴格的數(shù)據(jù)一致性,不論從哪個結點訪問,用戶所得到的查詢結果均是相同的;對源數(shù)據(jù)庫所做的任何修改能夠立即反映到目標數(shù)據(jù)庫上去。它的優(yōu)點是數(shù)據(jù)永遠是一致的,缺點是源站點的更新響應相對慢些。163.數(shù)據(jù)庫同步的一致性方式緊湊一致性方式使用兩段提交服務來協(xié)調事務工作,事務涉及的資源在事務執(zhí)行過程中都被鎖定,以便事務的所有部分作為一個整體全部提交或全部回滾。如果事務跨越多個數(shù)據(jù)庫,則當任何部分失敗,整個事務就會失敗,如某個場地故障(網(wǎng)絡不通),則在源數(shù)據(jù)庫的更新總會失敗。這樣數(shù)據(jù)所有拷貝在任何時間都能保持一致,但這種同步方式對系統(tǒng)的可靠性要求很高,而且使得主數(shù)據(jù)庫的效率降低,降低了數(shù)據(jù)庫的容錯機能和可用性。由于遠程傳輸速率、響應時間等因素的影響,目前看來,緊湊一致模式只適合在局域網(wǎng)上運行。173.數(shù)據(jù)庫同步的一致性方式2.松散一致性方式采用此種方式的復制又稱為異步復制,當源站點上的更新事務提交后,其他復制站點上的更新才能發(fā)生。它允許數(shù)據(jù)的各個副本之間可能存在暫時的不同步狀態(tài),即當原始數(shù)據(jù)發(fā)生了變化后,這種變化不會立即反映到其它副本上去,而是經(jīng)過一定的時間間隔,可能是幾秒、幾分、幾小時甚至幾天或更長時間)后才被傳播出去,使結點的副本數(shù)據(jù)得到同步。183.數(shù)據(jù)庫同步的一致性方式松散一致性方式的好處是源數(shù)據(jù)庫的更新過程和復制過程異步進行,源站點更新響應快。復制過程不影響源數(shù)據(jù)庫的更新,兩者之間存在一個相對較長的時間延遲,如果修改能停下來等到復制過程趕上,則數(shù)據(jù)的每個拷貝之間就能一致。當參與復制的某個站點有故障時,則那個節(jié)點的復制過程暫時停止,等待發(fā)生故障的節(jié)點解除故障后再進行復制,在某一個時間目標數(shù)據(jù)庫能達到與源數(shù)據(jù)庫一致的狀態(tài)。因而異步復制可以支持各種不同的網(wǎng)絡,如局域網(wǎng)、廣域網(wǎng)、快速和慢速的通信網(wǎng)絡以及數(shù)據(jù)庫之間的周期性的連接。194.數(shù)據(jù)庫同步的過程數(shù)據(jù)庫同步的過程由源數(shù)據(jù)庫到目標數(shù)據(jù)庫的同步過程中,源數(shù)據(jù)庫捕獲的變更信息先保存在某個位置,然后再轉發(fā)到目標數(shù)據(jù)庫所在的場地,并將這些變更的信息應用到目標數(shù)據(jù)庫整個過程可分為以下三個步驟,變化捕獲、數(shù)據(jù)分發(fā)和數(shù)據(jù)更新,它們組成了數(shù)據(jù)庫同步過程的三大功能模塊,如圖204.數(shù)據(jù)庫同步的過程214.1變化捕獲源數(shù)據(jù)庫需要同步對象的變化捕獲是數(shù)據(jù)同步的基礎,它直接決定了數(shù)據(jù)同步的更新方式和選時方式變化數(shù)據(jù)的捕獲有很多種方式,一般可以歸納為以下七種基本方法224.1變化捕獲1.快照法快照是數(shù)據(jù)庫中存儲對象在某一時刻的即時映像。通過為同步對象定義一個快照或采用類似方法,可以將它的當前映像作為更新目標數(shù)據(jù)庫的內容??煺辗ㄊ亲詈唵蔚淖兓东@方法,可以在任何數(shù)據(jù)庫甚至是其他結構化或半結構化的數(shù)據(jù)源上實現(xiàn)。它不需依賴特別的機制,不占用額外的系統(tǒng)資源,管理和操作也非常容易,而且在同步初始化和崩潰恢復時是必須的。但由于無法區(qū)分同步對象中哪些具體項發(fā)生改變,將沒有發(fā)生變化的記錄也同步了,因此效率很低。Oracle和SQLServer都提供了基于快照的方法,事實上所有的復制方案都要隱含用它來初始化目標數(shù)據(jù)庫。234.1變化捕獲在具體實現(xiàn)的時候,如圖所示,可以將同步對象序列化為一個同步序列,然后傳輸?shù)侥繕藬?shù)據(jù)庫上應用。244.1變化捕獲2.觸發(fā)器法在源數(shù)據(jù)庫為同步對象創(chuàng)建相應的觸發(fā)器,當對同步對象進行修改、插入或刪除等DML命令時,觸發(fā)器被喚醒,將變化信息記錄下來。基于觸發(fā)器法克服了基于快照法的主要缺點,只記錄了發(fā)生變化的信息,提高了效率。但是觸發(fā)器法要占用的一定的系統(tǒng)資源,有觸發(fā)器失敗造成DML命令失敗的風險,對較復雜的同步任務需要合理的配置和實施,管理不方便。這種方法一般適合在那些有多觸發(fā)器機制的數(shù)據(jù)庫系統(tǒng)中使用。Oracle的對稱復制綜合應用了基于快照和基于觸發(fā)器兩種方法。254.1變化捕獲264.1變化捕獲3.時間戳法這種方法為需要同步的每個表都添加一個時間戳字段,原有的應用系統(tǒng)在該列記錄每個記錄修改時間。這種方法不影響原有應用的運行效率,但卻需要對原有系統(tǒng)做較大的調整,而且不能捕獲到那些并非通過應用系統(tǒng)引起的操作數(shù)據(jù)變化,也很難處理刪除的記錄同步。274.1變化捕獲4.日志法數(shù)據(jù)庫日志作為維護數(shù)據(jù)完整性和數(shù)據(jù)庫恢復的重要工具,其中己經(jīng)包含了全部成功提交的操作記錄信息?;谌罩痉ň褪峭ㄟ^分析數(shù)據(jù)庫日志的信息來捕獲同步對象的變化序列,如圖284.1變化捕獲294.1變化捕獲5.1API法一些小型數(shù)據(jù)庫和非關系型的數(shù)據(jù)庫沒有觸發(fā)器和日志機制,可以在應用程序和數(shù)據(jù)庫之間引入一類中間件,由它提供一系列API,在API上來完成應用程序對數(shù)據(jù)庫修改的同時,記錄下同步對象的變化序列,來達到捕獲變化數(shù)據(jù)的目的,如圖304.1變化捕獲314.1變化捕獲在某種意義上,基于API方法可以看成是基于日志法的一個變種,它能實現(xiàn)基于日志法的大多數(shù)優(yōu)點,而且既會給異構數(shù)據(jù)庫同步帶來便利,也不增添DBA的負擔。但是基于API法存在兩個嚴重缺陷:其一,對那些不經(jīng)過API中間件操作進行的SQL語句而產生的數(shù)據(jù)變化,API是無法捕捉到的;其二,應用程序的可移植性差,當從一種運行環(huán)境移植到另一種運行環(huán)境時,往往要重新編寫應用程序甚至改變數(shù)據(jù)庫模式。324.1變化捕獲6.影子表法許多情況下,同步系統(tǒng)無須了解源數(shù)據(jù)庫同步對象的每一次操作,只要知道最后總共發(fā)生了什么變化(即至上次同步以來的凈變化)就足夠了??梢栽诔跏蓟瘯r為同步對象表T建立一個影子(shadow)表S,也就是作一份當時的拷貝,以后就可在適當時機通過比較當前T和S的內容來獲取凈變化信息,如圖334.1變化捕獲344.1變化捕獲影子表法能在任何數(shù)據(jù)庫上實現(xiàn),應用程序可以方便地在多種平臺間因此很適合解決異構數(shù)據(jù)庫同步,影子表法的代價只有一倍的存儲空間的管理成本。由于得到的是凈變化值,傳輸效率還能進一步提高。354.1變化捕獲7.控制表變化法基于控制表變化法就是為每個要同步的源表T創(chuàng)建一個控制表C,C只包含T的主鍵字段Pk和一些控制信息字段,當T中某個記錄發(fā)生變化時,C中同主鍵Pk的記錄也隨即被修改。這一過程通??梢酝ㄟ^觸發(fā)器實現(xiàn),到時候只需根據(jù)C就能知道T的變化信息,如圖364.1變化捕獲374.1變化捕獲384.2數(shù)據(jù)分發(fā)技術分發(fā)又稱為傳播,負責節(jié)點之間的數(shù)據(jù)發(fā)送和接收,它把原數(shù)據(jù)庫的變化信息從源節(jié)點傳輸?shù)侥繕斯?jié)點。在對等式復制的時候,還要負責傳遞控制信息和仲裁結果。在數(shù)據(jù)傳送過程中,數(shù)據(jù)的分發(fā)由不同的節(jié)點承擔會產生不同的分發(fā)模型,從而影響同步的組織形式和效率。一般可分成推式(Push)、拉式(Pull)和推拉結合三類模型394.2數(shù)據(jù)分發(fā)技術如果由源節(jié)點承擔分發(fā)任務,傳播內容表現(xiàn)為由源節(jié)點主動地發(fā)送給目標節(jié)點,形象的描述為由源節(jié)點將傳播內容推入目標節(jié)點,這就是“推式(PUSH)”模型。而如果由目標節(jié)點承擔分發(fā)任務,表現(xiàn)為由目標節(jié)點向源節(jié)點申請傳播內容,形象的描述為目標節(jié)點將傳播內容拉過來,這就是“拉式(PULL)”模型

兩者相比,考慮到源節(jié)點可以主動減少傳播內容方面的因素,推式模型的優(yōu)勢在于效率較高,而拉式模型在于容易調度。這些差別會隨著節(jié)點數(shù)量的增多而表現(xiàn)得更加明顯。404.2數(shù)據(jù)分發(fā)技術414.2數(shù)據(jù)分發(fā)技術由于它們各有優(yōu)缺點,現(xiàn)有大多數(shù)復制方案都同時支持這兩種模型,只有少數(shù)只支持其中的一種,如sybase只有推式模型。如果分發(fā)任務既不是由源節(jié)點也不是由目標節(jié)點承擔,而是由第三個節(jié)點承擔,則構成“推拉結合”模型,如圖2一13所示424.2數(shù)據(jù)分發(fā)技術434.2數(shù)據(jù)分發(fā)技術當節(jié)點數(shù)目比較少或復制任務比較少時,它無論在性能還是在成本上都不合算當節(jié)點增多而又有大量復制任務,特別是需要把復制工作獨立出來時,推拉結合模型是最合適不過的。微軟的MSSQLserver就支持此種分發(fā)模型444.3數(shù)據(jù)更新技術數(shù)據(jù)更新是指根據(jù)同步對象的變化序列信息來修改目標數(shù)據(jù)庫,使目標數(shù)據(jù)庫獲得與源數(shù)據(jù)庫一致的狀態(tài)。通常緊接著數(shù)據(jù)分發(fā)后執(zhí)行,有時候變化數(shù)據(jù)會在接收端緩存一下;有時候是直接捆綁在一起的,比如在緊湊一致性同步的環(huán)境下。454.3數(shù)據(jù)更新技術更新的數(shù)據(jù)內容可以是同步對象的完全拷貝、變化序列或者凈變化。目標數(shù)據(jù)庫在按不同操作處理它們時,對主鍵的要求也不一樣。CREATE操作:用更新數(shù)據(jù)創(chuàng)建一個新表,用于同步表初始化和系統(tǒng)崩潰時恢復。由于主鍵和索引的重要性,所以在初始化時也必須同步過來;INSERT操作:將更新數(shù)據(jù)插入已存在的表,目標表可以無主鍵,但無法保證數(shù)據(jù)一致性;UPDATE操作:修改已存在表的相關記錄,源表與目標表都必須有主鍵并且等價;DELETE操作:刪除已存在表中的記錄,源表與目標表都必須有主鍵并且等價464.3數(shù)據(jù)更新技術主從表的更新,要求源數(shù)據(jù)庫與目標數(shù)據(jù)庫有等價的外鍵關系,在發(fā)送端保證主從表數(shù)據(jù)變化的順序,此時對于完全拷貝時要先拷貝主表并添加數(shù)據(jù);對于凈變化,則需要仔細考慮這個問題,對于添加操作要能在接收端識別出主從表并保證主表的數(shù)據(jù)先添加,若是刪除操作,則需要先操作從表,對于更新操作,則可以要求不能更新主鍵,否則也只能先操作從表。474.3數(shù)據(jù)更新技術考慮異構數(shù)據(jù)庫同步系統(tǒng),即參與同步的數(shù)據(jù)庫各個副本使用的是不同的數(shù)據(jù)庫系統(tǒng),如各個副本可能是oraele、MSSQLserver,甚至是其他非關系型的數(shù)據(jù)庫等。每個數(shù)據(jù)庫系統(tǒng)在加入異構數(shù)據(jù)庫同步系統(tǒng)之前本身就已經(jīng)存在,擁有自己的DMBS。異構數(shù)據(jù)庫同步系統(tǒng)的各個組成部分具有自身的自治性,實現(xiàn)數(shù)據(jù)共享的同時,每個數(shù)據(jù)庫系統(tǒng)仍保有自己的應用特性、完整性控制和安全性控制。對于異構數(shù)據(jù)庫同步系統(tǒng),在數(shù)據(jù)更新時必須要進行數(shù)據(jù)轉換,使得從源數(shù)據(jù)庫傳輸過來的變化序列能夠應用到異構的目標數(shù)據(jù)庫。由于非關系型數(shù)據(jù)庫的應用場合較少,下面主要考慮關系型異構數(shù)據(jù)庫之間的數(shù)據(jù)轉換思路。484.3數(shù)據(jù)更新技術異構數(shù)據(jù)轉換的基本思想是:從源數(shù)據(jù)庫的數(shù)據(jù)字典中取出關系的定義、字段的定義,依定義取出記錄的內容,按目的數(shù)據(jù)庫的數(shù)據(jù)格式進行處理,再將關系的定義、字段的定義、記錄內容存入目的數(shù)據(jù)庫的數(shù)據(jù)字典和數(shù)據(jù)庫表中。不同的數(shù)據(jù)庫定義了不同的數(shù)據(jù)類型,兩種數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)轉換的關鍵問題之一是解決各種數(shù)據(jù)類型的匹配問題。494.3數(shù)據(jù)更新技術我們必須先確定兩種數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)定義及對應關系,然后考慮如何實現(xiàn)數(shù)據(jù)轉換。兩種數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)轉換的關鍵問題之一是解決各種數(shù)據(jù)類型的匹配問題,通常有兩種方式實現(xiàn)這種轉換,直接轉換和間接轉換504.3數(shù)據(jù)更新技術一種是直接轉換,即定義兩種數(shù)據(jù)庫數(shù)據(jù)類型直接的轉換映射關系,根據(jù)映射關系直接將一種數(shù)據(jù)庫數(shù)據(jù)類型轉換為另一種數(shù)據(jù)庫數(shù)據(jù)類型,如ORACLE的日期類型用DATE、SQL用Datetime

第二種是間接轉換,即通過某種中間數(shù)據(jù)類型(如SQL92標準數(shù)據(jù)類型)進行轉換,首先將需要轉換的源數(shù)據(jù)庫的數(shù)據(jù)類型轉換成中間數(shù)據(jù)類型,然后在由中間數(shù)據(jù)類型轉換成目標數(shù)據(jù)庫的數(shù)據(jù)類型。51直接轉換的優(yōu)點是轉換速度快、轉換精度高,缺點是可擴展差,如果有多個數(shù)據(jù)庫(N個,N>=3)的數(shù)據(jù)需要轉換,那么需要建立個匹配方案來實現(xiàn)。而且,當有第N+l個數(shù)據(jù)庫的數(shù)據(jù)需要轉換時,需要添加個擴展模塊4.3數(shù)據(jù)更新技術524.3數(shù)據(jù)更新技術而間接轉換的優(yōu)點是容易實現(xiàn)異構數(shù)據(jù)庫之間的轉換,所需的轉換模塊最少:可擴展性強,當?shù)贜十1個數(shù)據(jù)庫加入時,只需編寫這個數(shù)據(jù)庫與中間數(shù)據(jù)庫的轉換模塊即可。間接轉換的缺點是由于轉換次數(shù)的增加造成的轉換時間加長,轉換精度降低。535.1等價SQL語句等價SQL語句的定義等價SQL語句是“等價SQL語句法”數(shù)據(jù)庫同步方法的思想基礎,但其概念卻很容易理解。所謂等價SQL語句是指這樣兩條(組)SQL語句,他們在某一時刻對數(shù)據(jù)庫的操作會產生同樣的改變。為了更清晰的理解這樣一句話,我們來舉一個例子,假設有這樣一個關于個人信息的表Persons{id序號、name姓名、sex性別、age年齡},關鍵字段為id,其當前數(shù)據(jù)如圖3一1所示。545.1等價SQL語句555.1等價SQL語句簡單分析下可以看出(l)組的一條SQL語句與(2)組的四條SQL語句都實現(xiàn)了將表Persons里每個人的年齡加1的功能,所以這兩條(組)SQL語句是等價的。565.1等價SQL語句但是如果在表中有兩個姓名為elvis的話,這兩條語句就不再等價575.1等價SQL語句等價SQL語句法概述等價SQL語句法的核心思想是:在源數(shù)據(jù)庫端為需要同步的表ST(Sourcetable)建一個變化跟蹤表DSSTeT_ST(TrackingchangesTable),在同步表上新建三個觸發(fā)器,分別是Insert觸發(fā)器、Update觸發(fā)器、Delete觸發(fā)器,用來捕獲在表ST上的各種更新操作并將所有新的字段信息和操作類型、操作順序、操作時間等信息保存在變化跟蹤表DSSTCTST中,隨后同步程序從變化跟蹤表DSSTCT_ST讀取變化序列,對每一條變化信息,組成與之等價的SQL語句,然后應用到目標表TT(TargetTable)上,使得目標表也發(fā)生與ST表相同的變化,從而達到目標表與源表的同步。585.1等價SQL語句網(wǎng)絡隔離裝置的存在,阻斷了數(shù)據(jù)庫之間原有的通信服務,因而由數(shù)據(jù)庫本身提供的基于兩段鎖和事務隊列的同步復制是無法實現(xiàn)的,因而只能采取異步復制。在源數(shù)據(jù)庫端先捕獲變化信息,通過隔離裝置傳輸?shù)浇邮斩嗽倬彺嫫饋?,然后再應用到目標?shù)據(jù)庫,接收端緩存目的是提高網(wǎng)絡效率,以免數(shù)據(jù)庫執(zhí)行失敗造成數(shù)據(jù)網(wǎng)絡重傳。595.1等價SQL語句網(wǎng)絡隔離環(huán)境下的內網(wǎng)通常是安全級別較高的網(wǎng)絡,它的信息應該受到完全的保護,一般不會允許外網(wǎng)用戶的修改此種情況下的數(shù)據(jù)庫同步主要是單向同步,即由內網(wǎng)到外網(wǎng)的同步,并且為了更好的保護內網(wǎng)的信息,所有同步的設置都在發(fā)送端完成,采用推式模型分發(fā)同步數(shù)據(jù)。605.1等價SQL語句整個系統(tǒng)運行后,只有內網(wǎng)能發(fā)出能夠在外網(wǎng)目標數(shù)據(jù)庫上執(zhí)行的“等價SQL語句”變化序列,外網(wǎng)目標數(shù)據(jù)庫只能根據(jù)該變化序列來達到與內網(wǎng)源數(shù)據(jù)庫數(shù)據(jù)的同步更新。即使有需要從外網(wǎng)修改的數(shù)據(jù),也需經(jīng)另外的途徑(如人工、反向隔離裝置等)傳播到內網(wǎng),經(jīng)內網(wǎng)審核后,還是首先在內網(wǎng)數(shù)據(jù)庫應用修改,然后再傳播到外網(wǎng)。615.1等價SQL語句單向同步的另一個好處是數(shù)據(jù)庫本身的數(shù)據(jù)完整性一致性約束可以由源數(shù)據(jù)庫來保證,在目標數(shù)據(jù)庫完全可以刪除所有的主外鍵關系、觸發(fā)器等數(shù)據(jù)約束等,這樣就不必考慮表之間的數(shù)據(jù)更新次序,也不必考慮更新沖突問題。基于以上的分析,可以將“等價SQL語句法”數(shù)據(jù)庫同步就系統(tǒng)分為以下幾個環(huán)節(jié):同步配置、變化捕獲、數(shù)據(jù)分發(fā)、數(shù)據(jù)更新。626數(shù)據(jù)同步策略1設置同步策略作用數(shù)據(jù)同步策略用于指定數(shù)據(jù)同步工作時,源數(shù)據(jù)庫變更數(shù)據(jù)發(fā)送到目的數(shù)據(jù)庫的時間或目的數(shù)據(jù)庫要求接收源數(shù)據(jù)庫變更數(shù)據(jù)的時間。隨著企業(yè)應用系統(tǒng)的開發(fā),系統(tǒng)的開銷越來越大,系統(tǒng)資源的占用也就越來越緊張。如何合理地安排數(shù)據(jù)同步時間,既使數(shù)據(jù)同步工作發(fā)揮最有效的作用,又使數(shù)據(jù)同步工作不占用太多的系統(tǒng)資源,這就是設置數(shù)據(jù)同步策略的根本所在。因為一直地保持實時同步,對于絕大多數(shù)同步對象來說,既浪費系統(tǒng)資源也非必要。636數(shù)據(jù)同步策略2同步策略分類數(shù)據(jù)同步策略一般有即時同步、定時同步、日志記錄滿時同步以及系統(tǒng)空閑時同步等幾種策略。(l)即時同步:指源數(shù)據(jù)庫的同步對象一有變更,就立即把更新數(shù)據(jù)傳送到目標數(shù)據(jù)庫,基本上可以忽略傳送時間上的遲延。在一個同步系統(tǒng)中,當同步對象變更比較頻繁時,即時同步將很占用系統(tǒng)資源。(2)定時同步:按指定的時間或時間間隔,把該時間前源數(shù)據(jù)庫的更新數(shù)據(jù)傳送到目標數(shù)據(jù)庫。646數(shù)據(jù)同步策略2同步策略分類(3)日志記錄滿時同步:指采集的日志記錄達到一定的數(shù)量(用戶指定)時,把該日志里記錄的源數(shù)據(jù)庫所有更新數(shù)據(jù)傳送到目標數(shù)據(jù)庫。(4)系統(tǒng)空閑時同步:指在系統(tǒng)和資源比較空閑時,把源數(shù)據(jù)庫的更新數(shù)據(jù)傳送到目標數(shù)據(jù)庫。該同步可以避開繁忙的系統(tǒng)時段,在系統(tǒng)資源大量空閑的時候進行同步,不過該同步需要隨時偵測系統(tǒng)及資源情況。對于觸發(fā)器法,上述幾種同步策略都可以使用;而對于日志分析法,即時同步就不能做到,因為日志分析不是每時每刻都在進行,所以就達不到即時,除非使用第三方的監(jiān)聽程序,才能做到即時同步。656數(shù)據(jù)同步策略3.3同步策略配置文件可以采用INI格式文件來保存同步策略配置。INI文件是一種專門用來保存應用程序初始化信息和運行環(huán)境信息的文本文件,一個INI文件是由若干個段(Section)組成,每個段中包含若干關鍵字(Key)及相應的值(value)對INI文件進行寫操作時,如果段和關鍵字已經(jīng)存在時,當前值就會被新寫入的值所替代;如果段或關鍵字不存在,則創(chuàng)建新的段或關鍵字。它可以很好地改善程序的可維護性和可用性:一旦同步策略配置需要變更,可以直接修改INI文件或在同步策略配置界面間接修改INI文件。INI文件簡單易懂,操作方便。666數(shù)據(jù)同步策略3.3同步策略配置文件677數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)7.1系統(tǒng)總體結構687數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)7.2系統(tǒng)功能模塊設計日志文件格式“基于SQL還原法”首先要在源數(shù)據(jù)庫中創(chuàng)建記錄變更信息的日志文件。針對兩種不同的變化捕獲方法,日志文件將采用不同的格式。日志分析法的日志文件直接采用文本文件格式,而觸發(fā)器法的日志文件則采用表結構格式,因為在觸發(fā)器中很難直接寫文本文件,不過這種表結構格式的日志在傳送時需轉化為文本文件格式。不管哪種格式的日志文件,它必須記錄操作時間、操作類型、被還原的SQL語句或初始創(chuàng)建表語句等信息。最后要傳送的日志文件格式如下:69707數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)7.2系統(tǒng)功能模塊設計1觸發(fā)器法觸發(fā)器是一類特殊的存儲過程,被定義為在對表或視圖發(fā)出修改、插入或刪除操作時自動執(zhí)行所定義的SQL語句,它比數(shù)據(jù)庫本身標準功能有更精細和更復雜的數(shù)據(jù)控制能力。觸發(fā)器的主要作用就是其能夠實現(xiàn)由主鍵和外鍵所不能保證的復雜的參照完整性和數(shù)據(jù)的一致性。除此之外,觸發(fā)器還有強化約束(EnforceRestrietion)、跟蹤變化(Auditingehanges)、級聯(lián)運行(Caseadedoperation)等許多功能。正是利用觸發(fā)器的這些強大的功能,可以來實現(xiàn)數(shù)據(jù)庫的變化捕獲。由于絕大多數(shù)數(shù)據(jù)庫的觸發(fā)器用法大同小異,這里針對SQLServer數(shù)據(jù)庫來加以實現(xiàn),其它數(shù)據(jù)庫易于仿效實施。717數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)SQLServer中觸發(fā)器創(chuàng)建語法如下[27):727數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)SQL語句還原原理SQLServer觸發(fā)器機制中使用了兩個特殊的臨時駐留內存的表:DELETED表和INSERTED表。DELETED表用于存儲DELETE和UPDATE操作所影響的行的副本,DELETED表和觸發(fā)器表通常沒有相同的行;INSERTED表用于存儲INSERTED和UPDATE操作所影響的行的副本,INSERTED表中的行是觸發(fā)器表中新行的副本。DELETED表和INSERTED表一被激活,就動態(tài)生成在內存空間里。當執(zhí)行DELETE操作時,記錄從觸發(fā)器表中刪除,并傳輸?shù)紻ELETED表中;當執(zhí)行INSERT操作時,新建記錄被同時添加到INSERTED表和觸發(fā)器表中;當執(zhí)行UPDATE操作時,舊記錄被移到DELETED表中,新記錄被添加到INSERTED表和觸發(fā)器表中737數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)747數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)根據(jù)DELETED和INSERTED兩個表的特性,就很容易地捕獲源表的變化,還原出SQL操作語句。一般情況下,INSERT操作可從取INSERTED表還原出一條INSERTED語句,DELETE操作可從DELETED表還原出一條或多條DELETE語句,而UPDATE操作則被拆分成兩個子操作,分別從這兩個表中還原出一條DELETE語句加一條INSERT語句。下面看一下還原過程75767數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)SQL語句異構處理基于SQL還原法”的最大特點是屏蔽了各種數(shù)據(jù)庫DML語法的不同,因為它完全按照SQL92標準語法來還原SQL語句;其次,“基于SQL還原法”采用通用的ODBC或JDBC驅動連接數(shù)據(jù)庫,因而也屏蔽了各種數(shù)據(jù)庫連接的不同。777數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)SQL語句異構處理觸發(fā)器法還原SQL語句的過程其實就是按照SQL92標準語法逐一拼湊SQL語句的過程,也是異構處理的過程,因為在拼湊過程中SQL語句里的表名、字段名以及數(shù)據(jù)格式將被映射還原成目標表的表名、字段名和數(shù)據(jù)格式。在具體的拼湊過程中,若遇到語法關鍵字如INSERT、DELETE、UPDATE等位置,按原字符寫入;若遇到表名、字段名位置,從源表和目標表的映射定義中取出相應的目標表的表名、字段名寫入:若遇到字段值位置,首先判斷該字段的數(shù)據(jù)類型,然后按照SQL92標準數(shù)據(jù)格式書寫。如果數(shù)據(jù)類型有異構,則要進行數(shù)據(jù)類型格式的轉換,不過對數(shù)據(jù)類型的異構有限制,不是任何數(shù)據(jù)類型都可轉換,例如字符型就不能轉換成日期型。不同SQL語句的拼湊還原過程。78797數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)同步觸發(fā)針對不同的同步策略,同步觸發(fā)模塊被設計成不同的功能器件。對應于定時模式,同步觸發(fā)模塊被設計成一個時鐘,時間一到立即激活通訊;對應于日志記錄模式,同步觸發(fā)模塊被設計成一個計數(shù)器,計數(shù)一到立即激活通訊;對應于系統(tǒng)空閑時模式,同步觸發(fā)模塊被設計成一個監(jiān)聽器,一監(jiān)聽到系統(tǒng)空閑就立即激活通訊:若是即時模式,就不需要同步觸發(fā)模塊了,一旦SQL還原完成就直接激活通訊。同步策略一經(jīng)選定,同步觸發(fā)模塊就開始工作,根據(jù)選定的策略參數(shù)值判斷觸發(fā)條件是否滿足,一旦條件滿足,立即激活通訊模塊,發(fā)送同步數(shù)據(jù)包。807數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)用戶上層協(xié)議鑒于GAP的單向請求連接的特性,這里同步采用推式模型。源節(jié)點在發(fā)送請求獲準后,發(fā)送日志文件,日志文件采用文本文件格式,因為不會很大,不進行壓縮,這樣可以提高同步效率。目標節(jié)點接收日志文件,同時返回文件是否收到的信息,如果沒有收到,要求重發(fā)日志文件。即使文件傳送成功,PEGAP的連接也不能立即斷開,必須等待目標數(shù)據(jù)庫的更新成功與否通知。如果更新成功,就斷開連接;如果更新不成功,還需要再重發(fā)日志文件。若第二次更新還不成功,就忽略本次同步,留待下次同步時再解決。如圖817數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)827數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn)數(shù)據(jù)更新數(shù)據(jù)更新在目標節(jié)點實施。目標節(jié)點一收到日志文件,就立即從日志文件提取SQL語句,如果是CREATE操作,則是初始化操作,在目標數(shù)據(jù)庫創(chuàng)建同步新表;如果是INSERT、DELETE或UPDATE操作,則直接執(zhí)行被還原的SQL語句,更新目標表,因為被還原的SQL語句己經(jīng)是目標表的SQL語句了,不需再作任何轉換。全部更新成功后通知源節(jié)點,清除該日志文件的內容。如果遇到更新失敗,就停止執(zhí)行并通知源節(jié)點要求重新發(fā)送日志文件。它的流程如圖8384同步預配置在啟動同步前首先必須配置系統(tǒng)的同步參數(shù),建立參與同步的源節(jié)點與目標節(jié)點的兩兩映射關系?!盎赟QL還原法”的實現(xiàn)為用戶提供了專門的同步配置接口,配置接口的作用就是為用戶提供方便的同步參數(shù)設置,并為數(shù)據(jù)庫完成某些初始創(chuàng)建,例如觸發(fā)器生成。8586配置文件保存配置參數(shù)由于INI文件的良好特性,可以采用INI格式文件來保存同步配置參數(shù),一旦同步配置參數(shù)需要變更,可以直接修改配置文件,這也為同步配置帶來了方便。87888網(wǎng)絡隔離數(shù)據(jù)庫同步的應用以電廠二次系統(tǒng)防護項目中的網(wǎng)絡隔離環(huán)境下的數(shù)據(jù)庫同步為例介紹了等價SQL語句法數(shù)據(jù)庫同步系統(tǒng)的具體應用,介紹了系統(tǒng)實施的需求分析、實施步驟和運行情況,并對運行性能作了分析評價。898網(wǎng)絡隔離數(shù)據(jù)庫同步的應用8.1背景近年來,隨著電力企業(yè)的飛速發(fā)展,電力系統(tǒng)數(shù)據(jù)網(wǎng)絡也在迅速擴大,在調度中心、電廠、用戶等之間進行的數(shù)據(jù)交換也越來越多電廠、變電站大量采用遠方控制,對電力控制系統(tǒng)和數(shù)據(jù)網(wǎng)絡的安全性、可靠性和實時性提出了嚴峻挑戰(zhàn)908網(wǎng)絡隔離數(shù)據(jù)庫同步的應用8.1背景目前有一些調度中心、發(fā)電廠、變電站在規(guī)劃、設計、建設及運行控制系統(tǒng)和數(shù)據(jù)網(wǎng)絡時,對網(wǎng)絡安全問題重視不夠,使得具有實時控制功能的監(jiān)控系統(tǒng),在沒有進行有效安全防護的情況下與當?shù)氐腗IS互連,甚至與因特網(wǎng)直接互連,存在嚴重的安全隱患。日趨嚴重的網(wǎng)絡入侵、生產安全問題以及內部機密信息在網(wǎng)絡上的泄密等大量的事實,也給電力企業(yè)的安全生產和管理敲響了警鐘。918網(wǎng)絡隔離數(shù)據(jù)庫同步的應用8.1背景電力部門己經(jīng)達成了共識:同政府、軍事等其它涉密網(wǎng)一樣,電力企業(yè)內部網(wǎng)絡,特別是和生產相關的實時數(shù)據(jù)網(wǎng)絡、調度數(shù)據(jù)網(wǎng)絡的信息安全必須得到重視和加強國家經(jīng)貿委最近頒發(fā)《電網(wǎng)與電廠計算機監(jiān)控系統(tǒng)及調度數(shù)據(jù)網(wǎng)絡安全防護規(guī)定》928網(wǎng)絡隔離數(shù)據(jù)庫同步的應用8.1背景(1)電力二次系統(tǒng),包括電力監(jiān)控系統(tǒng)、電力通信及數(shù)據(jù)網(wǎng)絡等。(2)電力監(jiān)控系統(tǒng),是指用于監(jiān)視和控制電網(wǎng)及電廠生產運行過程的、基于計算機及網(wǎng)絡技術的業(yè)務處理系統(tǒng)及智能設備等。包括電力數(shù)據(jù)采集與監(jiān)控系統(tǒng)、能量管理系統(tǒng)、變電站自動化系統(tǒng)、換流站計算機監(jiān)控系統(tǒng)、發(fā)電廠計算機監(jiān)控系統(tǒng)、配電自動化系統(tǒng)、微機繼電保護和安全自動裝置、廣域相量測量系統(tǒng)、負荷控制系統(tǒng)、水調自動化系統(tǒng)和水電梯級調度自動化系統(tǒng)、電能量計量計費系統(tǒng)、實時電力

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論