实际上,我正在开发一个消息传递应用程序,并使用cassandra作为数据库,使用kafka作为消息代理。
我的问题是: 我是否需要在cassandra中存储用户之间的消息?如果我这样做,那么我的数据库的大小将会非常快。
当我使用消息传递队列时,只要这些消息没有被删除,就会存储这些消息。我听说,消息传递应用程序(例如Facebook Messanger,WhatsApp)不会在数据库中的用户之间存储消息内容,而只使用排队系统(XMPP,MQTT),一旦发送消息就会删除消息。因此无需存储在外部数据库中。我是对的吗?
什么是最佳做法?此外,我是否需要从法律角度(政府等)存储一段时间(例如,2年)的消息内容?
查看http://www.planetcassandra.org/apache-cassandra-use-cases/,有很多使用cassandra作为消息传递应用程序的数据库后端。但是,使用cassandra作为消息队列是一种反模式(参见cassandra docs)。
答案 0 :(得分:2)
使用 Cassandra 作为队列显然是反模式
然而,Cassandra非常适合存储消息,请阅读我在KillrChat上的博客文章:http://www.doanduyhai.com/blog/?p=1859以获取可能的消息存储数据模型