couchdb - 高效地填充新的 PouchDB 数据库
问题描述
我是 PouchDB 的新手,我正在尝试将数据从远程 CouchDB 数据库中提取到新的本地 PouchDB 数据库中。
当然还有以下作品:
PouchDB.replicate(remote, local, { live: false, retry: false })
但这真是太慢了!我认为这是因为它按顺序执行了如此多的 http 请求。
作为优化,我认为:
好的,让我们先在一个 HTTP 请求中获取数据,
remote.allDocs
然后用于local.bulkDocs
在本地数据库中插入文档
但这并不等同于复制数据库,并且_rev
文档中的字段会bulkDocs
失败。
我应该怎么办?
更多细节
关于数据库
- 目前有1202个文件
- 过去大约有 4000 个
- 我只是为每个文档添加了几个修订
关于表演:
- 运行大约需要 2 秒
remote.allDocs({include_docs: true})
。输出为 1.15 MB - 运行需要1 分钟
PouchDB.replicate(remote, local, { live: false, retry: false })
,输出大约 5 MB - 添加一个大约需要 24 秒
filter: doc => !doc._deleted
filter: 'new_device/excludeDeletedDocs'
在设计文档中添加与以前相同的过滤器大约需要 20 秒
关于持续 1 分钟的复制:这让我感到惊讶,我认为它比那更快,但现在需要多长时间。
关于应用程序
- 每个用户有一个数据库
- 他们可以通过多种设备在线和离线访问它
- 大多数文档都很小,被编辑了几次并且寿命相对较短
- 其中很大一部分几乎永远存在
- 其中一小部分可以更大,并且可以多次编辑。
解决方案
推荐阅读
- java - 有没有更好的方法来重启java线程?
- typescript - 当我放置结束括号时,Typescript vscode back tab
- raku - 一起定义具有多个 API 版本的类
- python - 将文本转换为图像
- c# - 如何检查属性的所有值是否为空或空,但仅在子类中?C#
- oracle - 有没有更好的方法来编写 avg 程序?
- ipywidgets - 使用 ipywidgets 刷新复杂绘图的快速方法
- spring-boot - Alamofire 5 POST 方法与 swift 5 一起使用数组参数
- google-api - 谷歌照片 api:“UNAVAILABLE Credentials failed to get metadata”错误
- minikube - Minikube / Docker 代理正在使用端口 80