我正在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