gpt4 book ai didi

跨越多个 Web 请求的 MongoDB 事务

转载 作者:行者123 更新时间:2023-12-01 22:20:46 24 4
gpt4 key购买 nike

我正在尝试实现 MongoDB 使用 Go 的 HTTP 交易 API 服务
客户端发送请求到:/db/transaction/begin获取交易 ID
为了将所有后续与事务相关的 CRUD 操作 API 请求与该事务 ID 绑定(bind)
最后客户端发送请求到/db/transaction/{transaction_id}/commit/db/transaction/{transaction_id}/rollback(有点类似于 Firestore 事务)
我能够使用 实现这种行为阿兰戈数据库 因为它是 Go Driver 允许我设置每个 CRUD 操作的事务 ID (https://godoc.org/github.com/arangodb/go-driver#WithTransactionID)
但不幸的是,我无法使用官方的 MongoDB Go 驱动程序来实现这一点
我错过了什么吗?
是否有解决方法或任何自定义实现可以帮助我?
提前致谢

最佳答案

更简单的解决方案是将操作存储(缓冲)在您的应用程序中,并在提交端点运行时将它们一起提交给 MongoDB。
从技术上讲,您可以在应用程序中手动管理事务生命周期并实现跨 Web 请求的事务,但这是 1)将非常尴尬,2)您将失去驱动程序在 withTransaction API 中为您所做的各种 transient 错误处理。
去做这个:

  • 熟悉 sessions specification
  • 熟悉 transactions specification
  • 阅读 convenient tx api spec这样您就知道如果您的客户问您为什么要暴露驱动程序没有的错误
  • ,您将不会免费获得什么
  • 查看驱动程序中实现这些规范的代码
  • 为您的应用程序中的要求实现足够的 session 和事务管理

  • 可能更容易 fork 和修补驱动程序,但这显然还有其他问题,因为您的代码库与官方驱动程序代码库不同。

    关于跨越多个 Web 请求的 MongoDB 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63660527/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com