【发布时间】:2021-08-01 20:09:22
【问题描述】:
我们使用 CouchDB 和 PouchDB 在浏览器中复制远程数据库。 我们会创建 CouchDB 的备份以防万一出现问题。
在数据丢失时引入备份是没有问题的,但是将系统重置为旧状态也会影响所有同步的 PouchDB 似乎很难实现。
例如:User1 和 User2 将本地 PouchDB 与远程 CouchDB 同步。 User1 创建一个新文档D1,它也同步到远程数据库和User2。现在User1 想要将数据库重置为D1 创建之前的状态。为此,用户删除自己的本地数据库并将远程 CouchDB 重置为之前的状态。当User1 与远程CouchDB 同步时,D1 不会在那里。但是User2 在他的本地数据库中仍然有D1,一旦它与远程数据库同步,D1 也将回到 CouchDB 并同步到User1 的本地数据库。最终系统处于与重置之前相同的状态。
对于我们的项目,要求每个用户在备份系统之前删除本地数据库是不切实际的。
一个看起来像那样的过程怎么会将这样一个分布式系统重置为旧状态。
一些额外的挑战:
- 这个例子很简单,应该只是给出一个大致的想法。最后可能会有大量的创建、编辑和删除操作必须通过备份撤消。
- 系统重置时,部分客户端可能处于离线状态
【问题讨论】:
标签: synchronization couchdb backup distributed pouchdb