知识大全 用SyncML进行异构数据库复制技巧

Posted 数据库

篇首语:知识是从刻苦劳动中得来的,任何成就都是刻苦劳动的结果。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用SyncML进行异构数据库复制技巧相关的知识,希望对你有一定的参考价值。

用SyncML进行异构数据库复制技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在开发分布式应用程序时 可用性与性能是主要考虑事项 但是用数据存储解决这些问题可能会给异构数据存储之间的数据同步带来一些问题 在本文中 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 消息来添加 删除和修改数据单元 它也允许交换安全信息 这样节点就可以执行身份验证   Sync J 是 SyncML 的开源 java 实现 它能够支持多种传输机制 Sync J 也根据应用程序的需求 给出了冲突检测框架和解决策略      示例实现  本文将介绍一个简单的数据复制示例 这个示例将演示两个异构数据库之间的双向客户数据记录复制 每个数据库都包含一个结构类似的客户表 使用惟一的客户 ID 来标识被复制的每条记录 我们在表中添加了两列 以记录每条记录的状态和最后状态变化时间戳 对于这个示例 状态与时间戳这两列必须通过应用程序或手工进行填充 正如前面说过的 触发器是一种在变更记录表中自动填充更改数据的适当解决方案 但是 在这个例子中使用的数据库目前拥有的触发器能力还很有限 因此我们选择不用触发器来实现这项任务 而且 这个实例不包括双向复制的冲突解决策略 所以冲突会导致复制过程失败     我们要配置在 Tomcat servlet 容器中运行 Sync J 服务器的服务器端环境 还要用 Derby 作为源数据库 此外 还要配置客户端环境 用 HSQLDB 作为目标数据库 在上面运行 Sync J 客户程序 (在这个例子中 假设已经安装了 J SE SDK 和 Ant )     服务器端安装  要运行示例应用程序 需要在服务器端安装三个开源组件 Tomcat Sync J 服务器和数据库引擎 安装 Tomcat Sync J 和 Derby 按以下步骤安装三个主要的服务器组件(请参阅 参考资料 以获得下载链接)下载并展开 Tomcat 本文中用 TOMCAT 表示 Tomcat 的安装目录 将环境变量 J EE_HOME 设为 TOMCAT 下载并展开 Sync J Server 本文中用 SYNC J 表示 Sync J 服务器的安装目录 下载并安装 Derby 本文中用 DERBY 表示 Derby 的安装目录      配置示例应用程序  接下来 需要配置示例代码 请单击本文顶部或底部的 Code 图标来下载j sync j zip 将该文件解压到包含本示例使用的客户端代码 服务器代码和 SQL 脚本的目录中 本文中用 TESTSYNC 表示这个目录      设置 JDBC 驱动程序类路径  设置 JDBC 驱动程序的类路径 将 db jcc jar 和 db jcc_license_c jar 分别从 DERBY\\lib 复制到 TOMCAT\\mon\\lib 和 SYNC J\\lib 中 用于 Sync J 服务器的 Derby 安装脚本 接下来 将目录 TESTSYNC\\derby 移动到 SYNC J\\default\\sql 提供的脚本与 Sync J 服务器下载一起提供的其他数据库脚本类似 但是要针对 Derby 对它们稍作修改 构建示例 Sync J 服务器模块 要构建示例 Sync J 服务器模块 请按以下步骤进行     将 TESTSYNC\\module\\build bat 中的 SYNCSERVER_DIR 设置为指向 SYNC J   运行 TESTSYNC\\module\\build bat   配置 Sync J 服务器    要配置 Sync J 请按以下步骤进行   在 Derby 中创建叫做 sync jdb 的数据库 步骤 的代码中描述了 JDBC 设置 这些设置假设 DERBY 中有一个叫做 sync jdb 的数据库 用户名为 sync j 口令为 sync j   用 Derby 附带的 IJ 工具创建并设置这个数据库(有关 Derby 工具的信息 请参阅 参考资料)   设置 the properties in SYNC J\\install properties 中的属性 如下所示(用 JDBC 设置中的实际路径代替 DERBY)     dbms=derby  jdbc classpath=DERBY/lib/db jcc jar;DERBY/lib/db jcc_license_c jar;  jdbc driver= ibm db jcc DB Driver  jdbc url=jdbc:derby:net://localhost: / DERBY/sync jdb   jdbc user=sync j  jdbc password=sync j  modules to install=foundation pdi testsync      设置 Derby 数据库  执行 DERBY\\frameworks\\NeorkServer\\bin\\startNeorkServer bat 将 Derby 作为网络服务器来启动 有关将 Derby 作为网络服务器启动的更多信息 请参阅 Derby 的手册 用 IJ 工具执行 TESTSYNC\\create_table_server sql 在 Derby 数据库中创建表 customer 为 Tomcat 安装 Sync J 服务器和示例模块要为 Tomcat 服务器安装 Sync J 服务器并设置 Sync J 数据库 需要完成以下步骤     从 SYNC J 中运行以下命令 SYNC J\\bin\\install cmd tomcat 当给出命令提示时 按 Y 来重新构建 testsync 模块的数据库 从 SYNC J 中运行 SYNC J\\bin\\sync j tomcat cmd 然后启动 Tomcat 服务器 请注意服务器端设置 现在可以安装客户机了      客户端安装  需要在客户端安装数据库引擎 HSQLDB 然后安装并配置示例代码 设置客户机应用程序和数据库要设置客户机应用程序数据库 请按下以步骤进行     下载并解压 HSQL 数据库 本文中用 HSQLDB 作为 HSQL 数据库的安装目录 将 HSQL 作为网络服务器启动 它带有一个叫做 test 的数据库 运行 TESTSYNC\\create_table_client sql 在 HSQL 数据库中创建类似的表(customer ) 将 HSQL JDBC 驱动程序 HSQLDB\\lib\\hsqldb jar 复制到 TESTSYNC\\client\\lib 在 TESTSYNC\\client\\config\\spds\\sources\\testsync properties 中设置客户机的 JDBC 属性 如下所示     jdbcDriver= hsqldb jdbcDriver  urlConnection=jdbc:hsqldb:hsql://localhost/test    正确地设置用户名称和口令 然后 运行 TESTSYNC\\client\\build bat 来构建客户端应用程序 运行客户机应用程序向 Derby 数据库中的 customer 表中插入记录 例如     insert into customer (userid password cl_op_type clo_op_time)  values ( user pass N CURRENT_TIMESTAMP);    向 HSQL 数据库中的 customer 表中插入记录(请确保 userid 的值与 customer 中记录的值不同) 例如     insert into customer (userid password cl_op_type clo_op_time)  values ( user pass N CURTIME());    运行 TESTSYNC\\client\\output\\testsync bat customer 表现在应当包含刚才插入 customer 表中的记录 而 customer 表应当包含来自 customer 表的记录      结束语  在本文中 我们讨论了在设计通用数据库复制解决方案时涉及的一些重要概念和问题 在设计复杂的分布式应用程序时 资源占用少的嵌入式 Java 数据库的可用为您提供了一个很好的选择 同时它还允许使用异构数据库 对于复制过程和相关问题有很好理解 有助于我们改进这类系统的设计 我们鼓励您扩展这个示例 以便用冲突解决策略来处理双向复制 并使用记录更改数据的自动记录 cha138/Article/program/Java/Javascript/201311/25335

