以下是关于博客帖子和评论的玩具示例,呈一对多关系。哪种方法更有效——在StructuredProperty中存储所有评论,还是在Comment模型中使用KeyProperty?
再次强调,目标是将对数据存储区的读/写次数最小化。您可以做出以下假设: - 评论不会独立于其相应的博客文章被检索。(我怀疑这使得StructuredProperty最可取。) - 评论需要按日期、评分、作者等进行排序。(数据存储区中的子属性无法索引,因此可能会影响性能?) - 创建后可能会编辑(甚至删除)博客帖子和评论。
使用StructuredProperty:
from google.appengine.ext import ndb
class Comment(ndb.Model):
various properties...
class BlogPost(ndb.Model):
comments = ndb.StructuredProperty(Comment, repeated=True)
various other properties...
使用 KeyProperty:
from google.appengine.ext import ndb
class BlogPost(ndb.Model):
various properties...
class Comment(ndb.Model):
blogPost = ndb.KeyProperty(kind=BlogPost)
various other properties...
如果有其他与最小化对数据存储的读写次数相关的有效表示一对多关系的方案,请随意提出。
谢谢。