Как GraphQL обрабатывает «двухфазные фиксации» в MongoDB?

У MongoDB есть концепция «двухфазных обязательств».

Операции над одним документом всегда являются атомарными с базами данных MongoDB; однако операции, связанные с несколькими документами, которые часто называются «транзакциями с несколькими документами», не являются атомарными. Поскольку документы могут быть довольно сложными и содержать несколько «вложенных» документов, однокомпонентная атомарность обеспечивает необходимую поддержку для многих практических случаев использования. https://docs.mongodb.com/v3.4/tutorial/perform-two-phase-commits/

Поскольку, поскольку схема в GraphQL создает отдельный документ, как это делает GraphQL?

Всего 1 ответ


GraphQL не имеет никакого внутреннего понятия транзакций или атомарности. Единственным утверждением в этих строках является то, что несколько полей верхнего уровня в одной мутации разрешаются последовательно с ожиданием, что последующие мутации будут видеть побочные эффекты от предыдущих. Если у вас есть несколько изменений в одном вызове GraphQL, а более поздний - сбои, GraphQL абсолютно ничего не говорит о том, нужно ли откатывать первый.

Если вы реализуете схему GraphQL таким образом, чтобы потребовалось изменить несколько документов или записей, вам решать, как разработчик (или, возможно, промежуточная библиотека, которую вы используете), чтобы обеспечить вам необходимую точность и согласованность. GraphQL ничего здесь не дает.


Есть идеи?

10000