我们需要在后端服务器、web客户端、本地ios应用程序和本地android应用程序之间共享公共数据结构。后端服务器用nodejs编写,下面使用postgres数据库。
我考虑过一个firebase实时数据库,因为它可以解决所有的需求,因为后端可以写入firebase数据库,所有客户端都可以使用该数据库。
我的问题是,是否有一个开源的替代方案可以开箱即用,比一个完整的firebase实时数据库更符合我们的需求,后者将提供许多我们不需要或不想要的功能。
——以下是假设和要求----
后端充当主服务器,因此对数据结构的更改只能由后端执行。
数据结构可以假设为一个简单的键值对列表、一个简单的对象数组或一个成熟的树结构(如json对象)。我们可以解决所有问题。
数据结构的大小将非常有限,比如小于100kb。
对服务器上数据结构的任何更新都应传播到几乎实时订阅了该数据结构的所有客户端。
如果客户机脱机一段时间,则应在连接后立即更新。
每种类型的客户机都必须具有订阅数据结构更改的健壮方式。因此,一旦更新了数据结构的本地版本,同时应该通知它更改了什么。
如果可能的话,客户机在收到有关数据结构更新的通知时,应该知道“数据结构的一部分”已经更新。
我们希望编写尽可能少的代码,并且更喜欢一个具有nodejs服务器库和web、本机ios和本机android客户端库的解决方案。
本机应用程序无法请求推送通知的权限。
它必须在任何支持websockets或类似的现代浏览器上工作。

最佳答案

有趣的问题。我不知道有哪个开源系统会这么做,我相信firebase本身就是从这样一个叫做parse的系统进化而来的。现在,我能告诉你的是,firebase是一个可靠的选择,也许你不应该这么快就放弃它:
firestore是新的数据库系统。实时数据库将逐步淘汰。而且Firestore的功能也很好。
firebase是免费启动的,并且达到很高的水平,那么是相当实惠的。
这是管理好的。我再怎么强调这件事的重要性也不为过。保护或维护系统并不是你的问题,如果你能推出自己的解决方案的话。
它可以自动伸缩,也就是说,计划容量、购买、滚动或同步额外的服务器、关心内存或磁盘都不是你的问题。这一切都是为了你。
“您可能不需要的功能”节省了大量的时间和成本,例如使用不同提供商的托管身份验证、移动推送通知、分析、文件存储和其他功能。
它有用于web和移动的客户端,因此您可以开发所需的客户端并共享相同的后端。
也就是说,我能问一下你为什么问这个吗?我对firebase非常熟悉,我可能可以帮助您完成部署。
干杯

关于node.js - 如何在Web和 native 应用程序中实现数据结构与多个客户端的单向同步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55401342/

10-11 19:47
查看更多