亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用SyncML進行異構數據庫復制技巧

2019-11-18 13:09:34
字體:
來源:轉載
供稿:網友

  在開發分布式應用程序時,可用性與性能是主要考慮事項。但是用數據存儲解決這些問題可能會給異構數據存儲之間的數據同步帶來一些問題。在本文中,Jayanthi Suryanarayana 和 Neil Tunnicliffe 將提供一種解決方案:用 JDBC 和 SyncML 標準來實現通用的數據庫數據復制。
  
  在設計分布式應用程序時,必須考慮可用性與性能。一般的解決方案是在客戶機系統上包含數據存儲。通常,由于資源有限,客戶機需要一個輕量級數據存儲。這種方法為異構數據存儲之間的數據同步帶來了挑戰。這個問題的一種解決方案是采用基于 java 的方法,用 JDBC 和 SyncML 標準進行異構數據庫復制。
  
  復制概述
  
  復制是在兩個環境之間復制全部或部分數據庫的過程。為了保持一致,對源數據庫所做的更改要傳播到復制的數據庫中。復制可以是單向的,也可以是雙向的。雙向復制可能更困難一些,因為對任何數據庫所做的更改都可能產生不一致的數據。當這些更改在兩個數據庫之間傳播時,需要有一個策略來調解這些差異,以便維護一致性。
  
  ID 處理
  
  作為復制的基本需求,我們需要惟一地標識將要復制的每個數據單元。對于雙向復制,還需要一個能夠標識數據庫之間對應數據單元的映射方案。根據復制的需求,可以采用各種各樣的方案。對于單向復制,主數據庫可以要求為數據單元生成 ID。對于雙向復制,必須根據應用程序的 ID 生成方案定義映射方案。ID 生成方案與映射方案可以是每個數據庫使用的 ID 編號的相互排斥范圍,在這個范圍內,ID 編號是正好匹配的。更復雜的示例中可能包括 ID 生成服務或者特定于數據庫的方案,在這種情況下,必須在數據庫之間維護 ID 的映射。
  
  變化檢測
  復制過程中的下一步是找出哪些數據單元已經更改。在關系數據庫中,可以用附加字段來記錄數據單元的狀態和狀態變化的時間戳?;蛘?,也可以使用觸發器使部分變化檢測過程自動化。附加到表上的插入/更新/刪除觸發器可以檢測到對數據單元所做的更改,并在更改日志表中記錄這些更改。這樣就可以用變更記錄表(change log table)確定在任何指定時間上對數據單元所做的更改。
  
  復制
  復制的目標是產生公共數據集的多個一致的副本。為了實現這個目標,必須交換每個數據庫中檢測到的更改,并使它們一致。在這里,您面臨著一個設計上的挑戰。您可以作出如下選擇:
  
  表示將交換的那些更改的數據格式。
  傳輸機制,例如 HTTP、FTP、JMS 等,取決于應用程序的需求。
  參與實體之間的交換協議。
  數據單元之間的沖突檢測和解決機制。
  SyncML 定義了一個同步協議,使用 xml 消息來添加、刪除和修改數據單元。它也答應交換安全信息,這樣節點就可以執行身份驗證。
  Sync4J 是 SyncML 的開源 java 實現,它能夠支持多種傳輸機制。Sync4J 也根據應用程序的需求,給出了沖突檢測框架和解決策略。
  
  示例實現
  本文將介紹一個簡單的數據復制示例。這個示例將演示兩個異構數據庫之間的雙向客戶數據記錄復制,每個數據庫都包含一個結構類似的客戶表。使用惟一的客戶 ID 來標識被復制的每條記錄。我們在表中添加了兩列,以記錄每條記錄的狀態和最后狀態變化時間戳。對于這個示例,狀態與時間戳這兩列必須通過應用程序或手工進行填充。正如前面說過的,觸發器是一種在變更記錄表中自動填充更改數據的適當解決方案。但是,在這個例子中使用的數據庫目前擁有的觸發器能力還很有限,因此我們選擇不用觸發器來實現這項任務。而且,這個實例不包括雙向復制的沖突解決策略。所以沖突會導致復制過程失敗。
  
  我們要配置在 Tomcat servlet 容器中運行 Sync4J 服務器的服務器端環境,還要用 Derby 作為源數據庫。此外,還要配置客戶端環境,用 HSQLDB 作為目標數據庫,在上面運行 Sync4J 客戶程序。(在這個例子中,假設已經安裝了 J2SE SDK 和 Ant。)
  
  服務器端安裝
  要運行示例應用程序,需要在服務器端安裝三個開源組件:Tomcat、Sync4J 服務器和數據庫引擎。安裝 Tomcat、Sync4J 和 Derby 按以下步驟安裝三個主要的服務器組件(請參閱 參考資料,以獲得下載鏈接)下載并展開 Tomcat 5.0.29。本文中用 TOMCAT 表示 Tomcat 的安裝目錄。將環境變量 J2EE_HOME 設為 TOMCAT。下載并展開 Sync4J Server 4.0.2。本文中用 SYNC4J 表示 Sync4J 服務器的安裝目錄。下載并安裝 Derby。本文中用 DERBY 表示 Derby 的安裝目錄。
  
  配置示例應用程序
  接下來,需要配置示例代碼。請單擊本文頂部或底部的 Code 圖標來下載j-sync4j.zip。將該文件解壓到包含本示例使用的客戶端代碼、服務器代碼和 SQL 腳本的目錄中。本文中用 TESTSYNC 表示這個目錄。
  
  設置 JDBC 驅動程序類路徑
  設置 JDBC 驅動程序的類路徑:將 db2jcc.jar 和 db2jcc_license_c.jar 分別從 DERBY/lib 復制到 TOMCAT/common/lib 和 SYNC4J/lib 中。用于 Sync4J 服務器的 Derby 安裝腳本,接下來,將目錄 TESTSYNC/derby 移動到 SYNC4J/default/sql。提供的腳本與 Sync4J 服務器下載一起提供的其他數據庫腳本類似,但是要針對 Derby 對它們稍作修改。構建示例 Sync4J 服務器模塊,要構建示例 Sync4J 服務器模塊,請按以下步驟進行:
  
  將 TESTSYNC/module/build.bat 中的 SYNCSERVER_DIR 設置為指向 SYNC4J。
  運行 TESTSYNC/module/build.bat。
  配置 Sync4J 服務器
  
  要配置 Sync4J,請按以下步驟進行:
  在 Derby 中創建叫做 sync4jdb 的數據庫。步驟 3 的代碼中描述了 JDBC 設置,這些設置假設 DERBY 中有一個叫做 sync4jdb 的數據庫,用戶名為 sync4j,口令為 sync4j。
  用 Derby 附帶的 IJ 工具創建并設置這個數據庫(有關 Derby 工具的信息,請參閱 參考資料)。
  設置 the PRoperties in SYNC4J/install.properties 中的屬性,如下所示(用 JDBC 設置中的實際路徑代替 DERBY):
  
  dbms=derby
  jdbc.classpath=DERBY/lib/db2jcc.jar;DERBY/lib/db2jcc_license_c.jar;
  jdbc.driver=com.ibm.db2.jcc.DB2Driver
  jdbc.url=jdbc:derby:net://localhost:1527/"DERBY/sync4jdb"
  jdbc.user=sync4j
  jdbc.passWord=sync4j
  modules-to-install=foundation-1.0,pdi-1.1,testsync-1.0
  
  設置 Derby 數據庫
  執行 DERBY/frameworks/NetworkServer/bin/startNetworkServer.bat,將 Derby 作為網絡服務器來啟動。有關將 Derby 作為網絡服務器啟動的更多信息,請參閱 Derby 的手冊。用 IJ 工具執行 TESTSYNC/create_table_server.sql,在 Derby 數據庫中創建表 customer1。為 Tomcat 安裝 Sync4J 服務器和示例模塊要為 Tomcat 服務器安裝 Sync4J 服務器并設置 Sync4J 數據庫,需要完成以下步驟:
  
  從 SYNC4J 中運行以下命令:SYNC4J/bin/install.cmd tomcat。當給出命令提示時,按 Y 來重新構建 testsync-1.0 模塊的數據庫。從 SYNC4J 中運行 SYNC4J/bin/sync4j-tomcat.cmd,然后啟動 Tomcat 服務器。請注重服務器端設置;現在可以安裝客戶機了。
  
  客戶端安裝
  需要在客戶端安裝數據庫引擎 HSQLDB。然后安裝并配置示例代碼。設置客戶機應用程序和數據庫要設置客戶機應用程序數據庫,請按下以步驟進行:
  
  下載并解壓 HSQL 數據庫。本文中用 HSQLDB 作為 HSQL 數據庫的安裝目錄。將 HSQL 作為網絡服務器啟動,它帶有一個叫做 test 的數據庫。運行 TESTSYNC/create_table_client.sql 在 HSQL 數據庫中創建類似的表(customer2)。將 HSQL JDBC 驅動程序 HSQLDB/lib/hsqldb.jar 復制到 TESTSYNC/client/lib。在 TESTSYNC/client/config/spds/sources/testsync.properties 中設置客戶機的 JDBC 屬性,如下所示:
  
  jdbcDriver=org.hsqldb.jdbcDriver
  urlConnection=jdbc:hsqldb:hsql://localhost/test
  
  正確地設置用戶名稱和口令。然后,運行 TESTSYNC/client/build.bat 來構建客戶端應用程序。運行客戶機應用程序向 Derby 數據庫中的 customer1 表中插入記錄。例如:
  
  insert into customer1 (userid, password, cl_op_type, clo_op_time)
  values ('user1', 'pass1', 'N', CURRENT_TIMESTAMP);
  
  向 HSQL 數據庫中的 customer2 表中插入記錄(請確保 userid 的值與 customer1 中記錄的值不同)。例如:
  
  insert into customer2 (userid, password, cl_op_type, clo_op_time)
  values ('user2', 'pass2', 'N', CURTIME());
  
  運行 TESTSYNC/client/output/testsync.bat。customer1 表現在應當包含剛才插入 customer2 表中的記錄,而 customer2 表應當包含來自 customer1 表的記錄。
  
  結束語
  在本文中,我們討論了在設計通用數據庫復制解決方案時涉及的一些重要概念和問題。在設計復雜的分布式應用程序時,資源占用少的嵌入式 Java 數據庫的可用為您提供了一個很好的選擇,同時它還答應使用異構數據庫。對于復制過程和相關問題有很好理解,有助于我們改進這類系統的設計。我們鼓勵您擴展這個示例,以便用沖突解決策略來處理雙向復制,并使用記錄更改數據的自動記錄。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxx综合视频| 国产97在线视频| 欧美国产日韩中文字幕在线| 日韩有码在线播放| 久久久久亚洲精品| 亚洲国产成人久久综合一区| 2019中文字幕免费视频| 亚洲午夜性刺激影院| 日韩中文字幕网| 亚洲一区二区久久久久久| 永久免费毛片在线播放不卡| 97香蕉久久超级碰碰高清版| 日韩av日韩在线观看| 丰满岳妇乱一区二区三区| 亚洲天堂av综合网| 欧洲美女7788成人免费视频| 日韩精品视频免费专区在线播放| 亚洲国产欧美一区二区丝袜黑人| 中文字幕精品www乱入免费视频| 91精品国产色综合久久不卡98口| 亚洲男女自偷自拍图片另类| 欧美视频在线观看免费| 成人日韩在线电影| 92看片淫黄大片看国产片| 日韩美女在线观看一区| 国语自产偷拍精品视频偷| 91久久精品国产91久久性色| 国产成人福利网站| 欧美成人久久久| 欧美日韩免费在线| 亚洲图片在线综合| 国产这里只有精品| 久久最新资源网| 久久亚洲一区二区三区四区五区高| 欧美xxxx14xxxxx性爽| 韩国一区二区电影| 日韩av网站导航| 国产精品扒开腿爽爽爽视频| 亚洲精品久久久久国产| 国产精品亚洲自拍| 亚洲缚视频在线观看| 91色在线视频| 亚洲第一综合天堂另类专| 国产国产精品人在线视| 国产精品扒开腿做爽爽爽男男| 国产精品一二三视频| 久久久久久成人精品| 琪琪第一精品导航| 91亚洲国产成人精品性色| 成人免费福利视频| 91网站在线免费观看| 国产亚洲欧洲高清一区| 日韩美女激情视频| 亚洲精品国精品久久99热| 国产精品白丝jk喷水视频一区| 精品一区二区三区三区| 久久久久久国产精品| 欧美日韩国产成人| 日韩精品视频免费| 国产精品91久久| 在线播放国产一区中文字幕剧情欧美| 国产精品99导航| 亚洲色在线视频| 精品色蜜蜜精品视频在线观看| 国产69精品久久久久9| 国产精品美乳一区二区免费| 97久久精品人搡人人玩| 日韩在线观看免费高清完整版| 国产成人福利网站| 亚洲久久久久久久久久| 亚洲国产精品久久久久秋霞蜜臀| 欧美视频在线免费看| 国产一区二区三区视频在线观看| 另类少妇人与禽zozz0性伦| 最近2019中文免费高清视频观看www99| 国产成人精品999| 日本韩国欧美精品大片卡二| 久久精品视频免费播放| 97超级碰碰碰久久久| 秋霞av国产精品一区| 精品久久久在线观看| 久久久久国产精品www| 日本欧美一二三区| 欧美日韩美女在线| 精品人伦一区二区三区蜜桃网站| 91在线免费看网站| 久久精品国产96久久久香蕉| 57pao成人永久免费视频| 中文字幕亚洲综合久久筱田步美| 国产欧美在线播放| 亚洲精品小视频在线观看| 亚洲男人av电影| 亚洲欧美另类中文字幕| 亚洲国模精品私拍| 国产精品久久久久免费a∨大胸| 国产成人精品日本亚洲专区61| 九九热这里只有在线精品视| 亚洲最大福利网站| 亚洲三级av在线| 97人洗澡人人免费公开视频碰碰碰| 久久精品一本久久99精品| 欧美性猛交xxxx黑人猛交| 国产精品丝袜久久久久久高清| 92看片淫黄大片欧美看国产片| 国产精品视频免费在线| 成人在线视频网站| 国产成人小视频在线观看| 亚洲а∨天堂久久精品9966| 日韩成人黄色av| 欧美怡红院视频一区二区三区| 国产精品成人一区| 国产盗摄xxxx视频xxx69| 国产极品精品在线观看| 日韩影视在线观看| 久久精彩免费视频| 欧美激情a∨在线视频播放| 国产一区二区三区久久精品| 亚洲综合视频1区| 国产精品私拍pans大尺度在线| 69视频在线播放| 九九久久久久久久久激情| www.欧美精品一二三区| 日韩精品免费在线播放| 九九久久久久久久久激情| 国产在线播放不卡| www.日韩免费| 高清日韩电视剧大全免费播放在线观看| 亚洲人免费视频| 欧亚精品中文字幕| 欧美激情精品久久久久久蜜臀| 亚洲最大激情中文字幕| 久久久久久久久久久成人| 91日本在线视频| 欧美激情亚洲视频| xxx欧美精品| 日韩成人在线网站| 亚洲精品aⅴ中文字幕乱码| 久久亚洲电影天堂| 川上优av一区二区线观看| 日韩美女免费视频| 亚洲国产精品成人av| 欧洲成人免费aa| 91老司机在线| 欧美激情精品久久久久久久变态| 国产欧美在线播放| 日韩成人激情视频| 4438全国亚洲精品在线观看视频| 国模吧一区二区三区| 国产视频久久久久久久| 91高清视频在线免费观看| 热久久视久久精品18亚洲精品| 97久久精品人搡人人玩| 久久伊人色综合| 欧美成人免费在线视频| 日韩av在线直播| 日韩美女av在线免费观看| 麻豆乱码国产一区二区三区| 日韩免费在线看| 亚洲级视频在线观看免费1级| 色视频www在线播放国产成人| 国产精品久久97| 国产精品一区二区三区久久| 久久久精品久久久| 久久精品国产综合|