我想将PouchDB与CouchDB一起使用,因为我的网络应用程序具有出色的同步和复制功能,但很难找到建模数据的最佳方法,以满足我的需求.
该应用程序允许用户在日历中创建事件,只能与他们选择的用户共享.与该事件关联的用户可以添加注释并对该事件进行更改.
1)据我所知,每个用户都应拥有自己的数据库,以避免访问其他用户数据(如果所有用户数据都存储在一个数据库中).如果是这种情况,如何更新或共享来自不同数据库的文档数据?
2)是否应该使用带有API的sql数据库在另一台服务器上管理用户登录?
任何指导将不胜感激!
斑马
如果我正确理解您的应用,那么您的文档看起来像这样:
{
"_id": "event-{timestamp/name/something}",
"organizer": "alice",
"attendees": [
"alice", "bob", "charlie"
]
}
Run Code Online (Sandbox Code Playgroud)
如果那是大致正确的话,那么我建议使用以下架构来使其与PouchDB和CouchDB的复制一起使用.
这里的目标是"切断与粮" CouchDB的复制协议,划分权限到容器(数据库每用户和数据库每股/关系),并提供了一个潜在的友好交流/分销模式...因为云有时会消失.;)
在下面的流程图中,您可以在左侧看到Alice的"设备"(或应用程序等).Alice将事件保存在private-user-space数据库中.复制(可能通过后台,过滤的复制过程)复制任何事件文档(如上所述),根据attendees密钥中使用的用户标识符(或者您为您的东西建模)共享数据库.
这些share-with-*数据库中的每一个都被连续(理想地)复制到云托管(最可能)的CouchDB(或兼容)数据库.Bob和Charlie将他们的应用程序连接到同一个云托管的CouchDB(或兼容)数据库,并将Alice的事件复制到他们的share-with-alice数据库中.
然后,应用程序将这些事件提供给Bob和Charlie,让他们进行编辑,将这些更改复制回share-with-alice数据库,然后(最终;因为网络)备份到云并返回到Alice.
在所有这些中,云位是可选的.;)根据部署情况,这些可能是同一网络上的三个设备,无论如何都会相互查找,并在可用时进行复制.
从我对你的应用程序的理解,这应该工作.:)你提到还有其他评论文件,他们需要以类似的方式建模 - 或者应用程序将利用他们与事件文档的关系来做相关评论的正确的事情.
我很想知道这听起来像是一条可能的道路,因为我正在为一些项目自己探索.
希望无论如何都有帮助.:)