用syncml停止异构数据库复制技巧

发布时间:2014-10-10 15:53
文 章
摘 要
正在开拓散布式使用顺序时,可用性与功能是次要思忖须知。然而用数据存储处理该署成绩能够会给异构数据存储之间的数据同步带来一些成绩。正在白文中,Jayanthi Suryanarayana 和 Neil Tunnicliffe 将需要一种处理计划:用 JDBC 和 SyncML 规范来完成通用的数
  正在开拓散布式使用顺序时,可用性与功能是次要思忖须知。然而用数据存储处理该署成绩能够会给异构数据存储之间的数据同步带来一些成绩。正在白文中,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 数据库的可用为您需要了一度很好的取舍,同声它还答应运用异构数据库。关于复制进程和有关成绩有很好了解,无助于于咱们改良这类零碎的设想。咱们鼓舞您扩大某个示例,再不用摩擦处理战略来解决双向复制,并运用记载更改数据的主动记载。

上一篇:《暗黑毁坏神3》巫医内行级形式经历心得
下一篇:《gta4》两款mod大复旧 高清美图观