gpt4 book ai didi

synchronization - CouchDB数据同步

转载 作者:行者123 更新时间:2023-12-04 17:27:24 24 4
gpt4 key购买 nike

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

最佳答案

pouchdb 的一个主要好处是拥有本地数据库,这些数据库具有 couchdb 之类的 API,但即使在离线时也存在,等等。因此,如果您正在使用 pouchdb 并想离线工作,您几乎肯定会希望每个用户数据库都在 couchdb 上并执行pouchdb <-> couchdb 同步等。但是你不能在没有 JS 的情况下使用 pouchdb,并且在 webview 等中依赖它,这将在很大程度上破坏编译为 native 代码而不是基于 webview 的好处应用程序。

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

在这种情况下,客户端会在本地保留一份用户自己的文档副本,需要在联网时同步回服务器。对于拥有多个设备的用户来说,当然存在冲突的可能性,可以通过客户端自己比较本地和服务器版本或借助于更新服务器上的设计文档来解决。

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

关于synchronization - CouchDB数据同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62426021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com