MongoDB设计模式、反模式及二进制数据存储指南
1. 补偿驱动策略与事务处理
对于长时间运行的多步骤事务,补偿驱动策略几乎是必要的。例如,订单的授权、发货和取消的整个过程就需要这样的策略。即使是具有完整事务语义的关系型数据库管理系统(RDBMS),在处理这类事务时也必须实施类似的策略。虽然某些应用程序对多对象ACID事务的需求难以避免,但通过正确的模式,MongoDB也能承担一定的事务处理工作,并支持应用程序所需的事务语义。
2. 局部性与预计算
MongoDB常被用作分析数据库,许多用户会将分析数据存储在其中。原子增量和丰富文档的结合似乎效果最佳。以下是一个表示每月每天页面总浏览量以及整月总浏览量的文档示例:
{
base: "org.mongodb",
path: "/",
total: 99234,
days: {
"1": 4500,
"2": 4324,
"3": 2700,
"4": 2300,
"5": 0
}
}
可以使用 $inc 操作符对当天和当月的总数进行简单的针对性更新:
use stats-2011
db.sites-nov.update({ base: "org.mongodb", path: "/" },
{ $inc: {total: 1, "days.5": 1 }
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



