ORDER BY 重新加载,cassandra

2024-01-04

我想对给定的列族进行排序,为此我尝试使用选项 CLUSTERING ORDER BY 创建一个表。我总是遇到以下错误:

1.) 变体 A 导致错误请求:缺少列 userid 的 CLUSTERING ORDER陈述:

CREATE TABLE test.user (
  userID timeuuid,
  firstname varchar,
  lastname varchar,
  PRIMARY KEY (lastname, userID)
)WITH CLUSTERING ORDER BY (lastname desc);

2.) 变体 B 导致错误请求:只能在 CLUSTERING ORDER 指令中定义集群键列陈述:

CREATE TABLE test.user (
  userID timeuuid,
  firstname varchar,
  lastname varchar,
  PRIMARY KEY (lastname, userID)
)WITH CLUSTERING ORDER BY (lastname desc, userID asc);

据我在手册中看到的,这是创建表的正确语法,我想为其运行查询“SELECT .... FROM user WHERE ... ORDER BY lastname”。我怎样才能做到这一点?(我想将“姓氏”列保留为主键的第一部分,以便我可以在带有 WHERE 子句的删除语句中使用它。)

非常感谢,塔马斯


您只能在集群键上指定集群顺序。

PRIMARY KEY (lastname, userID)
)WITH CLUSTERING ORDER BY (lastname desc);

在第一个示例中,唯一的聚类键是userID。因此,它是唯一有效的条目CLUSTERING ORDER BY.

PRIMARY KEY (lastname, userID)
)WITH CLUSTERING ORDER BY (lastname desc, userID asc);

第二个示例失败,因为您在中指定分区键CLUSTERING ORDER BY,这也行不通。

Cassandra 的工作原理是根据集群键对 CQL 行进行排序,但前提是指定了分区键。这是因为 Cassandra 宽行建模的整体思想是通过分区键进行查询,并在一个查询操作中读取一系列有序的行。

我想以“SELECT .... FROM user WHERE ... ORDER BY lastname”的形式运行查询。

鉴于此声明,我建议您在此模型中需要另一列,然后它才能按您想要的方式工作。你需要的是一个合适的分区键 http://www.datastax.com/documentation/cql/3.1/share/glossary/gloss_partition_key.html为您users桌子。说...像group。您的用户按以下划分group,并聚类为lastname,你的定义看起来像这样:

CREATE TABLE test.usersbygroup (
  userID timeuuid,
  firstname varchar,
  lastname varchar,
  group text,
  PRIMARY KEY (group,lastname)
)WITH CLUSTERING ORDER BY (lastname desc);

然后,此查询将起作用,返回作为节目“Firefly”粉丝的用户(在本例中),按顺序排序lastname(降序):

SELECT * FROM usersbygroup WHERE group='Firefly Fans';

通读此 DataStax 文档复合键和聚类 http://www.datastax.com/documentation/cql/3.1/cql/ddl/ddl_compound_keys_c.html以获得更好的理解。

