保持许多数据库始终同步

Ibr*_*jar 8 .net sqlite oracle synchronization

我有一个桌面PC网络(Windows 7),它们位于地理上彼此分开(与LAN连接).

该网络有一个Oracle后端.

我想在每台PC上本地安装一个数据库(其中大约12个,目前正在考虑SQLite,但对其他可能性开放).

我需要保证本地数据库始终保持同步,并始终与Oracle数据库保持同步,或者至少与网络连接(网状拓扑)保持同步.

同步只涉及一个表.

这个问题有哪些可行的有效解决方案?最好事先与你合作过.

Hei*_*erg 3

由于我在这方面没有丰富的知识,我不确定这是否能完全解决您的问题,但是阅读这个问题我意识到您需要一个数据库复制软件包,所以我想建议您是否可以研究一下SymmetricDS 为什么我我建议这个?其官方网站的基本介绍。SymmetricDS 是免费使用的开源软件

SymmetricDS 是开源软件,用于异构环境中的多主数据库复制、过滤同步或跨网络转换。它支持多个订阅者进行单向或双向异步数据复制。它使用网络和数据库技术在关系数据库之间复制表,如果需要的话可以近乎实时地复制。该软件旨在扩展大量数据库、跨低带宽连接工作并承受网络中断。

通过使用数据库触发器,SymmetricDS 保证捕获数据更改并保留原子性。通过数据库方言层提供对数据库供应商的支持,包括 MySQL、Oracle、SQL Server、SQL Server Azure、PostgreSQL、DB2、Informix、Interbase、Firebird、HSQLDB、H2、Apache Derby、Greenplum 和 SQLite 的实现。

同步可以配置为定期推送数据或拉取数据。SymmetricDS 允许在两层或多层节点之间进行同步,这在以下场景中可能需要:

  • 少数区域服务器从总办公室同步到远程地理区域
  • 数十个销售点 (POS) 注册节点使用嵌入式数据库与商店服务器同步
  • 数千个商店服务器节点使用部门级数据库与区域节点同步

特征

  • 数据通道 - 表同步分为独立通道
  • 保证传送 - 保证同步数据到达目标目的地。如果同步失败,则会重试同一批数据,直至同步成功或需要人工干预。仅针对发生故障的通道停止所有其他数据同步。
  • 事务感知 - 以相同的原子性记录和重放数据更新
  • 集中配置 - 所有配置均从中央注册服务器下载
  • 多种部署选项 - 独立引擎、Web 应用程序、嵌入式软件组件
  • 数据过滤和重新路由 - 允许本地化密码和敏感数据过滤/路由
  • HTTP 传输 - 可插拔传输默认为表示状态传输(REST 样式)HTTP 服务
  • 有效负载压缩 - 可选择压缩传输数据
  • 通知方案 - 推送(涓流数据)或拉动(涓流轮询数据)更改
  • 对称数据协议 - 一种易于生成、解析和加载的快速流数据格式
  • 插件 API - 通过扩展和插件点添加自定义
  • 双向表同步 - 同一个表可以与主机系统同步,同时避免更新循环
  • 数据库版本控制 - 按目标数据库版本指定数据同步
  • 自动数据库创建 - 可选择允许创建和升级数据库模式
  • 可嵌入 - 小到足以嵌入或引导到另一个应用程序(即 POS 应用程序)
  • 多个模式 - 通过数据通道的存在自然支持多个数据库模式
  • 主键更新 - 捕获正在更改的“之前”和“之后”数据,从而允许更新主键数据
  • 远程管理 - 通过 Java 管理扩展 (JMX) 控制台进行管理
  • 远程数据库管理 - SQL 可以通过同步基础设施在远程数据库上交付和运行
  • 初始数据加载 - 使用初始或恢复数据加载准备卫星数据库

希望我的回答有帮助!