当前位置: 首页 > 知识库问答 >
问题:

Cassandra,筛选仅追加表中的最新行

林曦之
2023-03-14
CREATE TABLE datatable (timestamp bigint, value bigint,  PRIMARY KEY (timestamp))
SELECT * from datatable WHERE timestamp > 123456 ALLOW FILTERING

而且,查询只请求插入的一小部分最新行。我现在遇到的问题是,这些查询的性能与表大小呈负相关。随着表的增长,即使查询只返回几行,获取响应的时间也要长得多。

您能否建议我应该如何修改表模式以避免性能下降(例如,创建索引或设置集群)?谢了!

共有1个答案

容磊
2023-03-14

添加一些时间扣像

CREATE TABLE datatable (
  bucket timestamp,
  time timestamp,
  value bigint,
  PRIMARY KEY ((bucket), time)
) WITH CLUSTERING ORDER BY (time DESC);

其中bucket是截断为日、周或月的日期(可以根据大约的摄取率计算出多少个,一个不错的目标是每个分区大约64MB,但这非常灵活),这样您将非常有效地收集单个分区内一段时间内的所有行。

每个节点拥有数十亿个分区将大大降低修复和压缩速度。另外,分区顺序是随机的(murmur3哈希的分区键顺序),所以您不能按照顺序来处理上面的查询。

 类似资料:
  • 我想根据RDD中的值从Cassandra查询一些数据。我的方法如下: 虽然Cassandra查询在Spark shell中工作,但当我在平面图中使用它时,它会引发异常: 我的理解是,我不能在另一个RDD内部产生一个RDD。 我在网络上找到的示例读取RDD中的整个Cassandra表并连接RDD(如下所示:https://cassandrastuff.wordpress.com/2014/07/07

  • 问题内容: 我有一个3表SQLServer数据库。 将事物归因于项目后,会在ProjectThingLink表中放置一个条目。事情可以在项目之间移动。CreatedDate也用于了解事物上次移动到哪个项目。 我正在尝试创建所有与事物当前已链接到它们的项目的列表,但是我的大脑却失败了。 有一个简单的方法可以做到这一点吗? 问题答案: 注意:评论后已更正

  • 我有一个for循环,它遍历CSV中的每一行,我创建了一个包含列表的字典,但是列表被重写了,因为字典键被重复了几次。我如何总结或追加到列表中的第二(1)位置相同的键的下一个值下一个循环迭代? 因为使用append时,如果再次找到现有键,则会覆盖该值,因此该键的值会被一次又一次地覆盖。 CSV中的字段包括: 输出应该是这样的:

  • 问题内容: 嘿,我在PostgreSql中有2个表: 和一些数据: 文件: 更新: 因此,所有更新都指向同一文档,但是所有更新的日期都不同。 我想做的是从文档表中进行选择,但还要包括基于日期的最新更新。 这样的查询应如何显示?这是我目前拥有的,但我列出的是所有更新,而不是我需要的最新更新: 包括; 我在查询中需要这个的原因是我想按更新模板中的日期排序! 编辑:此脚本已大大简化,因此我应该能够创建一

  • 问题内容: 什么是最好,最简单的方法?我的查询当前是: 但是,这显示前10行,而不显示最后10行。 编辑:我想要最后10行(这是,DESC做到这一点)但是,我希望它们以升序返回。 问题答案: 颠倒顺序(因此获得最后10个而不是前10个),请使用代替 编辑 根据您的评论:

  • 我正在尝试添加选项到一个动态选择输入,依赖于在另一个选择下拉菜单中选择的值。 我已经设法在选择父级中的值时填充数据对象。所有的my触发器也会被执行,子select被禁用,它应该包含数据对象中的所有值,但是它没有填充任何选项。 JS(Coffeescript)代码段: 最后一节特别重要,因为这是JSON数据对象应转换为新选项的地方。下面是在一种情况下响应的对象(根据Firebug): 在本例中,儿童