2016-03-08 69 views
1

實際上,我正在開發消息應用程序並將cassandra用作數據庫,並將kafka用作消息代理。消息應用程序的商店消息

我的問題是: 我是否需要在cassandra用戶之間存儲消息?如果我這樣做,那麼我的數據庫的大小會變得非常快。

由於我使用的是消息傳遞隊列,只要這些消息未被傳遞,消息就會被存儲。我聽說,消息傳遞應用程序(如Facebook Messanger,WhatsApp)不會將消息內容存儲在數據庫中的用戶之間,而只是使用排隊系統(XMPP,MQTT),一旦它們被釋放,就會刪除消息。所以不需要存儲在外部數據庫中。我對嗎?

什麼是最佳實踐?此外,我需要從法律角度(政府等)存儲消息內容一段時間(例如2年)嗎?

看着http://www.planetcassandra.org/apache-cassandra-use-cases/,有很多使用cassandra作爲消息傳遞應用程序的數據庫後端。但是,將cassandra用作消息隊列是一種反模式(請參閱cassandra文檔)。

回答

1

使用卡桑德拉隊列顯然是一個反面模式

但是Cassandra是一個不錯的選擇來存儲郵件,閱讀KillrChat我的博客文章:http://www.doanduyhai.com/blog/?p=1859爲消息存儲

一個可能的數據模型
+0

我知道在cassandra中存儲消息是很好的。但是,我真的必須存儲消息嗎?爲了什麼?我是否被迫存儲這些消息(對於政府或類似的)。任何人都可以告訴我用什麼來存儲消息?我不想浪費錢,因爲我真的不需要。 – nimo23

+0

如果你需要一個**隊列**,Cassandra並不適合。如果您需要存儲消息並將其保留一段確定的時間(一個月,一年......),Cassandra可以完成這項工作。只需根據您的業務使用情況來決定 – doanduyhai