Ari*_*rie 5 c# database vb.net
我当前的开发计划是编写远程应用程序,每个应用程序都将在本地使用自己的 SQLite 数据库。还有一个中央数据库应与每个远程应用程序数据库同步。我的问题是:
是否有任何库可以从远程(SQLite)数据库同步到中央数据库(SQL Server)?
让我们假设我决定将数据从所有远程数据库手动插入到中央数据库。好的信息是每个远程数据库都使用不同的数据,但是一旦远程数据库在表中创建了它们唯一的 id,这些表(记录)通过这些 id 相互关联,那么问题可能是这样的 id 值可能已经在中央使用数据库。因此这是一个问题。
如何克服这个问题?希望你明白我的意思。
这是一个非常复杂的设计解决方案 - 如果你可以避免它,你应该避免它。
MSDN 对您的架构选择有很好的概述。它描述了两种方法,“以数据为中心”和“面向服务”路线。
以数据为中心似乎是最简单的 - 但由于 SQLite 没有很好的内置复制解决方案,您最终可能会编写大量管道代码。您需要解决主键问题(GUID 可能是最简单的)、冲突解决(如果两个客户端同时创建相似的记录会发生什么?)、错误处理等。
面向服务有点过时,但使用消息传递协议与数据存储交互的想法正在变得越来越流行(特别是在微服务架构中) - CQRS是一个有用的起点。简单来说,在此模型中,您的应用程序不会直接针对数据库发出 CRUD 语句,而是发送消息以与数据存储交互(例如“为此客户创建新记录”)。您可以将这些消息异步发送到多个数据存储,以便您的中央服务器可以在客户端连接时处理它们。
这两种架构都引入了很多额外的工作。