本文为NoSQL数据模型设计系列的一部分。
如果经常需要获取保存数据的某个计算结果,并且读次数远多于写次数,可以采用计算模式。
计算模式
应用将计算结果保存在一个单独字段中,需要时直接使用,不用再反复计算。如果写操作并不频繁,可以在在写的同时更新计算结果值,反之,应通过定时任务更新计算值。
考虑下面影屏集合
// screenings collection
{
"theater": "Alger Cinema",
"location": "Lakeview, OR",
"movie_title": "Reservoir Dogs",
"num_viewers": 344,
"revenue": 3440
}
{
"theater": "City Cinema",
"location": "New York, NY",
"movie_title": "Reservoir Dogs",
"num_viewers": 1496,
"revenue": 22440
}
{
"theater": "Overland Park Cinema",
"location": "Boise, ID",
"movie_title": "Reservoir Dogs",
"num_viewers": 760,
"revenue": 7600
}
针对某个电影,经常需要查询总观影人数和总销售额。为了避免每次都计算这些汇总值,使用计算模式计算好这些汇总值,并存入电影集合。
// movies collection
{
"title": "Reservoir Dogs",
"total_viewers": 2600,
"total_revenue": 33480,
...
}
如果系统数据更新不频繁,可在更新影屏数据时同时更新电影数据。如果数据更新频繁,应定时例如每小时计算电影数据。
完整内容请查看NoSQL数据模型设计系列
网友评论