【问题标题】:GAE Datastore: “total” property vs. adding up line items?GAE 数据存储:“总”属性与添加行项目?
【发布时间】:2011-05-07 19:42:29
【问题描述】:

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

假设我的应用跟踪了一群老鼠以及它们吃了多少奶酪。每个Rat 实体都有一系列Meal 实体——每个实体都跟踪老鼠吃的时间和奶酪片的数量(slices 属性)。每个Rat 还具有一个total_slices 属性,该属性会在记录新餐时更新。

我是否应该放弃total_slices 属性,而在需要知道总数时简单地将每个Mealslices 相加? Datastore 文档说查询很便宜,而以高频率更新实体是有问题的(谷歌将“高频率”定义为以持续的速率每秒更新一次以上的实体)。因此,如果我有一些非常贪婪的老鼠,它们每秒吃一次以上,我在更新Rattotal_slices 时冒着超时的风险。

对于如何最好地设计这个场景有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

    1.您是否应该将total_slices 反规范化为Rat 实体?

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

    • 正在为total_slices 获取Rat 共同任务?
    • 您是否需要 按total_slices 列出或排序Rats
    • 将每个Meal 加起来仍然是 经过几年的数据高效 有没有积累?

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

    使用Sharded Counter

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多