你会如何使用noSQL类型的DB实现twitter?

时间:2010-07-12 12:00:41

标签: database-design caching twitter nosql

似乎实现像twitter / facebook-wall这样的web-app需要1个巨大的“feed”关系表(+用户表) 和一个很棒的缓存机制..(你能推荐一个?)

我的主要问题是,如何使用非关系数据库实现这样的“功能”,例如:一个键/值类型的DB?

显然,我想支持同时使用twitter的用户数量。

由于

6 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

我会使用Redis。每个用户的密钥队列+由这些密钥检索的一组blob。

答案 2 :(得分:2)

我最近使用HBase编写了一个twitter数据层的最小实现。如果您有兴趣,可以查看要点:https://gist.github.com/1101316。第一个文件CreateTwitterTable.java具有用于创建hbase表及其相关列族的代码。第二个文件TwitterClient.java具有基本功能的代码,例如getTimeline,addTweet,deleteTweet,followUser,unfollowUser和addUser。

答案 3 :(得分:1)

我会将MongoDB放入列表中。

架构将非常简单。

鸣叫
UserName(或者如果想要标准化一点,则为UserID)
TweetID(唯一编号)
时间戳
推文(推文)

USER
UserID(可选) 用户名
姓名,电子邮件,个人信息(网址等) 密码(哈希)
追随者(重复用户参考)
关注(重复用户参考)

答案 4 :(得分:0)

查看Kestrel,Twitter使用的消息队列系统

http://github.com/robey/kestrel

http://www.google.com/search?q=kestrel+twitter

答案 5 :(得分:-1)

  

显然,我想支持   使用twitter的用户数量   同时和一般。

抱歉,这个要求远非现实。 Twitter有一个巨大的服务器场来分割数据以支持他们的大规模并发,你有多少服务器作为推特?

有一个架构的想法用redis实现一个twitter克隆: TwitterAlikeExample