这是另一个Google App Engine数据存储区问题。
假设我的应用程序跟踪了一堆老鼠以及他们吃了多少奶酪。每个Rat
实体都有一系列Meal
个实体 - 每个实体跟踪大鼠吃什么和多少片奶酪(slices
属性)。每个Rat
还有一个total_slices
属性,只要记录新餐,就会更新。
我是否应该放弃total_slices
属性,只需在每次需要知道总数的情况下简单地将每个slices
的{{1}}相加?数据存储文档说查询很便宜,而以高频率更新实体是有问题的(谷歌将“高频率”定义为以持续的速率每秒更新一次实体)。因此,如果我有一些非常贪婪的老鼠每秒吃一次以上的话,那么当我更新Meal
的{{1}}时,我就会超时。
有关如何最好地设计此方案的任何建议吗?
答案 0 :(得分:4)
您的问题中包含两个单独的问题:
<强> 1。您是否应该将total_slices
取消标准化为Rat
实体?
要回答这个问题,您必须分析应用程序的数据访问模式。例如:
total_slices
的{{1}}个
共同的任务? Rat
列出或排序Rats
? total_slices
加起来仍然是
经过几年的数据有效
积累了吗?<强> 2。如果您的实体需要更新超过1 /秒,您在GAE中做什么?