嵌套“同类”关系的GAE数据存储区数据模型推荐

时间:2019-02-19 16:15:23

标签: node.js google-app-engine google-cloud-datastore

我遵循了Google的Bookshelf App教程(在node.js中),而不是书籍目录,我希望对生产零件目录进行建模。

零件由“子”零件和任务组成。 每个“子”部分都可以再次具有“子”部分和任务(制造步骤)。

当前实现 :目前,我只有两种 Parts Tasks 。 部件之间的关系是通过将父部件的唯一键(parentId)存储在其子部件中的属性来管理的。例如,我目前最大的麻烦是,高度嵌套的子部件的价格变化将需要递归地更新所有父部件...

问题:对于此类应用程序,推荐的数据存储设计是什么?

它应该解决或提高效率:

  • 如果我更改“子-子-子”零件价格,则需要根据选择的计算方法来更改所有父零件的价格。
  • 不应限制子部分的深度(我确实将数据存储区"nested entity values"的限制读为20(但可能无法正确理解)。
  • 不应将每个(部分及其所有子部分)“实体组”每秒写入1次。我已经读过有关此限制的信息,但是我不确定这是否也适用于所谓的“事务”(我认为您可以对实体组执行此操作)。

1 个答案:

答案 0 :(得分:0)

一种潜在的解决方案是避免将总价格完全存储在数据存储区中。相反,每个零件或任务上的“价格”应仅包括该零件本身的成本,而不包括子零件的成本。

取而代之的是在需要时即时计算价格,将整个零件/子零件/任务树加起来。如果要加快计算速度,请将其存储在内存缓存中(但在更新价格时请确保删除内存缓存键)。