目标是偶尔连接属于在不同平台阵列上运行的一个用户的客户端能够共享公共数据集。服务器将是GNU / Linux。最初定位的平台和设备包括:x86_64上的GNU / Linux,Android和Windows,i686,ARMv7,ARMv8。可能考虑OSX和iOS设备。 UI工具包可能是Qt5。非接口逻辑将使用c ++。我的代码将根据GPL或AGPL许可。
例如,Google的地图等许多应用都需要可靠的连接才能有效运作。我的设计决定是每个客户端应该在没有网络连接的情况下完全正常运行,假设用户没有使用不同的设备/平台来更改数据。在这种情况下,只需要与网络访问同步。
某些应用程序是使用为每个平台或平台子集定制的手动数据持久性和同步层编写的。虽然这非常有效,但它超出了可用的技能和人力(只有我:)。
此外,尽管我从过去的经验来看,从关系数据库的角度来思考问题,但我期待的数据可能更适合JSON / NoSQL数据库。虽然有UNQLite,但它没有比SQLite更多的同步功能。据我所知,MongoDB,CouchDB等目前仅针对数据中心或云计算。实际上,SQL解决方案似乎也是如此。是否真的具有本机同步/复制功能的跨平台数据库?
过去几周我一直在寻找各种各样的选择,但发现它们并没有什么用处。最接近我看到的有用的东西是CouchBase;然而,它似乎相当不稳定(从API的角度来看,与崩溃无关),拥有大量的依赖关系,似乎只是移动平台上的SQLite包装器,并且目前限制了开发人员文档。
如果有适用的库或工具包,请指出。如果没有,或者如果这是过度的"讨论导向",请在关闭此问题之前请指向适当的资源以寻求帮助。
注意:
How would you design & implement a Cross Platform synchronization mechanism?谈论手动滚动解决方案。如果这是唯一的方法,我会非常感谢特别适用于SQLite3的参考资料,因为我知道它是稳定的,除了厨房水槽之外几乎可用。
Cross platform data synchronization没有真正解决任何重大问题。我所关注的主要问题之一是有效地同步数据,同时最小化网络带宽要求。即使在美国,也存在大量无法获得高速数据的领域。对我而言,在最广泛的情况下使用是很重要的。
How to Synchronize Android Database with an online SQL Server?这篇文章有点帮助,但我在服务器和工作站上开发除了* NIX以外的任何东西都是绝对的新手。同样,如果有必要为这组要求执行基于SQL的持久性,那么指导的更多指针会有所帮助。