wai*_*ani 12 google-app-engine python-2.7 app-engine-ndb google-cloud-datastore
假设我有一个图片库,一张图片可能有100k +粉丝.哪种ndb设计更有效?
class picture(ndb.model):
fanIds = ndb.StringProperty(repeated=True)
... [other picture properties]
Run Code Online (Sandbox Code Playgroud)
要么
class picture(ndb.model):
... [other picture properties]
class fan(ndb.model):
pictureId = StringProperty()
fanId = StringProperty()
Run Code Online (Sandbox Code Playgroud)
您可以添加到ndb重复属性的项目数量是否有任何限制,并且在重复属性中存储大量项目是否有任何性能损失?如果使用重复属性效率较低,它们的用途是什么?
通常v1会便宜得多.
就读/写成本而言,您为每个实体提取/写入付费,因此您希望减少实体数量.版本1会更便宜.如果每次获取图片时都获取每个粉丝,便宜得多.
但是每个实体限制为1MB.如果您有100k +粉丝,则可以根据粉丝的大小达到该限制.这不算你的其他图片数据,所以你可以吹掉1MB的限制.您将不得不添加一些更复杂的代码来处理溢出情况.
大型实体的获取时间比小型实体要长.如果你要一直拿到所有的粉丝,v1会更好.如果你只想在任何一点获取5个粉丝,那么v2可能会更快(只有可能).另一方面,如果你尝试拉动100k风扇实体......这将永远消失.
| 归档时间: |
|
| 查看次数: |
4139 次 |
| 最近记录: |