PEZ*_*PEZ 6 python google-app-engine social-networking google-cloud-datastore
我们希望实现一个"新闻提要",用户可以看到她的朋友广播的消息,先用最新消息排序.但是Feed应该反映她朋友列表中的变化.(如果她添加了新朋友,那些来自这些消息的消息应该包含在Feed中,如果她删除了朋友,则不应该包含他们的消息.)如果我们使用pubsub-test示例并将收件人列表附加到每封邮件,这意味着很多当用户连接和断开朋友时,操纵邮件收件人列表.
我们首先使用传统的RDBMS思想模拟发布 - 订阅"扇出".它似乎首先起作用,但是,由于IN运算符以它的方式工作,我们很快意识到我们无法继续这条路径.我们发现Brett Slatkin在去年Google I/O上的演示,我们现在已经观看了几次,但我们不清楚如何使用"动态"收件人列表.
我们需要的是在建模时如何"思考"的一些提示.
将我在 Google App Engine 的 Google 群组中得到的这个问题的答案粘贴到http://groups.google.com/group/google-appengine/browse_thread/thread/09a05c5f41163b4d#作者:Ikai L (Google)
这里有一些想法:
删除好友是常见事件吗?同样,添加好友是一个常见的事件吗?(都是相对的,相对于新闻提要的“读取”)
据我所知,进行大量读取的唯一方法是在人们的流中多次写入数据。据我所知,Twitter 使用“最终一致”模型来做到这一点。这就是为什么您的 Feed 在负载较重时将有几分钟不会更新的原因。不过,普遍的共识是,关系型标准化模型根本行不通。
- Jaiku 引擎是开源的,供您学习: http://code.google.com/p/jaikuengine。它在 App Engine 上运行希望这些对您考虑设计时有所帮助。