似乎实现像twitter / facebook-wall这样的web-app需要1个巨大的“feed”关系表(+用户表) 和一个很棒的缓存机制..(你能推荐一个?)
我的主要问题是,如何使用非关系数据库实现这样的“功能”,例如:一个键/值类型的DB?
显然,我想支持同时使用twitter的用户数量。
由于
答案 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使用的消息队列系统
答案 5 :(得分:-1)
显然,我想支持 使用twitter的用户数量 同时和一般。
抱歉,这个要求远非现实。 Twitter有一个巨大的服务器场来分割数据以支持他们的大规模并发,你有多少服务器作为推特?
有一个架构的想法用redis实现一个twitter克隆: TwitterAlikeExample