2010-07-12 19 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。

相關問題