【问题标题】:Bi-Directional Data Sync双向数据同步
【发布时间】:2022-11-09 00:32:10
【问题描述】:

我有一个查询双向数据同步. 场景是,我们在本地网络上运行 ERP 软件 开发于PowerBuilder并且数据库是SQL 无处不在 16, 另外,我们有我们的云软件,它是在 .网6并且数据库是Azure SQL.我们还有一个在 .net 上开发的中间件,它与我们的 API 和本地数据库交互。像这样的操作后发票生成,我们需要保持产品的数量与本地数据库和云数据库一样准确。操作是发生在云端还是本地网络中。请分享你的想法。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: c# .net synchronization azure-sql-database sqlanywhere


【解决方案1】:

该方法将取决于您是否愿意牺牲一致性或并发性。

如果您愿意牺牲一致性,在您的情况下这是可以接受的,我相信对于某些用例(例如将本地发票同步到云),您的中间件可以异步确保两个数据库同步。

如果您愿意牺牲并发性,这是在结账之前确保产品数量准确所必需的,那么您基本上会使用锁来确保产品可用并且不会被其他人签出。这具有减慢系统速度的不利方面,因为在处理先前的请求时会等待多个请求。

至于实际实现本身,您可以为每个事务使用一个队列,中间件可以接收并同步第一个选项。对于第二个选项,您需要为 API/中间件在提交更改之前需要获取的每个产品使用某种分布式锁。

根据应用程序的规模和业务 KPI,您必须决定如何处理第二个选项。这是another SO thread,它根据您愿意牺牲的内容对各种方法进行了不错的讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 2010-12-08
    • 2014-07-13
    • 1970-01-01
    • 2017-09-02
    • 2018-05-01
    • 1970-01-01
    相关资源
    最近更新 更多