我正在开始一个新项目。它包括:
下载应用程序的用户将使用它将项目(现在不重要的是)离线添加到本地数据库。当/如果他在线时,该项目将被添加到服务器数据库,以便其他连接的用户(通过桌面应用程序或通过网站)将看到它。
我用谷歌搜索了这个问题,发现它比我想象的要复杂得多。其中一个解决方案是使用一些现成的工具,例如SymmetricDS
和Daffodil
来获得安全性,性能和可伸缩性< / em>,但它们很难在客户端和服务器端配置和安装,并且需要访问命令提示符,这需要我传递给专用主机(好吧,这不是真正的问题)。此外,我想要的只是我所描述的内容,而不是这些工具实际提供的内容。
我使用MySQL获取信息。
编辑:真正重要的是将项目发送到服务器数据库。例如,使用RSS Feed阅读来阅读它可能不那么棘手。
答案 0 :(得分:1)
基本上,您可以使用HTTP / HTTPS API。当用户在线时,将项目发送到您的php文件并在本地数据库中标记“已发送”项。但您必须控制已编辑或已删除的状态。所以,是的,这很复杂,但却是一种解决方案。
答案 1 :(得分:1)
我想到的最简单的解决方案是为每个项目保存最后一个编辑日期(在服务器上和客户端上)。另外,当客户端从服务器获得最后一次更新时,您必须跟踪。
因此,无论何时客户端上线,服务器都会向他发送所有更新。
但是为此你必须确保客户端和服务器上的时间是相同的,并且它不能解决问题,如果两个客户端编辑同一个项目会发生什么。
答案 2 :(得分:0)
CouchDB很好地解决了分布式同步问题,但它是NoSQL DB。根据您的应用程序应该做什么,使用它可以归结为在非常应用程序内部和中央服务器上使用CouchDB实例。
然而,你必须处理冲突。 CouchDB唯一支持您的是更容易检测冲突和冲突编辑的数据,因此您的应用程序可以自动或在用户帮助下解决。
另一方面,在中央服务器上生成唯一ID可以像为每个项目ID添加创建用户的ID一样简单。