[一些背景信息 - 可能跳过]
首先,我对数据库管理几乎一无所知 并且只是后端猫鼬和节点的浅层经验 领域(几个Udemy课程(。乌迪米课程让我相信 MongoDB仍然是具有关系关系的数据库的可行选择。 属性和关闭我去为类似论坛的后端工作 网站。在了解了交易后,我尝试实现 它们在我的后端,因为似乎完全有必要实现 执行查询数组时的回滚功能。然而,它变成了 事务只能在副本集上进行 - 这也 似乎至少需要 2 个。3 个数据库用于启动 MVP 是 显然被认为是矫枉过正。
[问题]
-
是否可以仅使用 1 个数据库实现事务?如果是这样,怎么办?
-
如果上述方法是不可能的,那么在实现事务时如何以最少的配置启动mongodb数据库,同时考虑数据库用于启动MVP的事实。
-
(对于在类似场景中实现生产级 mongo 数据库有经验的人( 如果不考虑使用事务,如何在没有事务的情况下安全地将编辑/创建多个文档的查询发送到mongoDB数据库,同时不使用由查询组成的try-catchs喷洒每一代码来回滚每个故障点(我认为开销太大(
我的截止日期很紧,并且已经做了大量的基础工作和使用猫鼬的几条路线,这意味着放弃mongodb而使用关系数据库目前将是一个困难的选择。
我想我已经用谷歌搜索了与该主题相关的所有内容,甚至在谷歌搜索的第二页尝试了博客/文章(包括我在内的许多人认为这是暗网/s(。 然而,我确实认为我可能错过了我正在寻找的内容,也欢迎仅包含链接的答案。
感谢您的阅读!
您需要副本集 [*] 才能使用事务,但您可以创建单节点副本集以进行测试。
文档中描述了完整的过程,对于单节点 RS,您可以按照编写的方式进行操作,但只配置单个成员。
简而言之,您需要将--replSet
参数传递给mongod
然后通过 shell 连接到它mongo
并运行rs.initiate()
。
请注意,事务并不是所有问题的神奇解决方案。在某些情况下,它们是合适的,并且MongoDB提供了更适合的其他功能。
[*] 或使用 MongoDB 4.2+ 的分片集群,但这涉及更多的设置工作。