【发布时间】:2013-04-04 13:56:26
【问题描述】:
我正在构建一个应用程序来处理门票销售,并且预计会有非常高的需求。我想尝试将 MongoDB 与服务于 node.js 网站的多个并发客户端节点一起使用(并优雅地处理客户端故障)。
我读过“Limit the number of documents in a collection in mongodb”(完全不相关)和“Is there a way to limit the number of records in certain collection”(但那是关于有上限的集合,新文档会覆盖最旧的文档)。
是否可以将集合中的文档数量限制为某个最大大小,并让超过该限制的文档被拒绝。简单的例子是将门票销售添加到数据库中,如果所有门票都已售罄,则失败。
我考虑拥有一个 NumberRemaining 文档,我可以自动递减该文档,直到它达到 0,但如果节点在递减该数字和保存票证购买之间崩溃,我就会遇到问题。
【问题讨论】:
-
票的数量(存储为
ticket id)是否会超过单个 MongoDB 文档的最大大小(16MB)?您一次只能自动设置一个文档(因此可能只需将成功的票务交易存储在一个文档中)。 MongoDB 通常不适合您所描述的多文档事务系统,但 10gen 有一个可行的模式:docs.mongodb.org/manual/tutorial/perform-two-phase-commits -
这其实是个好建议,一个单据可以支持大约200万张门票销售。唯一的问题是一张唱片有多“热”,它会成为一个轻微的性能瓶颈,但这可能是一个好计划。然后,我可以单独存储文档(并在尝试将它们添加到成功票证列表之前添加它们)。
-
如果您将其添加为答案,我会将其标记为已接受
-
如果你想在这里售票的原子性,那么瓶颈将存在于表/集合级别或文档级别,因为该文档将在内存中,所以在文档级别更容易。
标签: mongodb