GraphQL如何处理MongoDB中的“两阶段提交”?

时间:2018-11-09 14:05:28

标签: mongodb graphql

MongoDB具有“两阶段提交”的概念。

  

单个文档的操作对于MongoDB数据库始终是原子的;但是,涉及多个文档的操作(通常称为“多文档交易”)不是原子操作。由于文档可能非常复杂,并且包含多个“嵌套”文档,因此单文档原子性为许多实际用例提供了必要的支持。https://docs.mongodb.com/v3.4/tutorial/perform-two-phase-commits/

由于GraphQL中的架构创建了单独的文档,因此GraphQL如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:4)

GraphQL没有事务或原子性的任何内在概念。遵循这些原则的唯一陈述是,multiple top-level fields in a single mutation are resolved serially期望以后的突变会看到先前突变的副作用。如果您在一个GraphQL调用中进行了多次更改,但随后的调用失败,则GraphQL绝对没有说明是否应回滚第一个。

如果要以需要更改多个文档或记录的方式来实现GraphQL模式,则由实现者(或您正在使用的中间库)来决定是否提供所需的原子性和一致性保证。 GraphQL在此未提供任何内容。