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

Cassandra 存储消息传递应用程序的消息,cassandra,apache-kafka,instant-messaging,Cassandra,Apache Kafka,Instant Messaging,实际上,我正在开发一个消息传递应用程序,使用cassandra作为数据库,kafka作为消息代理 我的问题是: 我需要在cassandra中存储用户之间的消息吗?若我这样做,那个么我的数据库的大小将增长得非常快 由于我使用的是消息队列,只要消息没有被释放,消息就会被存储。我听说,消息传递应用程序(如Facebook Messanger、WhatsApp)不会将用户之间的消息内容存储在数据库中,而只使用一个队列系统(XMPP、MQTT),该系统会在消息传递后立即删除消息。所以不需要存储在外部数据库

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

我的问题是: 我需要在cassandra中存储用户之间的消息吗?若我这样做,那个么我的数据库的大小将增长得非常快

由于我使用的是消息队列,只要消息没有被释放,消息就会被存储。我听说,消息传递应用程序(如Facebook Messanger、WhatsApp)不会将用户之间的消息内容存储在数据库中,而只使用一个队列系统(XMPP、MQTT),该系统会在消息传递后立即删除消息。所以不需要存储在外部数据库中。我说得对吗

什么是最佳实践?此外,我是否需要从法律角度(政府或类似机构)将消息内容存储一段时间(例如,2年)


综上所述,有很多人使用cassandra作为消息传递应用程序的数据库后端。但是,将cassandra用作消息队列是一种反模式(请参阅cassandra文档)

使用卡桑德拉作为队列显然是一种反模式


但是Cassandra非常适合存储消息,请阅读我在KillrChat上的博文:对于消息存储的可能数据模型

我知道在Cassandra中存储消息很好。但是,我真的必须存储消息吗?为了什么?我是否被迫存储信息(用于政府或类似机构)。有人能告诉我我需要什么样的用例来存储消息吗?我不想把钱浪费在我真正不需要的东西上。如果你需要排队,卡桑德拉不适合。如果您需要存储消息并将其保留一段确定的时间(一个月、一年等),Cassandra可以完成这项工作。根据您的业务使用情况来决定