我希望在一段时间内看到每个用户的每个值。
我的主键应该是(user_id, timestamp)
,以便我点击每个节点并让群集密钥窗口关闭。
或者我的主键应该是(day_of_year, timestamp)
,以便我的分区键找到节点的子集,并且我使用时间戳群集键来实现对时间段的更精细控制。
答案 0 :(得分:1)
您需要估算(day_of_year, timestamp)
创建的分区所具有的数据。如果分区大小超过100 MB,那么将来可能会在修复过程中给您带来问题。因此,如果您有超过100 MB的分区风险,那么您应该去(user_id, timestamp)
。它还将在整个节点上分配工作量,而不是只集中在一个节点上。
要了解分区大小,您可以运行nodetool cfstats
。在输出中,检查Compacted partition maximum bytes
的值。它不能保证成为最大的分区,但它会告诉您在运行命令的节点上压缩的最大分区大小。
答案 1 :(得分:-1)
使用timestamp
作为分区键,使用user_id
作为群集键。查询时间戳如下:
SELECT * from table where token(timestamp)>=token('data');
如果要查询时间戳和用户ID,请将user_id
添加为分区键。