我正在Python中构建一个AppEngine应用程序。AppEngine数据策略来处理每个用户的大型索引?
为了便于讨论,假设我正在构建Gmail克隆。除了每个用户一百万条短信。
重点是,每个用户都会有一个大的搜索索引,全部给他们自己;就像Gmail一样,每个用户都有自己内容的个人“搜索引擎”。
现在设想许多这些消息属于多个用户(例如,邮件列表电子邮件或cc:一百个用户)。不是全部,而是一些合理的分数。
没有过早优化,我最好的选择是存储数据和索引?
我正在Python中构建一个AppEngine应用程序。AppEngine数据策略来处理每个用户的大型索引?
为了便于讨论,假设我正在构建Gmail克隆。除了每个用户一百万条短信。
重点是,每个用户都会有一个大的搜索索引,全部给他们自己;就像Gmail一样,每个用户都有自己内容的个人“搜索引擎”。
现在设想许多这些消息属于多个用户(例如,邮件列表电子邮件或cc:一百个用户)。不是全部,而是一些合理的分数。
没有过早优化,我最好的选择是存储数据和索引?
如何在每封邮件中存储用户密钥列表?这是假设单个消息不会被超过一百多个用户拥有。
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