【发布时间】:2016-08-11 22:40:17
【问题描述】:
这可能是一个超级愚蠢的问题,但这里是:
在 App Engine 上,如果我想为一对多关系建模,我应该将引用的实体存储为 KeyProperty,还是应该简单地将实体的 numericID(由 App Engine 自动生成)存储为整数属性?
例如:
class Book(ndb.Model):
author = ndb.KeyProperty(kind=Author)
class Author(ndb.Model):
name = ndb.StringProperty()
或者:
class Book(ndb.Model):
author_id = ndb.IntegerProperty()
class Author(ndb.Model):
books = ndb.StringProperty()
在第二个例子中,如果我想得到一本书的作者,我可以这样做:
key = ndb.Key('Author', Book.author_id)
author = key.get()
一种方法会比另一种更有效吗?如果应用程序规模很大,例如一个作者可以拥有 100 万本书,而我需要查询该作者的所有书籍,那么一种方法会比另一种更有效吗?
我倾向于第二种方式,只是因为我觉得存储ID而不是复杂的Key对象会更少存储,特别是如果我需要输出JSON,很难序列化Key对象
【问题讨论】:
标签: python google-app-engine one-to-many