本文為NoSQL數(shù)據(jù)模型設(shè)計(jì)系列的一部分命雀。
如果經(jīng)常需要獲取保存數(shù)據(jù)的某個(gè)計(jì)算結(jié)果逛艰,并且讀次數(shù)遠(yuǎn)多于寫次數(shù)池摧,可以采用計(jì)算模式牍陌。
計(jì)算模式
應(yīng)用將計(jì)算結(jié)果保存在一個(gè)單獨(dú)字段中响牛,需要時(shí)直接使用,不用再反復(fù)計(jì)算鞍历。如果寫操作并不頻繁,可以在在寫的同時(shí)更新計(jì)算結(jié)果值肪虎,反之劣砍,應(yīng)通過定時(shí)任務(wù)更新計(jì)算值。
考慮下面影屏集合
// 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
}
針對某個(gè)電影扇救,經(jīng)常需要查詢總觀影人數(shù)和總銷售額刑枝。為了避免每次都計(jì)算這些匯總值香嗓,使用計(jì)算模式計(jì)算好這些匯總值,并存入電影集合装畅。
// movies collection
{
"title": "Reservoir Dogs",
"total_viewers": 2600,
"total_revenue": 33480,
...
}
如果系統(tǒng)數(shù)據(jù)更新不頻繁靠娱,可在更新影屏數(shù)據(jù)時(shí)同時(shí)更新電影數(shù)據(jù)。如果數(shù)據(jù)更新頻繁掠兄,應(yīng)定時(shí)例如每小時(shí)計(jì)算電影數(shù)據(jù)像云。
完整內(nèi)容請查看NoSQL數(shù)據(jù)模型設(shè)計(jì)系列