我開始一個項目,我認爲它將特別適合MongoDB,因爲它提供的速度和可擴展性。MongoDB架構設計 - 實時聊天
我目前感興趣的模塊是實時聊天。如果我是做到這一點在傳統的RDBMS我拆分它伸到:
- 信道(信道擁有衆多用戶)
- 用戶(A用戶具有一個信道,但許多消息)
- 消息(一條消息有一個用戶)
這個用例的目的,我想假設通常會有5個通道一次處於活動狀態,每個通道每秒處理最多5條消息。
需要快速具體查詢:
- 獲取新郵件
- 發佈消息通道
- 驗證(基於書籤,時間戳也許,或者遞增計數器?)用戶可以在頻道中發帖
請記住,MongoDB的文檔限制是4MB,您將如何設計架構?你的樣子是什麼?有什麼值得我留意的嗎?
我不會建議那裏的MQ解決方案真的比那些NoSQL解決方案好得多。許多MQ技術看起來很複雜和過度設計,再加上性能並不總是那麼好,穩定性和可移植性也可能被犧牲掉。請參閱:http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/ – Klinky 2010-05-30 00:08:06
那裏有不錯的MQ解決方案,我只是發現它們沒有太多功能,ZeroMQ和Kestrel都適合他們的目的。另一方面,ActiveMQ是可怕的。 – Michael 2010-05-30 03:48:21
@Klinky我敢打賭,幾乎任何特定的MQ解決方案(尤其是ActiveMQ)都會比消息傳遞(EDA)問題更好地處理,而不是基於非特定類型的NoSQL的定製解決方案(您是指面向文檔的數據庫或密鑰因爲MQ解決方案是針對這個問題而設計的,FTN ActiveMQ使用它自己優化的高性能數據存儲來實現隊列持久性。 – 2010-06-03 07:09:22