是否可以使用行号进行选择查询?
不,但可以根据分区键的哈希标记值执行范围查询。
假设您有一个六节点群集。该Murmur3主令牌范围为6节点群集是这样的:
node start range end range
1) 9223372036854775808 to -9223372036854775808
2) -9223372036854775807 to -5534023222112865485
3) -5534023222112865484 to -1844674407370955162
4) -1844674407370955161 to 1844674407370955161
5) 1844674407370955162 to 5534023222112865484
6) 5534023222112865485 to 9223372036854775807
如果我有一个表叫abc
与pkey
分区键,想查询节点2上该表中的所有行,我的查询应该是这样的:
SELECT * FROM abc
WHERE token(pkey) > 9223372036854775808
AND token(pkey) <= -5534023222112865485;
如果一整行的价值实在是太多了(我猜测,这将是),你可以在你的平分令牌范围,直到行的数量都是可管理的工作。请记住,选择1000万行并不是Cassandra特别擅长的,所以可能需要一些尝试。
至于线程数,也可能需要一些试验和错误。但是每个节点有一个线程听起来像是一个合理的起点。