使用可编辑字段在 Cassandra 中排序
Sorting in Cassandra with editable fields
我了解到 Cassandra 具有使用聚类键的排序功能。
我有一个 'username' 字段,我将其配置为 'Clustering key' 并根据需要按升序排序。
但是我需要编辑用户名,这是不可能的。
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
我了解到 Cassandra 具有使用聚类键的排序功能。
我有一个 'username' 字段,我将其配置为 'Clustering key' 并根据需要按升序排序。
但是我需要编辑用户名,这是不可能的。
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