<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      毛毛的小窩 — 關(guān)注技術(shù)交流、讓我們一起成長

      導(dǎo)航

      用SyncML進(jìn)行異構(gòu)數(shù)據(jù)庫復(fù)制

      http://www.csai.cn 作者:Jayanthi 來源:賽迪網(wǎng)

        

            在開發(fā)分布式應(yīng)用程序時,可用性與性能是主要考慮事項(xiàng)。但是用數(shù)據(jù)存儲解決這些問題可能會給異構(gòu)數(shù)據(jù)存儲之間的數(shù)據(jù)同步帶來一些問題。在本文中,Jayanthi Suryanarayana 和 Neil Tunnicliffe 將提供一種解決方案:用 JDBC 和 SyncML 標(biāo)準(zhǔn)來實(shí)現(xiàn)通用的數(shù)據(jù)庫數(shù)據(jù)復(fù)制。

        在設(shè)計(jì)分布式應(yīng)用程序時,必須考慮可用性與性能。一般的解決方案是在客戶機(jī)系統(tǒng)上包含數(shù)據(jù)存儲。通常,由于資源有限,客戶機(jī)需要一個輕量級數(shù)據(jù)存儲。這種方法為異構(gòu)數(shù)據(jù)存儲之間的數(shù)據(jù)同步帶來了挑戰(zhàn)。這個問題的一種解決方案是采用基于 java 的方法,用 JDBC 和 SyncML 標(biāo)準(zhǔn)進(jìn)行異構(gòu)數(shù)據(jù)庫復(fù)制。

        復(fù)制概述

        復(fù)制是在兩個環(huán)境之間復(fù)制全部或部分?jǐn)?shù)據(jù)庫的過程。為了保持一致,對源數(shù)據(jù)庫所做的更改要傳播到復(fù)制的數(shù)據(jù)庫中。復(fù)制可以是單向的,也可以是雙向的。雙向復(fù)制可能更困難一些,因?yàn)閷θ魏螖?shù)據(jù)庫所做的更改都可能產(chǎn)生不一致的數(shù)據(jù)。當(dāng)這些更改在兩個數(shù)據(jù)庫之間傳播時,需要有一個策略來調(diào)解這些差異,以便維護(hù)一致性。

        ID 處理

        作為復(fù)制的基本需求,我們需要惟一地標(biāo)識將要復(fù)制的每個數(shù)據(jù)單元。對于雙向復(fù)制,還需要一個能夠標(biāo)識數(shù)據(jù)庫之間對應(yīng)數(shù)據(jù)單元的映射方案。根據(jù)復(fù)制的需求,可以采用各種各樣的方案。對于單向復(fù)制,主數(shù)據(jù)庫可以要求為數(shù)據(jù)單元生成 ID。對于雙向復(fù)制,必須根據(jù)應(yīng)用程序的 ID 生成方案定義映射方案。ID 生成方案與映射方案可以是每個數(shù)據(jù)庫使用的 ID 編號的相互排斥范圍,在這個范圍內(nèi),ID 編號是正好匹配的。更復(fù)雜的示例中可能包括 ID 生成服務(wù)或者特定于數(shù)據(jù)庫的方案,在這種情況下,必須在數(shù)據(jù)庫之間維護(hù) ID 的映射。

        變化檢測

        復(fù)制過程中的下一步是找出哪些數(shù)據(jù)單元已經(jīng)更改。在關(guān)系數(shù)據(jù)庫中,可以用附加字段來記錄數(shù)據(jù)單元的狀態(tài)和狀態(tài)變化的時間戳。或者,也可以使用觸發(fā)器使部分變化檢測過程自動化。附加到表上的插入/更新/刪除觸發(fā)器可以檢測到對數(shù)據(jù)單元所做的更改,并在更改日志表中記錄這些更改。這樣就可以用變更記錄表(change log table)確定在任何指定時間上對數(shù)據(jù)單元所做的更改。

        復(fù)制

        復(fù)制的目標(biāo)是產(chǎn)生公共數(shù)據(jù)集的多個一致的副本。為了實(shí)現(xiàn)這個目標(biāo),必須交換每個數(shù)據(jù)庫中檢測到的更改,并使它們一致。在這里,您面臨著一個設(shè)計(jì)上的挑戰(zhàn)。您可以作出如下選擇:

        表示將交換的那些更改的數(shù)據(jù)格式。
        傳輸機(jī)制,例如 HTTP、FTP、JMS 等,取決于應(yīng)用程序的需求。
        參與實(shí)體之間的交換協(xié)議。
        數(shù)據(jù)單元之間的沖突檢測和解決機(jī)制。
        SyncML 定義了一個同步協(xié)議,使用 XML 消息來添加、刪除和修改數(shù)據(jù)單元。它也允許交換安全信息,這樣節(jié)點(diǎn)就可以執(zhí)行身份驗(yàn)證。
        Sync4J 是 SyncML 的開源 java 實(shí)現(xiàn),它能夠支持多種傳輸機(jī)制。Sync4J 也根據(jù)應(yīng)用程序的需求,給出了沖突檢測框架和解決策略。

        示例實(shí)現(xiàn)

        本文將介紹一個簡單的數(shù)據(jù)復(fù)制示例。這個示例將演示兩個異構(gòu)數(shù)據(jù)庫之間的雙向客戶數(shù)據(jù)記錄復(fù)制,每個數(shù)據(jù)庫都包含一個結(jié)構(gòu)類似的客戶表。使用惟一的客戶 ID 來標(biāo)識被復(fù)制的每條記錄。我們在表中添加了兩列,以記錄每條記錄的狀態(tài)和最后狀態(tài)變化時間戳。對于這個示例,狀態(tài)與時間戳這兩列必須通過應(yīng)用程序或手工進(jìn)行填充。正如前面說過的,觸發(fā)器是一種在變更記錄表中自動填充更改數(shù)據(jù)的適當(dāng)解決方案。但是,在這個例子中使用的數(shù)據(jù)庫目前擁有的觸發(fā)器能力還很有限,因此我們選擇不用觸發(fā)器來實(shí)現(xiàn)這項(xiàng)任務(wù)。而且,這個實(shí)例不包括雙向復(fù)制的沖突解決策略。所以沖突會導(dǎo)致復(fù)制過程失敗。

        我們要配置在 Tomcat servlet 容器中運(yùn)行 Sync4J 服務(wù)器的服務(wù)器端環(huán)境,還要用 Derby 作為源數(shù)據(jù)庫。此外,還要配置客戶端環(huán)境,用 HSQLDB 作為目標(biāo)數(shù)據(jù)庫,在上面運(yùn)行 Sync4J 客戶程序。(在這個例子中,假設(shè)已經(jīng)安裝了 J2SE SDK 和 Ant。)

        服務(wù)器端安裝

        要運(yùn)行示例應(yīng)用程序,需要在服務(wù)器端安裝三個開源組件:Tomcat、Sync4J 服務(wù)器和數(shù)據(jù)庫引擎。安裝 Tomcat、Sync4J 和 Derby 按以下步驟安裝三個主要的服務(wù)器組件(請參閱 參考資料,以獲得下載鏈接)下載并展開 Tomcat 5.0.29。本文中用 TOMCAT 表示 Tomcat 的安裝目錄。將環(huán)境變量 J2EE_HOME 設(shè)為 TOMCAT。下載并展開 Sync4J Server 4.0.2。本文中用 SYNC4J 表示 Sync4J 服務(wù)器的安裝目錄。下載并安裝 Derby。本文中用 DERBY 表示 Derby 的安裝目錄。

        配置示例應(yīng)用程序

        接下來,需要配置示例代碼。請單擊本文頂部或底部的 Code 圖標(biāo)來下載j-sync4j.zip。將該文件解壓到包含本示例使用的客戶端代碼、服務(wù)器代碼和 SQL 腳本的目錄中。本文中用 TESTSYNC 表示這個目錄。

        設(shè)置 JDBC 驅(qū)動程序類路徑

        設(shè)置 JDBC 驅(qū)動程序的類路徑:將 db2jcc.jar 和 db2jcc_license_c.jar 分別從 DERBY\lib 復(fù)制到 TOMCAT\common\lib 和 SYNC4J\lib 中。用于 Sync4J 服務(wù)器的 Derby 安裝腳本,接下來,將目錄 TESTSYNC\derby 移動到 SYNC4J\default\sql。提供的腳本與 Sync4J 服務(wù)器下載一起提供的其他數(shù)據(jù)庫腳本類似,但是要針對 Derby 對它們稍作修改。構(gòu)建示例 Sync4J 服務(wù)器模塊,要構(gòu)建示例 Sync4J 服務(wù)器模塊,請按以下步驟進(jìn)行:

        將 TESTSYNC\module\build.bat 中的 SYNCSERVER_DIR 設(shè)置為指向 SYNC4J。
      運(yùn)行 TESTSYNC\module\build.bat。
      配置 Sync4J 服務(wù)器

        要配置 Sync4J,請按以下步驟進(jìn)行:
      在 Derby 中創(chuàng)建叫做 sync4jdb 的數(shù)據(jù)庫。步驟 3 的代碼中描述了 JDBC 設(shè)置,這些設(shè)置假設(shè) DERBY 中有一個叫做 sync4jdb 的數(shù)據(jù)庫,用戶名為 sync4j,口令為 sync4j。
      用 Derby 附帶的 IJ 工具創(chuàng)建并設(shè)置這個數(shù)據(jù)庫(有關(guān) Derby 工具的信息,請參閱 參考資料)。
      設(shè)置 the properties in SYNC4J\install.properties 中的屬性,如下所示(用 JDBC 設(shè)置中的實(shí)際路徑代替 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


        設(shè)置 Derby 數(shù)據(jù)庫

        執(zhí)行 DERBY\frameworks\NetworkServer\bin\startNetworkServer.bat,將 Derby 作為網(wǎng)絡(luò)服務(wù)器來啟動。有關(guān)將 Derby 作為網(wǎng)絡(luò)服務(wù)器啟動的更多信息,請參閱 Derby 的手冊。用 IJ 工具執(zhí)行 TESTSYNC\create_table_server.sql,在 Derby 數(shù)據(jù)庫中創(chuàng)建表 customer1。為 Tomcat 安裝 Sync4J 服務(wù)器和示例模塊要為 Tomcat 服務(wù)器安裝 Sync4J 服務(wù)器并設(shè)置 Sync4J 數(shù)據(jù)庫,需要完成以下步驟:

        從 SYNC4J 中運(yùn)行以下命令:SYNC4J\bin\install.cmd tomcat。當(dāng)給出命令提示時,按 Y 來重新構(gòu)建 testsync-1.0 模塊的數(shù)據(jù)庫。從 SYNC4J 中運(yùn)行 SYNC4J\bin\sync4j-tomcat.cmd,然后啟動 Tomcat 服務(wù)器。請注意服務(wù)器端設(shè)置;現(xiàn)在可以安裝客戶機(jī)了。

        客戶端安裝

        需要在客戶端安裝數(shù)據(jù)庫引擎 HSQLDB。然后安裝并配置示例代碼。設(shè)置客戶機(jī)應(yīng)用程序和數(shù)據(jù)庫要設(shè)置客戶機(jī)應(yīng)用程序數(shù)據(jù)庫,請按下以步驟進(jìn)行:

        下載并解壓 HSQL 數(shù)據(jù)庫。本文中用 HSQLDB 作為 HSQL 數(shù)據(jù)庫的安裝目錄。將 HSQL 作為網(wǎng)絡(luò)服務(wù)器啟動,它帶有一個叫做 test 的數(shù)據(jù)庫。運(yùn)行 TESTSYNC\create_table_client.sql 在 HSQL 數(shù)據(jù)庫中創(chuàng)建類似的表(customer2)。將 HSQL JDBC 驅(qū)動程序 HSQLDB\lib\hsqldb.jar 復(fù)制到 TESTSYNC\client\lib。在 TESTSYNC\client\config\spds\sources\testsync.properties 中設(shè)置客戶機(jī)的 JDBC 屬性,如下所示:

      jdbcDriver=org.hsqldb.jdbcDriver urlConnection=jdbc:hsqldb:hsql://localhost/test


        正確地設(shè)置用戶名稱和口令。然后,運(yùn)行 TESTSYNC\client\build.bat 來構(gòu)建客戶端應(yīng)用程序。運(yùn)行客戶機(jī)應(yīng)用程序向 Derby 數(shù)據(jù)庫中的 customer1 表中插入記錄。例如:

      insert into customer1 (userid, password, cl_op_type, clo_op_time) values ('user1', 'pass1', 'N', CURRENT_TIMESTAMP);


        向 HSQL 數(shù)據(jù)庫中的 customer2 表中插入記錄(請確保 userid 的值與 customer1 中記錄的值不同)。例如:

      insert into customer2 (userid, password, cl_op_type, clo_op_time) values ('user2', 'pass2', 'N', CURTIME());


        運(yùn)行 TESTSYNC\client\output\testsync.bat。customer1 表現(xiàn)在應(yīng)當(dāng)包含剛才插入 customer2 表中的記錄,而 customer2 表應(yīng)當(dāng)包含來自 customer1 表的記錄。

        結(jié)束語

        在本文中,我們討論了在設(shè)計(jì)通用數(shù)據(jù)庫復(fù)制解決方案時涉及的一些重要概念和問題。在設(shè)計(jì)復(fù)雜的分布式應(yīng)用程序時,資源占用少的嵌入式 Java 數(shù)據(jù)庫的可用為您提供了一個很好的選擇,同時它還允許使用異構(gòu)數(shù)據(jù)庫。對于復(fù)制過程和相關(guān)問題有很好理解,有助于我們改進(jìn)這類系統(tǒng)的設(shè)計(jì)。我們鼓勵您擴(kuò)展這個示例,以便用沖突解決策略來處理雙向復(fù)制,并使用記錄更改數(shù)據(jù)的自動記錄。

      posted on 2009-01-06 10:15  mjgforever  閱讀(653)  評論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 亚洲成在人线AV品善网好看| 欧美性猛交xxxx富婆| 南通市| 热久久这里只有精品国产| 亚洲精品男男一区二区| 惠水县| 日本深夜福利在线观看| 国产精品久久久久久久专区| 久久精品国产99国产精品严洲| 亚洲第一无码AV无码专区| 国产精品亚洲一区二区三区| 爱性久久久久久久久| 亚洲精品国产精品国在线| 97亚洲色欲色欲综合网| 亚洲欧洲一区二区三区久久| 亚洲AV午夜成人无码电影| 欧美高清狂热视频60一70| 国产老熟女无套内射不卡| 欧美肥老太交视频免费| 免费无码一区无码东京热| 国产精品不卡一区二区久久| 中文字幕乱码十国产乱码| 国产伦码精品一区二区| 辉南县| 天堂网亚洲综合在线| 老司机精品成人无码av| 中文字幕无码免费不卡视频| 国产成人人综合亚洲欧美丁香花| 桑日县| 国产欧美日韩精品丝袜高跟鞋| 插插射啊爱视频日a级| 加勒比无码人妻东京热| 日韩精品一区二区蜜臀av| 久热这里只精品视频99| 樱花草视频www日本韩国| 中文字幕日韩人妻一区| 日韩精品卡1卡2日韩在线| 国产精品久久久久久福利69堂| 人人妻人人澡人人爽曰本| 东方四虎av在线观看| 亚洲日韩性欧美中文字幕|