Reddit目前正在將其數據庫從PosgreSQL遷移到Apache Cassandra。有人知道Reddit在Cassandra中使用的數據庫模式嗎?Reddit中使用的Cassandra數據庫模式是什麼?
回答
我也不知道確切的reddit的模式,但對於要存檔的東西,你是在正確的道路,節能的評論在基於文檔的數據庫,而不是關係數據庫中的層次結構。我建議爲每個根註釋保留一個文檔,然後將所有子項(以及子項的子項)添加到該註釋中。
在CouchDB和MongoDB中,您可以直接存儲JSON文檔。 在Cassandra中,我會將JSON保存爲字符串。因此,數據結構將是唯一
root-comments
{
root-comment-id
root-comment-json-string
}
每根帶註釋的JSON字符串應該是這樣的:
{
comment : "hello world"
answers :
[
{
comment : "reply to hello world"
answers :
[
{
comment : "thanks for the good reply"
answers : []
},
{
comment : "yes that reply was indeed awesome"
answers : []
}
]
}
]
}
另外,你可能想添加一個用戶名,用戶名,時間戳,.. ..等各個評論的結構。
這種「非規範化」的結構將使得查詢非常快相比,規範化的關係stucture如果你有數據的很多。
在你將不得不採取一切例外的照顧任何情況下,當你實現了一個大的用戶規模,例如,這樣的系統可能發生。如果有人回覆評論A和評論B,但同時(或稍後)評論A被刪除,會發生什麼情況。
如果你搜索「卡桑德拉分層數據」互聯網你能找到一些其他的方法,但他們都回到正常化,否則將無法完成一個「無限」的層次結構。
您描述的方法的問題是,每當添加新評論時,您都必須更新JSON,即解析它,合併註釋並將其寫入Cassandra。想象一下有數千條評論的樹。所以這種方法對於檢索來說更便宜,但在更新時很昂貴。關係型方法是相反的,在檢索評論樹時花費很大,而在更新時便宜。我認爲最好的方法是混合方式,存儲您描述的最重要的評論,以關係方式存儲最不重要的評論。 –
@ Calin-AndreiBurloiu是的。我的理解是這樣的評論系統(比如在reddit中)比更新有更多的讀取。所以我的回答完全是正確的解決方案。 –
因爲它是JSON,所以在客戶端的JavaScript中可以輕鬆完成結果的解析。 –
- 1. 什麼是模式和數據庫?
- 2. 數據庫模式究竟是什麼?
- 3. Reddit如何查詢他們的數據庫「什麼是熱點」?
- 4. Django with cassandra - 沒有cassandra數據庫的模式
- 5. 使用Cassandra作爲「無模式NoSQL數據庫」
- 6. 使用什麼數據庫模型?
- 7. 設計Cassandra數據模型的最佳實踐是什麼?
- 8. 數據庫中的元數據和模式有什麼區別?
- 9. log4j中使用的模式是什麼
- 10. Cassandra數據庫表中的數字表示什麼?
- 11. 什麼是考勤數據庫的優秀數據庫設計(模式)?
- 12. 什麼是使用Delphi的Web數據庫的最佳方式?
- 13. 數據庫模式的目的是什麼?
- 14. 使用存儲在Cassandra中的數據來運行Mahout作業的建議集成模式是什麼?
- 15. 什麼使用,而不是數據庫?
- 16. 爲什麼我的數據插入到我的cassandra數據庫中這麼慢?
- 17. 使用C++連接數據庫的標準方式是什麼?
- 18. 什麼是使用鈦創建數據庫的最佳方式
- 19. 查詢數據庫的所有模式是什麼
- 20. 無模式數據庫系統的吸引力是什麼?
- 21. 什麼是一個好的MySQL數據庫模式工具?
- 22. 什麼是Facebook的消息數據庫模式?
- 23. 什麼樣的數據庫模式是systemdbserver.systebdb.dbo?
- 24. 存儲嵌套Json對象的數據庫模式是什麼?
- 25. 爲什麼Wordpress數據庫模式不使用外鍵?
- 26. 我應該使用什麼數據庫模式?
- 27. 什麼是使用tcp socket的數據轉換模式?
- 28. 什麼是「隱式數據庫序列」?
- 29. 這個數據庫是什麼格式?
- 30. 數據庫中的基數是什麼?
我不知道,我不確定Reddit以外的任何人都能做到,但是它真的很重要嗎?我希望這裏有很多人可以幫助確定適用於* your *應用程序的模式。 –
Reddit發佈了GitHub上的網站代碼:https://github.com/reddit/reddit。我可以在代碼中搜索並從那裏確定模式。但我認爲在這裏更容易提問。 –
我瞥了一眼代碼,發現有二十多個不同的列家族以不同的方式創建和使用。有沒有特別想知道的區域,還是你正在尋找更多像cassandra-cli的'show schema'輸出這樣的東西? –