Cloud 不可靠网络上的实时SQL插入

Cloud 不可靠网络上的实时SQL插入,cloud,real-time,merge-replication,rdms,Cloud,Real Time,Merge Replication,Rdms,我需要通过一个不可靠的互联网连接,每分钟插入一个5K记录到一个来自不同10个系统的基于云的数据库,所有这些系统都同时运行。互联网连接为10 MB,我的应用程序需要每月中断一次,最多持续1天。我的应用程序在亚洲的一家工厂运行,IT基础设施/支持较差,这是不可靠和长时间停机的根源 您能推荐如何在不丢失数据的情况下执行此操作吗 我想到的解决方案是: 在内存中或简单文本文件中保留插入队列,每次插入失败时,将其放入队列中,以便稍后重试。我不喜欢这样,因为我必须重新设计我的应用程序,让它有一个并行循环来处理

我需要通过一个不可靠的互联网连接,每分钟插入一个5K记录到一个来自不同10个系统的基于云的数据库,所有这些系统都同时运行。互联网连接为10 MB,我的应用程序需要每月中断一次,最多持续1天。我的应用程序在亚洲的一家工厂运行,IT基础设施/支持较差,这是不可靠和长时间停机的根源

您能推荐如何在不丢失数据的情况下执行此操作吗

我想到的解决方案是:

在内存中或简单文本文件中保留插入队列,每次插入失败时,将其放入队列中,以便稍后重试。我不喜欢这样,因为我必须重新设计我的应用程序,让它有一个并行循环来处理这个问题,这样就不会影响主循环的计时

使用消息代理/队列,如RabbitMQ。我不喜欢这样,因为将SQL语句放入代理很容易,但我不希望编写额外的服务来轮询代理、执行SQL语句、处理错误等。我知道Mule ESB可以完成所有这些,但它的设置看起来很复杂

数据库复制。实际上,我需要N:1合并复制,我认为除了MS SQL Server之外,其他任何主要数据库都不支持该复制,因为它太复杂了,我不想处理它。我还可能需要在中断之后重新启动数据库,并等待它赶上,然后再执行任何写入操作,这两种操作都是不可取的


还有其他解决办法吗?谢谢。

我决定使用位于本地实例和云实例之间的消息代理RabbitMQ。然后,我将使用队列中的JSON数据,并将其存储在数据库JSON->Object->ORM->DB中


虽然这确实增加了相当大的复杂性,但事实证明,我需要与另一个应用程序进行双向通信,这样做是值得的。

如果您的网络连接不可靠,那么复制将如何解决问题?不管怎样,你的数据都必须通过那个垃圾链接到主机上。我已经澄清了我所说的不可靠是什么意思。