il *_*tto 5 couchdb ios couchcocoa
当使用CouchCocoa框架时,我在CouchDB上遇到了一个"最佳实践"问题(实际上我正在使用TouchDB作为iOS的CouchDB端口).
我需要删除一堆通过查询获得的文档.我知道3种方法:
1)将所有文档放入NSArray,然后使用[CouchDatabase deleteDocuments:]
2)foreach查询行调用delete方法,如:for(CouchQueryRow*row in query.rows)[row.document DELETE];
3)创建一个发出_id,_rev属性并添加_deleted属性的查询,然后使用批量更新,如:[couchDatabase putChanges:]
性能更好的是什么?有更好的方法吗?
在 HTTP API 级别,实现此目的最快的方法是运行单个批处理请求,该请求提供要删除的所有文档的_id当前状态。_rev
你的工作是确保 CouchCocoa 确实做到了这一点——我知道 CouchCocoa 会尝试缓存_rev它读取的文档,所以如果你要删除刚刚读取的文档,[CouchDatabase deleteDocuments:]应该足够了,否则你必须[CouchDatabase getDocumentsWithIDs:]先这样做。
如果您的文档非常大_rev,那么使用视图而不是批量获取可能会更好。这迫使您使用[CouchDatabase putChanges:]执行批量删除。我不知道文档大小阈值在哪里,因此您必须对此进行基准测试。
当然,您还需要决定发生冲突时会发生什么。
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |