带可编辑字段的Cassandra排序

带可编辑字段的Cassandra排序,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我知道Cassandra具有使用集群键的排序功能 我有一个“用户名”字段,我将其配置为“集群密钥”,并根据需要按升序排序 但是我需要编辑用户名,这是不可能的 1) 您能告诉我其他的方法吗?这样我就可以在Cassandra中对用户名进行排序了 2) 另外,二级索引有助于排序吗?事实上,您不能更改群集键(或事实上的任何键)的值。此外,服务器端排序只能通过集群键进行。二级索引无助于排序 我看到的唯一解决方法是删除旧记录并创建新记录: DELETE FROM users WHERE key = 'key

我知道Cassandra具有使用集群键的排序功能

我有一个“用户名”字段,我将其配置为“集群密钥”,并根据需要按升序排序

但是我需要编辑用户名,这是不可能的

1) 您能告诉我其他的方法吗?这样我就可以在Cassandra中对用户名进行排序了


2) 另外,二级索引有助于排序吗?

事实上,您不能更改群集键(或事实上的任何键)的值。此外,服务器端排序只能通过集群键进行。二级索引无助于排序

我看到的唯一解决方法是删除旧记录并创建新记录:

DELETE FROM users WHERE key = 'key' AND username = 'oldusername';
INSERT INTO users (key, username, ...) VALUES ('key', 'newusername', ...);
您可以在批处理中执行这两个操作,使其成为原子操作:

BEGIN BATCH
  DELETE FROM users WHERE key = 'key' AND username = 'oldusername';
  INSERT INTO users (key, username, ...) VALUES ('key', 'newusername', ...);
APPLY BATCH

你能解释一下这一点吗:你可以批量执行这两个操作,使它们成为原子的。组合多个DML语句以确保原子性-如果批处理中的任何操作失败,那么其他操作也将回滚。我在上面的答案中添加了一个代码示例。