【发布时间】:2010-07-29 20:04:40
【问题描述】:
我正在尝试通过创建 twitter 克隆来学习数据库设计。我想知道创建朋友时间轴功能的最有效方法是什么。我在 Google App Engine 中实现这个,它使用 Big Table 来存储数据。 IIRC,这意味着非常快的读取速度(获取),但页面查询要慢得多,这也意味着写入速度要慢得多。目前在我看来有两种方法,每一种都有它的挫折:
对于每个用户,都有一个列表结构,即他们朋友的时间线。每当有人发布推文时,该结构就会针对其每个关注者进行更新。这种方法使用了大量的写入操作,但是对于每个用户检索列表来说,它看起来会非常快。
或
对于每个用户,通过获取他关注的人的所有推文来动态计算朋友的时间线,并将所有推文合并以获得朋友的时间线(因为对于每个人,推文都是按时间顺序排序的) .如果此人关注很多人,这可能会很慢。
还有其他一些我不知道的方法吗?这两种方法似乎都会随着用户数量的增加而使系统阻塞。
【问题讨论】:
标签: database-design optimization twitter algorithm