2009年開始掀起的“NoSQL革命”在Web領域造成了極大的反響,Twitter也在2010年對其Tweets數據類型引進新生的NoSQL數據庫。近日,國外知名網站readwriteweb.com企業頻道作者Klint Finley撰寫了一篇有關“Twitter放棄MySQL轉而使用NoSQL緣由”的文章。
infoQ在今年早些時候發布了一個演講視頻,在該視頻中,Kevin Weil談到了公司應如何使用NoSQL。Weil指出Twitter嚴重依賴于MySQL。然而,當MYSQL在許多用途上表現的并不理想的時候 Twitter使用了NoSQL解決方案。據威爾介紹,在2009年里,Twitter用戶數從1月份的每天約 200萬人,激增至12月份的每天近5000萬人。每天登陸Twitter的用戶數量增長已經超過了20倍。目前Twitter每天產生的用戶數據在 12TB左右,而每年約產生4PB的數據。
Scribe
Twitter的系統日志在一段時間后停止進行壓縮,所以Facebook使用Scribe來替代它。日志的收集創建在Facebook開源框架上,Twitter已經發布了一些Scribe的補丁。Twitter使用Scribe來記錄Hadoop的日志。Scribe使Twitter記錄日志數據變得簡單。Scribe還可以比以前記錄更多的數據,現在數據日志已經分成了80個不同的類別。
Hadoop
Twitter每天都需要將更多的數據可靠的寫入到一個硬盤驅動器上,然后這是不現實的,所以像Twitter這樣每天都產生大量數據的機構需要把數據存儲在集群之中才能滿足其業務需求。Twitter使用了Cloudera的Hadoop為其分配集群。Weil指出能夠,MySQL不能滿足 Twitter在大規模做需求分析時所要求的效率,為了滿足需求,Twitter使用了Hadoop及自己擁有的開源項目,他們稱之為FlockDB。 Hadoop可以運行分析并找到在FlockBD中相似的社交圖數據集合。
Pig
這種Pig腳本可以幫您找到其網站年齡在18至25歲訪問者中訪問量排名前五位的網頁
Weil說Hadoop是通過Java語言實現的,但是Java是復雜的,這使得它很難快速的重復執行。相反,Twitter使用Pig腳本的語言,這個高級語言運行在Hadoop之上。
Yahoo創造了Pig腳本語言并使其快速發展,Weil表示,Pig非常易學并且容易理解。他說,你將受益于Pig的方便,并且它縮短了執行時間,但這是值得的。
HBase
HBase是建立在Hadoop的之上的,并且具有低延時和數據可變性的設計。 Twitter的使用它來增強人們的搜索。
FlockDB
FlockDB是一個實時的、分布式的數據庫。如上所述,它的建立和開源由來自Twitter。該公司使用它的社交圖分析。它仍然在MySQL的下面,但是它的速度非常快。
Weil用一個在FlockDB的應用程序舉例,顯示哪些用戶顯示@表示回復。舉個例子。如果Ashton Kutcher發送tweet到@foursquare。它不應該顯示在Kutcher的6156915粉絲之中,他應該僅在關注Kutcher的用戶和 Foursquare中顯示。
Cassandra
Twitter至今仍然在嘗試并使用Casandra,這個開源的數據庫由Facebook創建。Weil說,Twitter當前的原子計算實驗使用的就是Cassandra。但對Twitter而言,Cassandra也非萬能,首先在于Cassandra代碼或許還存在不少問題,Twitter如果投入大量的精力來改進Cassandra和比較優化MySQL 的投入來看有點得不償失。在QCon Beijing上@nk也提到Cassandra在Twitter的內部測試中曾經暴露出不少嚴重的問題。
Twitter拿所有的這些數據都用來做什么?
Twitter的使用它收集的所有數據有各種用途。有些只是簡單的計數問題,如計算出有多少請求它的服務,每天有多少搜索服務,每天來處理這些交易的平均時間,等等。
其他用途更為復雜。例如,不同類型用戶的運行比較。Twitter的分析數據,以確定是否移動用戶,用戶誰使用了第三方客戶短或“超級用戶”與普通用戶使用Twitter的不同。
韋伊最后指出,Twitter的其他問題包括:確定轉推的話題中哪些類型是人們最感興趣,最成功的網絡需要什么樣的社會效果圖結構,以及如何區分不同類型的人或機器人。