2010-07-12 81 views
9

好像实现web应用程序,如Twitter/Facebook的墙需要1巨大的“饲料”关系表(+用户表) 和真棒缓存机制。(你能推荐一个?)你将如何使用noSQL类型的数据库实现twitter?

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

很明显,我想支持使用twitter的用户数量一般和一般。

感谢

+0

您的问题的答案高度依赖于确切的DB类型 – 2010-07-24 22:22:39

+1

Twitter正在使用MySQL存储推文:http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html – 2010-07-24 22:32:29

+0

我的问题不在于Twitter如何实施他们的解决方案,而是如何实施它? – DuduAlul 2010-07-24 22:52:37

回答

0

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

对不起,但这个要求是远离现实。 Twitter有一个巨大的服务器场来分割数据以支持其庞大的并发性,你是否拥有与twitter一样多的服务器?

没有实现与Redis的一个Twitter克隆的建筑理念: TwitterAlikeExample

+0

这是一个理论问题,所以让我们假设我有对Redis的架构这样一个农场... – DuduAlul 2010-07-31 18:43:31

+0

:加分片和复制像Twitter一样。 – 2010-07-31 19:21:47

2

我的消息队列系统'使用Redis。每个用户的密钥队列+这些密钥检索的blob集。

1

我将把MongoDB放入列表中。

模式将会非常简单。

鸣叫
用户名(或者如果想归位用户ID)
TweetID(一个唯一的号码)
时间戳
分享Tweet(推特文本)

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

+4

好的,你如何有效地查询所有关注的人的tweet – DuduAlul 2010-08-02 18:53:05

2

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

相关问题