【问题标题】:Sorting in Cassandra with editable fields在 Cassandra 中使用可编辑字段进行排序
【发布时间】:2019-07-12 15:04:26
【问题描述】:

我了解 Cassandra 具有使用聚类键的排序功能。

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

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

1) 请告诉我任何替代方法,以便我可以在 Cassandra 中对用户名进行排序。

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

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

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

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

    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
    

    【讨论】:

    • 您能否解释一下这一点:您可以在一个批处理中执行这两个操作以使其具有原子性。
    • BATCH operations 组合多个 DML 语句以确保原子性 - 如果批处理中的任何操作失败,那么其他操作也会回滚。我在上面的答案中添加了一个代码示例。
    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2016-01-29
    • 2011-04-21
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多