我建設,將在谷歌AppEngine上託管一個線程消息系統App Engine的消息系統,消息狀態 - 設計模式
我在Building Scalable, Complex Apps on App Engine
class Message(db.Model):
sender = db.StringProperty()
body = db.TextProperty()
class MessageIndex(db.Model):
receivers = db.StringListProperty()
由Brett斯拉特金所描述的技術模仿它
我不得不確定追蹤用戶消息狀態的最有效方法。 例如,針對特定用戶的消息read
,archived
,deleted
。
下面是我到目前爲止所提出的解決方案。
我使用Datastore+的StructuredProperty的狀態添加到消息MessageIndex
class Message(model.Model):
sender = model.StringProperty()
body = model.TextProperty()
class _DisplayState(model.Model):
user_key = model.KeyProperty()
state = model.IntegerProperty(default=0) # 0-unread, 1-read, 2-archived
class MessageIndex(model.Model):
receivers = model.StructuredProperty(_DisplayState, repeated=True)
這種解決方案雖然簡單,但否定了MessageIndex的利益。此外,由於MessageIndex與消息數據存儲的寫入將受到限制,因此它們位於相同的實體組中。
什麼將是實現這一目標的最有效方法是什麼?增加一個額外的實體組是一個更好的解決方案嗎?
class MessageState(model.Model):
user_key = model.KeyProperty()
message_key = model.KeyPropery()
message_state = model.IntegerProperty(default=0) # 0-unread, 1-read, 2-archived
你打算髮送每封郵件給多少人? – 2011-06-15 03:59:21
@Nick Johnson理想情況下,我希望系統能夠處理2個用戶之間的私人按摩,以及將在10,000個人的羣組通知中的任何內容 – 2011-06-15 05:48:24