Cassandra 有多少 columns/row 以获得最佳性能?

Cassandra how many columns/row for optimal performance?

我正在编写一个聊天服务器,并且想将我的消息存储在 cassandra 中。因为我需要范围查询,而且我知道我会期望 100 messages/day 并保留 6 个月的历史记录,所以我会在某一点为用户提供 18000 条消息。

现在,因为我要进行范围查询,所以我需要将我的数据放在同一台机器上。要么我必须使用我不完全理解的 ByteOrderPartitioner,要么我可以将用户的所有消息存储在同一行上。

create table users_conversations(jid1 bigint, jid2 bigint, archiveid timeuuid, stanza text, primary key((jid1, jid2), archiveid)) with CLUSTERING ORDER BY (archiveid DESC );

所以我将有 18000 列。你认为我使用这种集群键方法会有性能问题吗?

如果是,我有什么选择?

谢谢

。我怎么强调这一点的重要性都不为过。

since I'll do range queries I need my data to be on the same machine.

你的 PRIMARY KEY 定义如下:

primary key((jid1, jid2), archiveid)

您当前的分区键(jid1jid2)将被组合和散列,以便 jid1jid2 的特定值的所有消息一起存储在同一个分区。缺点是每个查询都需要 jid1jid2。但是它们将在 archiveid 上排序,您将能够在 archiveid 上按范围查询,只要您不达到每个分区 20 亿列的限制,它应该表现良好。