注意:您不需要指定ORDER BY在你的SELECT。这些行将按其集群键排序返回,并且ORDER BY无法改变这一点。全部ORDER BY真正可以做的是改变排序方向(DESCending 与 ASCending)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORDER BY 重新加载,cassandra 的相关文章

  • rows_merged在compactionhistory中意味着什么?

    当我发出 nodetool compactionhistory I get compacted at bytes in bytes out rows merged 1404936947592 8096 7211 1 3 3 1 什么是 1
  • 关于Java Cassandra Client,哪一个更好? CQL 怎么样? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试使用 Hive 作为数据库来开发应用程序 然后我还找到了 noSQL 解决方案作为它的替代方案 现在决定使用 Cassand
  • 在 Cassandra 中选择列为空的行

    我在 Cassandra 中有下表 CQL 规范 3 3 0 Users
  • 如何从任何地方运行 Cassandra (cqlsh)

    在 Cassandra 中官方文档 https wiki apache org cassandra GettingStarted https wiki apache org cassandra GettingStarted 它指出 启动服务
  • Cassandra 备份,包括架构

    我感兴趣的备份技术有两种 a SCHEMA 备份 恢复数据库模式 添加或删除列 更改列类型 添加表等 b 数据备份 恢复数据 更新 从一个表读取到另一个表 让我通过例子来解释一下 首先 我创建实体 客户 Customer 编号 名称 11
  • 如何使用 Spring Boot 和 Cassandra 将枚举持久化为序数?

    我已添加到实体的枚举字段 CassandraType type DataType Name INT 然而 在发送到 Cassandra 的语句中使用的不是枚举的序数 而是字符串表示形式 因此我收到以下错误 org springframewo
  • 如何使用 DevCenter 远程连接到 Cassandra

    我使用他们的镜像在 Azure 上设置了 DataStax Cassandra Sandbox 我能够在服务器上本地运行 OpsCenter 没有任何问题 安装的是Ubuntu 我对它很陌生 根据这篇文章Apache Cassandra 远
  • 设置 cassandra.logdir 的最佳方法是什么

    我已将 cassandra 软件放入 home user所有日志文件应放置在 data log Cassandra 具有文件conf logback xml 其中包含用于确定文件日志路径的参数 例如 cassandra logdir sys
  • 如何读取cassandra数据而不区分大小写

    我需要从 cassandra 获取数据而不区分大小写 请帮我 Cassandra 中没有区分大小写的概念 所有数据都存储为byte 所以它甚至不是一个字符串 您可以制作自定义比较器 参见API http wiki apache org ca
  • 如何在Cassandra中搜索不相等的二级索引?

    我需要能够仅使用 对二级索引执行搜索 据我所知 Cassandra 至少需要一个等式索引子句 因为它会迭代该等式索引的所有结果 是否有任何技巧可以仅使用 执行操作 至少在概念上 这是一个坏主意吗 另外 有人知道 Cassandra 是否有计
  • 从 C* 表中获取不同的分区键

    cqlsh 不允许嵌套查询 因此我无法将所选数据导出到 csv 我正在尝试使用以下命令从 cassandra 导出选定的数据 大约 200 000 行 单列 echo SELECT distinct imei FROM listener s
  • 使用 pycassa 读取 Cassandra 1.2 表

    使用卡桑德拉 1 2 我按以下方式使用 CQL 3 创建了一个表 CREATE TABLE foo user text PRIMARY KEY emails set
  • Cassandra 集群 - 特定节点 - 特定表高丢弃突变

    我在生产中的压缩策略是 LZ4 压缩 但我将其修改为 Deflate 对于压缩更改 我们必须使用 nodetool Upgradesstables 强制升级所有 sstable 上的压缩策略 但是 一旦在集群中的所有 5 个节点上完成了 U
  • 删除键空间挂起

    问题 drop keyspace MyKeyspace hangs 环境 这是 virtualbox 中的 Ubuntu 12 04 64 位 运行单个 Cassandra 实例 在开发计算机上 卡桑德拉是 1 1 6 myuser myh
  • 哪个 CQL 版本对应哪个 Cassandra 版本?

    CQL 文档是根据 CQL 版本而不是 Cassandra 产品版本来组织的 显然 我想阅读与我正在使用的 Cassandra 版本相对应的 CQL 文档 但我找不到有关哪个 CQL 版本对应于哪个 Cassandra 版本的全面信息 CQ
  • Datastax Cassandra OpsCenter 服务未在 Windows 7 上启动

    我是卡桑德拉的新手 我按照中提到的说明在 Windows 7 64 位上安装了 DataStax Cassandra 社区版DataStax 社区版 http www datastax com 2012 01 getting started
  • Cassandra cqlsh 不适用于非分区键的 where 子句

    我的表描述是 CREATE TABLE user id text CustID int static UpdateDate date DateOfBirth date static Gender text static Address te
  • 无法使用 OpsCenter 5.2.1 备份到 S3

    我将 OpsCenter 从 5 1 3 升级到 5 2 0 然后升级到 5 2 1 我在升级之前配置了到本地服务器的计划备份和 S3 位置 这与 OpsCenter 5 1 3 配合良好 在升级期间或升级之后 我没有对计划备份进行任何更改
  • Cassandra CAS INSERT 对于具有毫秒延迟的请求超时

    我们正在对 cassandra 集群 3 个节点 复制因子 3 进行负载测试 并开始偶尔接收到写入超时异常对于一张表上的 CAS 插入操作 CREATE TABLE users by identity account ascii domai
  • cassandra 中的突变是什么?

    cassandra 中的突变是什么 它在做什么 我没有找到任何有关它的完整信息 您可以回答或分享带有手册或说明的链接吗 谢谢 Mutation 是一个由 thrift 生成的类 定义在cassandra thrift文件 您可以在以下位置找

随机推荐