GAE数据存储:“总”属性与添加订单项?

时间:2010-11-10 10:56:53

标签: google-app-engine google-cloud-datastore data-modeling

这是另一个Google App Engine数据存储区问题。

假设我的应用程序跟踪了一堆老鼠以及他们吃了多少奶酪。每个Rat实体都有一系列Meal个实体 - 每个实体跟踪大鼠吃什么和多少片奶酪(slices属性)。每个Rat还有一个total_slices属性,只要记录新餐,就会更新。

我是否应该放弃total_slices属性,只需在每次需要知道总数的情况下简单地将每个slices的{​​{1}}相加?数据存储文档说查询很便宜,而以高频率更新实体是有问题的(谷歌将“高频率”定义为以持续的速率每秒更新一次实体)。因此,如果我有一些非常贪婪的老鼠每秒吃一次以上的话,那么当我更新Meal的{​​{1}}时,我就会超时。

有关如何最好地设计此方案的任何建议吗?

1 个答案:

答案 0 :(得分:4)

您的问题中包含两个单独的问题:

<强> 1。您是否应该将total_slices取消标准化为Rat实体?

要回答这个问题,您必须分析应用程序的数据访问模式。例如:

  • 获得total_slices的{​​{1}}个 共同的任务?
  • 你需要吗? 按Rat列出或排序Rats
  • 将每个total_slices加起来仍然是 经过几年的数据有效 积累了吗?

<强> 2。如果您的实体需要更新超过1 /秒,您在GAE中做什么?

使用Sharded Counter