【问题标题】:CouchDB data synchronizationCouchDB 数据同步
【发布时间】:2021-02-11 03:35:25
【问题描述】:

我正在为自己开发一个 TODO 应用。它必须首先离线,因此数据同步很快成为一个问题。至于我的搜索,CouchDB 可以很好地进行数据同步(复制),但我在这里有些困惑。
首先,我使用的是 Flutter 和 Dart 编程语言,并且 Dart 上没有任何沙发客户端。对于 javascript,有 PouchDB 显然使数据与远程数据库自动同步(我是对的吗?)据我所知,由于 CouchDB 附带,所以没有任何第三方库我应该很好本机 HTTP API,我可以将用户数据存储为 JSON 文件,然后将其作为文档与 CouchDB 服务器同步(我说的对吗?
另一个confusionforme 是应该将用户数据存储为文档还是应该为每个用户创建一个数据库(换句话说,沙发同步数据库还是文档?)它还提高了授权。有权访问数据库的用户可以访问所有文档。我想将每个用户限制在其文档中,而不是在沙发和最终用户应用程序之间放置另一个 API。

【问题讨论】:

    标签: synchronization couchdb replication pouchdb


    【解决方案1】:

    pouchdb 的一个主要好处是本地数据库具有像 couchdb 这样的 API,但即使在离线时也存在等。因此,如果您正在使用 pouchdb 并希望离线工作,您几乎肯定会希望在 couchdb 上使用每个用户的 dbs 并执行同步等应用程序。

    直接使用 HTTP API 并存储本地文档,开始时每个用户在 _users 中将一些简单的东西作为附加 JSON 存储在他们自己的用户文档中可能会更简单。您以后可以随时添加每个用户的数据库。 _users 数据库有点特殊,因为它让每个用户都可以读取自己的文档,而不必让他们访问其他用户文档,并且依靠验证设计文档来保护重要字段,同时让他们编辑数据。

    在这样的场景中,客户端在本地保留用户自己文档的副本,当它有网络时它需要同步回服务器。对于拥有多个设备的用户来说,当然存在冲突的可能性,它们可以通过客户端自己比较本地和服务器版本来解决,也可以在服务器上更新设计文档的帮助下解决。

    从每个用户在他们自己的 _users 文档中拥有他们的私人数据开始,仍然可以为用户组构建数据库,其中组中的所有用户共享对所有文档的读取权限,但只能更新他们创建的文档。每个用户的数据库实际上只是这种数据库的一种特殊情况,其中组已减少到只有一个成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 2018-06-06
      • 2013-06-27
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多