在 cassandra 中创建表时出错 - 错误请求:只能在 CLUSTERING ORDER 指令中定义集群键列

2024-02-12

当我尝试使用以下 cql 语句时出现上述错误,不确定它出了什么问题。

CREATE TABLE Stocks(
  id uuid,
  market text,
  symbol text,
  value text,
  time timestamp,
  PRIMARY KEY(id)
) WITH CLUSTERING ORDER BY (time DESC);
Bad Request: Only clustering key columns can be defined in CLUSTERING ORDER directive

但这工作正常,我不能使用一些不属于主键的列来排列我的行吗?

CREATE TABLE timeseries (
         ...   event_type text,
         ...   insertion_time timestamp,
         ...   event blob,
         ...   PRIMARY KEY (event_type, insertion_time)
         ... )
         ... WITH CLUSTERING ORDER BY (insertion_time DESC);

“我不能使用一些不属于主键的列来排列我的行吗?”

你不能。来自关于 SELECT 命令的 DataStax 文档:

ORDER BY 子句只能选择单个列。该列必须是复合主键中的第二列。这也适用于主键中具有两个以上列组件的表。

因此,对于您的第一CREATE要工作,您需要将主键调整为:

PRIMARY KEY(id,time)

复合主键中的第二列称为“聚集列”。该列决定数据在磁盘上的排序顺序在分区键内。请注意最后一部分是斜体的,因为它很重要。当您通过以下方式查询 Stocks 列族(表)时id,该列值的所有“行”id将返回,排序依据time。在 Cassandra 中,您只能指定分区键内的顺序(而不是整个表),并且您的分区键是复合主键中列出的第一个键。

当然,这样做的问题是你可能想要id是唯一的(这意味着 CQL 只会为每个分区键返回一“行”列值)。要求time成为主键的一部分就否定了这一点,并且可以为同一个 id 存储多个值。这是通过唯一 id 分区数据的问题。在 RDBMS 领域这可能是一个好主意,但它可能会使 Cassandra 中的查询变得更加困难。

本质上,您需要在这里重新审视您的数据模型。例如,如果您想查询一段时间内的价格,您可以将该表命名为“StockPriceEvents”,主键为(id,time) or (symbol,time)。查询该表将为您提供每个 ID 或符号记录的价格,并按时间排序。现在这对您的用例可能有也可能没有任何价值。只是试图解释主键和排序顺序在 Cassandra 中如何工作。

注意:您确实应该使用具有更多含义的列名称。像“id”、“time”和“timeseries”这样的东西非常模糊,并没有真正描述它们使用的上下文。

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

在 cassandra 中创建表时出错 - 错误请求:只能在 CLUSTERING ORDER 指令中定义集群键列 的相关文章

