Google App Engine数据存储区实体。效率和结构

时间:2016-04-12 19:35:59

标签: google-app-engine google-cloud-datastore app-engine-ndb

我有兴趣了解Google App Engine数据存储区实体的最佳结构,速度和成本效率。

例如,一个关于俱乐部的应用程序。

结构A:

每个俱乐部的单个ndb.Model实体: 姓名,身份证,地址,联系人,标签,评论,图像等

结构B:

每个俱乐部有多个实体,KeyProperty引用俱乐部。

  1. ndb.Model实体A.名称和ID
  2. ndb.Model实体B.地址
  3. ndb.Model实体C.联系人
  4. 考虑到用户可能只想查找靠近其所在地的俱乐部地址,或者可能只搜索一个俱乐部的联系号码,或者可能滚动浏览各个俱乐部的信息页面;什么是速度和成本效率的更好的结构/最佳实践?

    感谢。

2 个答案:

答案 0 :(得分:1)

这一切归结为(a)阅读模式,以及(b)写作模式。

READ: 如果您最广泛的用例是显示有关俱乐部的所有信息,那么将所有信息保存在一个实体中将是一种更便宜且更有效的方法(一种读取而不是三种)。

WRITE: 如果您的模型包含许多几乎从不更改的属性以及一些经常更改的属性,则最好将它们分成不同的实体,以便单个实体的每次更新都不会触发对所有索引的更新。

在您的示例中,似乎没有理由将实体拆分为多个模型。

答案 1 :(得分:1)

结构B,但所有额外模型都添加为结构化属性。

这将使整个俱乐部成为一个单一的实体