發布一個用於Oracle資料庫間資料複製的組件-OraSyner

來源:互聯網
上載者:User
 

     相信現在很多Application在使用db的時候,仍採用master-slave的方式,因為這種方式最貼近現實,開始可能只需要一台db server,可隨著資料量的增加,一台會不堪重負,此時我們必須增加server,來應付日益增長的data,而我們在開發程式的時候,可能並沒有想到系統日後要面臨這樣的分散式資料庫系統,此時最好的解決方案就是master-slave,這樣系統就可以不做任何的更新了。在工作中,我開發了一個用於同步master-slave之間資料的組件,他包括以下功能:

  1. 能夠同步master和slave的資料
  2. 在同步資料的時候,能夠記錄運行過程

   

    他的特點是一個通用的組件,他通過設定檔來設定master和slave庫,並且通過配置來設定要資料同步的資料表,當有新的資料表需要同步的時候,我們只需要在配置中增加一項就能解決問題。這個設定檔,名稱為:OraSyner.cfg,將它放置在程式啟動並執行目錄裡面。OraSyner.cfg中格式如下:

<?xml version="1.0" encoding="utf-8" ?>
<cfgs>
    <servers>
        <master>Password=321;User ID=username;Data Source=masterdb</master>
        <slave>Password=123;User ID=username;Data Source=slavedb</slave>
    </servers>
    <syntables>
        <table name="tablename">
            <key>key1</key>
            <key>    key2</key>
        </table>
    </syntables>
</cfgs>

 

節點名稱

使用狀態

節點說明

cfgs

在整個設定檔中有且只有一個

設定檔的根節點

servers

在整個設定檔中有且只有一個

用於聲明master-salve伺服器資訊的根節點

master

在一個server中有且只有一個

Master db的連接字串

slave

在一個server中有且只有一個

Salve db 的連接字串

syntables

在整個設定檔中有且只有一個

用於聲明待同步的資料表資訊的根節點

table

在syntables中0個或者多個

用於聲明待同步資料表資訊的節點

Table[@name]

在table節點中有且只有一個的屬性

用於指示同步資料表的名稱

key

在一個table節點中1個或者多個

用於指示待同步資料表的行標誌欄位

該組件的特點:

  1. 通俗易用,擴充性強,搞明白上面的配置說明就萬事大吉
  2. 能適用於任何環境之下,比如master在內網,而slave在外網,或者slave在內網,而master在外網,只要運行該組件的主機能串連到master和slave就可以。

該組件的工作原理:

通過讀取設定檔,將要同步的資料表資料讀取出來放到組件的DataSet中,然後針對每個表,先在master中擷取表字典,然後根據配置中的行標誌欄位,產生用於同步slave的語句,主要採用oracle中的

 MERGE INTO 
 USING  ON 
 WHEN MATCHED then
 WHEN NOT MATCHED THEN

語句來實現同步功能,也就是有就更新,沒有則插入,而一條條的 比對,效能會相對比較慢,所以先在slave中建立暫存資料表,將資料插入到該暫存資料表,然後一次性merge into.測試後,發現比一條條的快20倍左右。

本組件的適用範圍:

  1. 發布/訂閱不太方便的時候
  2. 資料量不宜太大,太大會搞死人的,比如上百萬,上千萬 ,我測試了下,幾萬的資料在幾秒內還是能搞定的。再大了本組件就沒戲了
  3. 臨時 充當資料同步工具(其實我開發這個就是為了這個目的)

使用辦法:

每次同步操作之需要調用Executor對象的Execute()方法即可,你可以將它加到作業調度軟體中,定時的執行。
注意:產生的log資訊會在程式啟動並執行目錄裡面的log檔案夾中按日期建立類似yyyyMmdd這樣格式的檔案夾。而如果想輸出比較詳盡的log資訊,在.config中檔案的<appSetting>中添加<add key="LogLevel" value="2"/>是必須的,value改為1,它只記錄錯誤和提示資訊,為0,只記錄錯誤,為2記錄錯誤,提示和調試資訊。

組件專案檔:/Files/jillzhang/OraSyner.rar 
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.