【发布时间】:2019-07-12 15:04:26
【问题描述】:
我了解 Cassandra 具有使用聚类键的排序功能。
我有一个“用户名”字段,我将其配置为“集群键”,并根据需要按升序排序。
但我需要编辑用户名,这是不可能的。
1) 请告诉我任何替代方法,以便我可以在 Cassandra 中对用户名进行排序。
2) 另外,二级索引是否有助于排序?
【问题讨论】:
我了解 Cassandra 具有使用聚类键的排序功能。
我有一个“用户名”字段,我将其配置为“集群键”,并根据需要按升序排序。
但我需要编辑用户名,这是不可能的。
1) 请告诉我任何替代方法,以便我可以在 Cassandra 中对用户名进行排序。
2) 另外,二级索引是否有助于排序?
【问题讨论】:
确实,您无法更改集群键(或事实上的任何键)的值。此外,服务器端排序只能通过集群键进行。二级索引无助于排序。
我看到的唯一解决方法是删除旧记录并创建一个新记录:
DELETE FROM users WHERE key = 'key' AND username = 'oldusername';
INSERT INTO users (key, username, ...) VALUES ('key', 'newusername', ...);
您可以在一个 BATCH 中执行这两个操作以使它们成为原子:
BEGIN BATCH
DELETE FROM users WHERE key = 'key' AND username = 'oldusername';
INSERT INTO users (key, username, ...) VALUES ('key', 'newusername', ...);
APPLY BATCH
【讨论】: