我正在使用Python构建AppEngine应用程序。
为了便于讨论,想象一下我正在构建一个Gmail克隆。除了每个用户有100万封短电子邮件。
关键是,每个用户都有一个大的搜索索引,全部都是自己的;就像Gmail一样,每个用户都有自己内容的个人“搜索引擎”。
现在想象许多这些消息属于多个用户(例如邮件列表电子邮件或cc:一百个用户)。不是全部,而是一些合理的分数。
如果没有过早优化,我最好的选择是存储数据和索引吗?
答案 0 :(得分:2)
如何在每封邮件中存储用户密钥列表?这假设单个消息不会被超过一百个用户拥有。
class User(db.Model):
"usual properties like name, etc"
class Message(db.Model):
# list of users that have this message
users = db.ListProperty(db.Key)
如果您想要无限数量的用户*消息关系,可以使用另一个表:
class UserMessage(db.Model):
user = db.ReferenceProperty(User)
message = db.ReferenceProperty(Message)
这里有几篇关于在GAE上建模关系的好文章:
http://code.google.com/appengine/articles/modeling.html http://blog.notdot.net/2010/10/Modeling-relationships-in-App-Engine
答案 1 :(得分:0)