相关参考

知识大全 用SQL实现分布式数据复制

用SQL实现分布式数据复制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    复制的概念    

知识大全 用Forall与bulkcollect快速复制表数据

用Forall与bulkcollect快速复制表数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 如何在Oracle数据库中联结异构数据

如何在Oracle数据库中联结异构数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你有两

知识大全 在Linux异构网络中备份MYSQL数据库(图)

在Linux异构网络中备份MYSQL数据库(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 09数据库发展三大趋势预测

  趋势一对于异构数据的支持  在以前的数据库中一直强调数据的标准化也就是说在以前数据库主要管理的时结构化的数据数据是以行与猎的二纬形势进行存储若需要实现三维数据如数据仓库等等都要根据一定的规则对数据

知识大全 2009年数据库发展三大趋势预测

  趋势一对于异构数据的支持  在以前的数据库中一直强调数据的标准化也就是说在以前数据库主要管理的时结构化的数据数据是以行与猎的二纬形势进行存储若需要实现三维数据如数据仓库等等都要根据一定的规则对数据

知识大全 解决更改计算机名称之后,数据库复制失败问题

  最近又在做三个SQL服务器的数据库对等复制测试发现一个问题在服务器更改计算机名称以后数据库的复制就出现了失败尝试删除复制关系重新配置也不成功报错如下    奇怪的是其他的服务甚至是SQL服务本身都

知识大全 实现Oracle数据库复制

实现Oracle数据库复制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们经常希望把各地

知识大全 复制本地数据库中的一个表到远程数据库

  首先将要复制的表导入到远程数据假设本地表名为hw在数据库也有一个名为hw的结构相同的表已经有了条数据  导入成功后会新增一个表hw  运行以下语句会复制一个表hw  select*intohwfr

知识大全 Oracle数据库高级复制功能介绍

Oracle数据库高级复制功能介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle数