我们正在研究一个类似于这个案例的案例(PouchDB: Multiple remote databases, single local database (fancy replication)),并且不确定哪种方法更好。
首先草拟场景,我们有多个普通用户' (从现在开始,我将简称为“用户”),以及一小部分超级用户' (我会打电话给'管理员'以保持词汇量简单。)
用户可以创建文档和编辑文档,这些文档是唯一分配给他们的。此功能应该在线和离线都可用。为了实现这一点,我们只需要为每个用户使用一个远程单独的CouchDB,同步到设备上的PouchDB。
现在,我们还有管理员,可以查看和编辑所有用户的所有文档。他们还可以将文档添加到用户的存储桶中。实现这个功能就是问题所在。
现在我们确定了两种可能的方法,并且不确定哪种方法可行。
我们的第一个解决方案是为这些管理员提供CouchDB,并在他们的CouchDB和管理员CouchDB的所有用户之间设置过滤双向复制。然后,管理员的CouchDB将与本地PouchDB同步。
第二个解决方案是在顶部链接中绘制的解决方案,即将所有用户的CouchDB直接同步到管理员设备上的PouchDB,并在另一个方向上设置过滤复制。我们可以根据用户角色确定要同步哪些CouchDB。
第二种解决方案似乎更简单,更不易碎(CouchDB中的数据重复较少,CouchDB中的复制设置较少),但我们对开放相当多的Couch< - 的性能开销不太确定。 >同时进行袋子复制。
有没有人对此类案件有任何经验?关于什么是更好的解决方案的任何反馈?还是我们错过了另一个?欢迎所有评论!
答案 0 :(得分:1)
您是否认为数据仅保留在用户数据库中,并且管理员创建了一个复制用户数据库的新本地数据库?
更详细我建议管理界面创建本地数据库,例如使用命名模式,如“userdb - {$ userid}”。
然后,您可以从用户数据库复制到管理员本地副本。
所有更改都将同步到用户数据库,您不需要任何过滤后的复制,也不会冒混合不同用户数据的风险。
从对您的确切要求的有限知识来看,这可能是一种更好,更简单的解决方案。