2010-02-22 51 views
8

如果您要创建一个像twitter这样的应用程序,您将如何设计消息传递系统?你会如何设计一个像消息系统一样的twitter,如何设计消息系统?

在基本数据模型中特别寻找想法,以及如何编写采用用户推文的方法,然后将其发送给所有追随者?

例如:

Tweets (tweetID, userID, message, datesend) 
User (userID, ...) 
Followers(userID, followerUserID) 

Inbox(userID, tweetID) 

在上述模型的良好起点?

您是否首先插入推文,然后将消息推送到队列中。然后一个接一个地从队列中取消消息并将消息推送给订阅者?

(我忽略的Twitter的移动功能,只是集中于基于Web的功能,但我想用一个队列从一开始就这么一个可以添加后其他功能)

回答

0

我不认为叽叽喳喳使用消息队列(数据模型中的收件箱)。我认为在twitter中,所有事情都是通过日期完成的。因此,每个用户都有一个“上次查看日期”,并通过在上次查看日期之后查找所有订阅的推文来创建收件箱/消息队列。

因此,要修改您的数据模型,请移除收件箱并将最后一个查看日期列添加到用户。

此外,我希望追随者的信息不会存储为谁跟随一个用户,而是作为一个给予用户遵循哪些用户。当然,它可以存储两种方式,但这似乎对我更有意义。

+0

消息队列和收件箱是2个独立的东西。 – user275475 2010-02-22 15:25:35

+1

@mrbux:你在开玩笑吧?你给我一个-1是因为你对问题的说明暗示你在想这个问题是错的?哇,这似乎并不符合SO的精神。你的数据库设计到底是什么?收件箱的功能是什么?你为什么在你的问题中列出它? – Hogan 2010-02-22 19:21:35