gpt4 book ai didi

database - 在没有副本集或最少配置的情况下启用 MongoDB 事务

转载 作者:行者123 更新时间:2023-12-04 01:23:02 26 4
gpt4 key购买 nike

[一些背景信息 - 可能可以跳过]

To begin with, I have barely any understanding of database management and just shallow experience with mongoose and node in the backend realm(a couple of udemy courses). Udemy courses made me believe that mongodb was still a viable choice for a database with relational properties and off I went working on a backend for a forum-like website. After learning about transactions, I attempted to implement them in my backend, since it seemed perfectly necessary to implement a rollback feature when executing an array of queries. However it turns out that transactions are only possible on replica sets - which also appeared to require a minimum of 2. 3 databases for a startup MVP was obviously considered an overkill.



[问题]
  • 是否可以仅使用 1 个数据库来实现事务?如果是这样怎么办?
  • 如果以上都不可能,考虑到数据库是用于启动MVP的,如何在实现事务的同时以最少的配置启动一个mongodb数据库。
  • (对于在类似场景中有实现生产级mongo数据库经验的任何人)如果不考虑使用事务,如何在没有事务的情况下安全地将编辑/创建多个文档的查询发送到mongoDB数据库,同时不喷洒每一位代码 try catch 由查询组成的回滚每个故障点(我认为开销太大)

  • 我的截止日期很紧,并且已经使用 mongoose 完成了大量基础工作和几条路线,这意味着目前为关系数据库放弃 mongodb 将是一个困难的选择。

    我想我已经用谷歌搜索了与该主题相关的所有内容,甚至在谷歌搜索的第二页中尝试了博客/文章(包括我在内的许多人都认为这是暗网)。
    但我确实认为我可能错过了我正在寻找的内容,并且也欢迎仅包含链接的答案。

    感谢您的阅读!

    最佳答案

    您需要一个副本集 [*] 来使用事务,但您可以创建一个单节点副本集用于测试目的。

    完整的过程在 in documentation 中描述,对于单节点 RS,您遵循所写的内容,但只配置一个成员。

    简而言之,您需要通过 --replSet论据 mongod然后通过 mongo 连接到它 shell 并运行 rs.initiate() .

    请注意,事务并不是所有问题的神奇解决方案。有些场景是合适的,有些场景是 MongoDB 提供更适合的其他功能。

    [*] 或带有 MongoDB 4.2+ 的分片集群,但这涉及更多设置工作。

    关于database - 在没有副本集或最少配置的情况下启用 MongoDB 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62343611/

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