随机推荐

  • 带有 RuntimeWarning 的 numpy 除法:double_scalars 中遇到无效值

    我写了以下脚本 import numpy d numpy array 1089 1093 e numpy array 1000 4443 answer numpy exp 3 d answer1 numpy exp 3 e res answ
  • Python从大型文本文件中读取完整行的块(列值拆分为多行)

    我想分块读取一个大的 txt 文件 c 2 5GB 然后在加载到数据库之前执行一些操作 该文件只有 2 列 列分隔符为 并且有资格double quotes 第二列中的值可以跨越多行 下面的示例 我想用这个answer https stac
  • 如何减少大量包装类的实现代码?

    我正在开发一个包含一些类的库 我们称它们为C1 C2 and Cn 这些类中的每一个都实现一些接口 即I1 I2 Im n gt m 库中对象之间的关系很复杂 我必须 为我的库用户提供一些 API 以使用智能指针访问这些对象 经过一番讨论
  • 由于 org.eclipse.core.runtime 无法启动 eclipse

    我将一些插件复制到我的 eclipse 安装中 特别是 Green 和 ObjectAid answer https stackoverflow com questions 14772602 create class diagram aut
  • iOS 中 UITouch 时间戳的精度是多少?

    iOS 中 UITouch 类的时间戳属性有多精确 毫秒 几十毫秒 我正在将 iPad 的内部测量值与贴在屏幕上的自定义触摸检测电路进行比较 发现两者之间存在相当大的差异 标准偏差约 15 毫秒 我已经看到它建议时间戳根据帧刷新间隔进行离散
  • 将电子表格的一半格式化为红色,然后向下填充直到最后一行

    我有一个宏 它成功地获取了一个有 44 列的表格 并将其减少到 12 列 它分割了顶部部分 我们的供应商没有发送任何库存 总列中的单元格将显示 0 并将其粘贴在工作表的顶部 并插入复选框 在一定程度上 我非常努力地制作一个降价表 但它无法正
  • 没有 if 的语言?

    一位同事说他听说过一种没有 如果 概念的语言 那可能吗 如果是的话 它是什么语言 也许除了 Prolog 之外 我不知道任何特定的语言 但我可以想到一种没有语言的语言的几种方法if 语句可能有效 事实上 您也不需要循环构造 显然 您需要某种
  • 如何从linux中完全删除jenkins

    我已经删除了不同文件夹中的詹金斯所有目录 但当我访问 URL 时 它仍然显示 jenkins 登录 我想完全卸载詹金斯 已经尝试了来自互联网的许多命令 但服务器上仍然有詹金斯 我只能通过 putty 进行命令行访问 所以我尝试通过命令尽可能
  • 为什么我的 iPhone 应用程序的图标在构建后被划掉?

    我刚刚构建了我的第一个 iPhone 应用程序 但它的图标似乎被划掉了 当我构建代码时确实有一些警告 但为什么它们会导致应用程序图标交叉 我的应用程序没有错误 图标如下所示 这完全没问题 这只是意味着您的应用程序无法在您的 Mac 上执行
  • 在gvim中,是否可以有多行文件选项卡?

    在gvim中 是否可以有多行文件选项卡 也就是说 它不应该显示左 右箭头来围绕选项卡行导航 对于不适合选项卡行的选项卡 而是应该 开始 新的一行选项卡 AFAIK 不 除非你打算改变 vim 的源代码 但是 如果您需要那么多选项卡 请不要误
  • JavaScript:具有 SRC 属性的内联脚本?

    我习惯于像这样包含和使用 JS 出于好奇 有谁知道带有 src 属性的内联脚本的规则 例如
  • Scala 中的 forSome 关键字有什么用?

    我找到了以下代码片段 List T forSome type T The forSome看起来像一个方法 但我的朋友告诉我这是一个关键字 我用谷歌搜索了一下 但发现很少有关于forSome 它是什么意思 我在哪里可以获得相关文档 The f
  • 为什么这两种情况下putty中tmux的分割线显示不同(xxxxx,qqqqqq)?

    Why the split line of tmux within PuTTY shows different xxxxx qqqqqq in these tow cases If I do not set PuTTY any thing
  • 如何在 xsl if 中使用 xsl 变量

    我正在尝试将 xsl 变量中的值分配给 xml 文件中的新节点 此代码有效 但当 lbi GetCooperatives PVAL 的值为空时添加一个空的 PROP PVAL 节点
  • 如何根据依赖解析器的输出创建一棵树?

    我试图从依赖解析器的输出中创建一棵树 嵌套字典 这句话是 我在睡梦中射杀了一头大象 我能够获得链接中所述的输出 如何在 NLTK 中进行依存解析 https stackoverflow com questions 7443330 how d
  • 尝试 doSMP 示例时出错

    我尝试运行 doSMP 小插图中的简单示例 但出现以下错误 首先 我不确定如何存在现有的 doSMP 会话 因为我在重新启动计算机后立即执行了下面的代码 此外 关于包 doSMP 不存在的重复错误 但库 doSMP 调用工作正常 帮助 gt
  • 如何在 Android 模拟器中缩小 Google 地图?

    我正在模拟器上测试基于地图的应用程序 我通过在屏幕上双击鼠标来放大地图 但无法缩小 请告诉我如何缩小 双击然后按住第二次单击并向上 缩小 或向下 放大 移动鼠标
  • KineticJS 撤消图层:撤消时图层不会消失?

    我在 Canvas HTML5 中的设计器绘图工具上遇到了一个特定问题 我正在开发一个动作历史系统 撤消和重做 我正在构建我的系统projeqht的回答这个问题 https stackoverflow com questions 16096
  • React Hooks 上的 useState 不更新数组

    我已经尝试了很多方法 但似乎无法理解为什么 setTypes 不会更新 类型 数组 import useState useEffect from react import PostList from post list import as
  • 在 cassandra 中创建表时出错 - 错误请求:只能在 CLUSTERING ORDER 指令中定义集群键列

    当我尝试使用以下 cql 语句时出现上述错误 不确定它出了什么问题 CREATE TABLE Stocks id uuid market text symbol text value text time timestamp PRIMARY