
文章插图
DBSync工作原理示意图
DBSync是一款数据库同步软件 , 支持各种数据库之间的同步 , 支持增量同步 。本文分享该软件的产品渊源、设计思想、技术要点、功能特征、使用方法 , 最后分析其优缺点 , 供IT技术人员参考 , 也欢迎大家提供宝贵意见 , 促进我们持续进步 。
阅读本文 , 用时大约15分钟 。
1、产品渊源早在2003年 , 我们在企业信息化的过程中 , 就经常遇到系统对接问题 。很多客户的一些老旧软件 , 不方便废弃 , 又想将其中的数据汇集到我们的信息管理平台 , 借助平台实现集中查询、外网查询、手机查询等 。有些则是反方向的 , 借助平台实现外网录入、手机录入 , 再将数据从平台同步到现有系统 。
搜遍各大网络 , 未找到适合的 。有些数据库虽然有同步工具 , 但只支持同型数据库之间的同步 , 不支持异型同步 。而华创平台是通用型的 , 客户对它的用途五花八门 , 需要对接的系统也就多种多样 , 数据库的也就多种多样 , 因此需要能够异型同步 。另外 , 很多同步工具的配置过程过于复杂 , 普通用户难以掌握 。
为此 , 我们专门开发了一款同步软件 , 作为平台的配套工具 , 提供给客户使用 , 且力求简单易用 。经过多年的实践发现 , 越来越多的客户 , 即使不使用平台也有同步需要 , 于是 , 我们于2018年开始对它进行改造 , 将它独立出来 , 经过不断完善 , 形成现在的DBSync , 于2019年正式对外推出 , 并提供永久免费版 。
2、设计思想数据库之间的同步 , 一般是利用事务日志来实现的 , 它的工作原理是:读取源数据库的事务日志 , 找到最近执行过的事务 , 将这些事务传递至目标数据库 , 在目标库也执行一遍 , 使得源库、目标库都执行了同样的事务、产生同样的变化 , 从而使双方始终保持一致 。
不同的数据库 , 其事务日志的格式就不相同的 , 因此 , 按照这个思路设计的软件 , 一般只适用于特定数据库 。
DBSync跳出这个思路 , 不再依靠事务日志 , 而是直接访问事务执行的结果 , 也就是数据本身 。通过扫描比较双方数据 , 找到相互间的差异 , 再将差异部分同步过去 , 从而使双方始终保持一致 。
按照这个设计思想 , DBSync就有广泛的适用性 , 支持各种数据库 。因为 , 无论哪种数据库 , 无论内部怎么工作 , 其结果无非就是数据 。我们只需要关注数据差异 , 找到差异并同步过去 , 就可以了 。
3、技术要点一款软件的设计开发 , 会涉及很多技术细节 , 这里仅列出与同步有关的技术要点 。
●通过连接字符串连接数据库 , 允许用户自己填写连接字符串 。这样 , DBSync就能连接各种数据库 , 因为几乎所有数据库都可以使用OLEDB或ODBC进行连接 。
●在用户操作界面上 , 为常见数据库提供连接字符串范例 。用户可以在范例的基础上 , 修改其中的IP地址、用户名、密码等个性值 , 得到自己的连接字符串 , 从而减轻用户撰写难度 。
●同步的基本单位是任务 , 一个任务负责一对数据表之间的同步 。如果多个数据表、多个数据库之间需要同步 , 分别为它们设置任务 , 形成多个任务 , 即可 。
●同步任务采取线程的方式运行 , 由于线程是可并发执行的 , 因此DBSync可同时执行多个同步任务 。
●任务可设置select查询语句 , 用于限定参与同步的数据范围;可设置update语句 , 用于同步后的额外处理 。
●主程序负责3个方面:一是与用户的交互 , 包括:任务的增、删、改 , 任务的手工启动与停止;二是监视任务的执行情况 , 实时显示同步进度信息;三是负责任务的定时自动启动 , 实现无人值守同步 。
推荐阅读
- Apache Druid 高性能的实时分析型数据库
- 淘宝|张勇卸任淘宝软件公司董事长:此前已辞任淘宝董事
- 法律|AI 律师 在线诈骗
- 聊天记录可以永久删除的聊天软件有哪些?
- MySQL5.7数据库主从架构部署,你再也不用去问度娘了
- CENTOS Mysql5.7数据库自动安装脚本
- windows11安卓子系统怎么安装?安卓11卸载系统软件
- 广告拦截软件有哪些
- 软件性能优化那些事
- 软件测试需要学什么?
