Google App Engine 数据存储实体。效率与结构
Google App Engine Datastore entities. Efficiency and structure
我有兴趣了解 Google App Engine 数据存储区实体的最佳结构,以提高速度和成本效率。
例如,关于俱乐部的应用。
结构A:
每个俱乐部一个 ndb.Model 实体:
姓名、ID、地址、联系人、标签、评论、图片等
结构B:
每个俱乐部有多个实体,具有引用俱乐部的 KeyProperty。
- ndb.Model 实体 A. 名称和 ID
- ndb.Model 实体 B 地址
- ndb.Model 实体 C. 联系人
- 等等
考虑到用户可能只想查找附近俱乐部的地址,或者可能只想搜索一个俱乐部的联系电话,或者可能会滚动浏览有关各种俱乐部的信息页面;速度和成本效率的更好结构/最佳实践是什么?
谢谢。
归结为 (a) 阅读模式和 (b) 写作模式。
阅读:
如果您最广泛的用例是显示有关俱乐部的所有信息,那么将所有信息保存在一个实体中将是一种成本更低、效率更高的方法(一次读取而不是三次读取)。
写:
如果你的模型包含很多几乎从不改变的属性和一些变化非常频繁的属性,最好将它们分离到不同的实体中,这样单个实体的每次更新不会触发所有索引的更新。
在您的示例中,似乎没有理由将实体拆分为多个模型。
结构 B,但所有额外的模型都添加为结构化属性。
这将使整个俱乐部成为一个整体
我有兴趣了解 Google App Engine 数据存储区实体的最佳结构,以提高速度和成本效率。
例如,关于俱乐部的应用。
结构A:
每个俱乐部一个 ndb.Model 实体: 姓名、ID、地址、联系人、标签、评论、图片等
结构B:
每个俱乐部有多个实体,具有引用俱乐部的 KeyProperty。
- ndb.Model 实体 A. 名称和 ID
- ndb.Model 实体 B 地址
- ndb.Model 实体 C. 联系人
- 等等
考虑到用户可能只想查找附近俱乐部的地址,或者可能只想搜索一个俱乐部的联系电话,或者可能会滚动浏览有关各种俱乐部的信息页面;速度和成本效率的更好结构/最佳实践是什么?
谢谢。
归结为 (a) 阅读模式和 (b) 写作模式。
阅读: 如果您最广泛的用例是显示有关俱乐部的所有信息,那么将所有信息保存在一个实体中将是一种成本更低、效率更高的方法(一次读取而不是三次读取)。
写: 如果你的模型包含很多几乎从不改变的属性和一些变化非常频繁的属性,最好将它们分离到不同的实体中,这样单个实体的每次更新不会触发所有索引的更新。
在您的示例中,似乎没有理由将实体拆分为多个模型。
结构 B,但所有额外的模型都添加为结构化属性。
这将使整个俱乐部成为一个整体