存储消息传递应用程序的消息

时间:2016-03-08 13:13:47

标签: cassandra apache-kafka instant-messaging

实际上,我正在开发一个消息传递应用程序,并使用cassandra作为数据库,使用kafka作为消息代理。

我的问题是: 我是否需要在cassandra中存储用户之间的消息?如果我这样做,那么我的数据库的大小将会非常快。

当我使用消息传递队列时,只要这些消息没有被删除,就会存储这些消息。我听说,消息传递应用程序(例如Facebook Messanger,WhatsApp)不会在数据库中的用户之间存储消息内容,而只使用排队系统(XMPP,MQTT),一旦发送消息就会删除消息。因此无需存储在外部数据库中。我是对的吗?

什么是最佳做法?此外,我是否需要从法律角度(政府等)存储一段时间(例如,2年)的消息内容?

查看http://www.planetcassandra.org/apache-cassandra-use-cases/,有很多使用cassandra作为消息传递应用程序的数据库后端。但是,使用cassandra作为消息队列是一种反模式(参见cassandra docs)。

1 个答案:

答案 0 :(得分:2)

使用 Cassandra 作为队列显然是反模式

然而,Cassandra非常适合存储消息,请阅读我在KillrChat上的博客文章:http://www.doanduyhai.com/blog/?p=1859以获取可能的消息存储数据模型