首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单节点CouchDB,多文档事务

单节点CouchDB,多文档事务
EN

Stack Overflow用户
提问于 2016-12-26 23:28:36
回答 2查看 403关注 0票数 1

假设在设计文档中有一个validate_doc_update函数,定义为:

代码语言:javascript
复制
{
   "_id": "_design/ddoc",
   "_rev": "12-133b5dad579f872884a9ccd6d4be5ee9",
   "language": "javascript",
   "validate_doc_update": "function(newDoc, oldDoc, userCtx) {
        if (oldDoc._rev != newDoc._rev) { throw('FAILED') }
   }"
}

如果我们执行批量更新(_bulk_docs);它是否跨国界地用于多个文档?

注意:我找到了this答案,阅读了文档并运行了一些测试代码。在CouchDB上执行事务似乎是一种完美的方式!但是,由于我没有在其他地方看到它(并想知道为什么?);想确定这一点,这不是一个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-27 17:45:33

CouchDB在这里。

这不是事务性的,而且是按设计进行的,甚至在单个节点上也是如此。

原因是我们不希望CouchDB中的任何API在从单个节点安装到集群安装时中断。

在集群中,很难保证一个多文档事务,所以CouchDB甚至不尝试它。

票数 3
EN

Stack Overflow用户

发布于 2017-01-05 19:07:55

我想补充的是,您通常可以将完整的事务存储到单个文档中,然后利用视图来显示结果。

例如,为了存储现金转移,而不是存储描述存款和提款的两个文档,将两者存储在“转帐”类型文档中,然后创建一个返回每个帐户余额的视图。

或者以question you referred to中的例子为例:如果您希望一次确保数据库中只有一个国王,只需使用带有_id = ' king‘的文档,并在那里存储有关国王的所有信息。如果国王更改,只需更改该文档中国王的实际数据即可。如果两个客户同时更换国王,你就会有冲突。顺便说一句,如果您使用多个节点或多个副本(例如,通过PouchDB对脱机第一客户端使用),这也会非常有效。你最终必须考虑解决冲突,但从设计上看,你永远不会遇到两位国王。

因此:根据您的需要,建立相应的文档模型。如果需要事务,请将每个事务存储为单个文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41337268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档