2

我与 mongodb 合作,我想一个可能的策略来将数据保存在不同的集合中,例如 2 个集合。但是,就像事务系统一样,我想确保数据存在于 collection1 和 collection2 中,或者什么也没有。

实际上,我希望在执行某些操作时跟踪在我的应用程序中执行的操作。因此,例如,当我的应用程序保存数据时,我还想保存它已执行插入操作,修改数据时,我想跟踪修改操作等。

这些操作数据可以保存为单个集合的嵌入文档。例如,如果我尝试将数据保存到collection1中,那么我可以将“插入操作数据”保存在与嵌入文档相同的 collection1 中。如果我尝试将数据修改到collection2中,那么我可以将“修改操作数据”保存在与嵌入文档相同的 collection2 中,依此类推......因此,当我想检索“操作嵌入文档数据”时,我必须查询 collection1、collection2、collection3 等. 我认为那是昂贵的。进一步的collection1,collection2,collection3已经被应用程序强调了,所以我不想再强调了。

或者,我可以将“操作数据”保存在单独的集合中,例如“oper_coll”集合名称。所以我只能查询“oper_coll”来检索“操作数据”,但这意味着当我在 collection1 中保存数据时,我必须将“操作数据”保存在“oper_coll”中以跟踪当前操作。我希望数据正确保存在 collection1 中并在 oper_coll 中进行操作。如果出现问题,它什么也不做,数据不会出现在任何一个集合( collection1 和 oper_coll )中。所以我需要一个应用程序级别的事务系统,因为我知道 mongodb 不支持事务。

所以我想在应用程序级别实现类似的东西,因为我需要将 data1 保存到 collection1 中,如果没问题,它将 data2 保存到 collection2 中。如果出现问题,则全部回滚。

你有什么想法吗?

4

1 回答 1

0

首先,我认为这个链接会有所帮助,它提供了一个如何使用 mongo 编排 2 阶段提交的示例。

http://cookbook.mongodb.org/patterns/perform-two-phase-commits/

基于链接中的示例和围绕该主题的一些附加阅读,我使用工作单元设计模式创建了一个 mongo 样式事务。

这些帮助有用?

于 2012-03-25T17:54:59.063 回答