由于主键限制导致 Cassandra CQL SELECT/DELETE 问题

2024-01-13

我需要在 Cassandra 表中存储需要推送到用户新闻源页面的最新更新以供以后检索,我的表的架构如下:

CREATE TABLE newsfeed (user_name text, 
                       post_id bigint,
                       post_type text, 
                       favorited boolean, 
                       shared boolean, 
                       own boolean, 
                       date timestamp, 
       PRIMARY KEY (user_name,date,post_id,post_type) );

前三列(用户名、postid 和 posttype)组合起来将构建表的实际主键,但是由于我想根据行的“日期”对该表上的 SELECT 查询进行排序,所以我放置了日期 -列作为“第二个”条目插入主键字段(我必须这样做吗?)。

当我想通过仅给出“user_name、post_id 和 post_type”来删除一行时,如下所示:

 DELETE FROM newsfeed WHERE user_name='pooria' and post_id=36 and post_type='p';

我会收到以下错误:

Bad Request: Missing PRIMARY KEY part date since post_id is set

我需要日期列成为主键的一部分,因为我想在 ORDER BY 子句中使用它,另一方面我必须在不知道它们的“日期”值的情况下删除一些行!

那么 Cassandra 是如何解决这些问题的呢?我应该修复我的数据模型并有不同的工作模式吗?


DataStax 的首席传播者 Patrick McFadden 发表了一篇文章,演示了一些时间序列建模模式。绝对值得一读,并且应该对您有所帮助:时间序列数据建模入门 http://planetcassandra.org/getting-started-with-time-series-data-modeling/.

我觉得你的桌子还不错。尽管如此,按照 Cassandra 中复合主键的工作方式,如果您无法跳过查询中的主键组件。因此,如果您最终需要通过以下方式查询数据user_name, post_id,和/或post_type不同的是(没有日期),您应该专门为该查询创建一个表(主键中不包含日期)。

不过,我想说的是,一般来说,创建一个处理常规删除操作的表并不是一个好主意。事实上,我很确定这已被归类为 Cassandra“反模式”。数据实际上并没有从 Cassandra 中删除;而是被删除了。它已被墓碑铭刻。墓碑在压缩时进行协调(假设已满足墓碑阈值时间),并且已知墓碑过多会导致性能问题。

如果您阅读了我上面链接的文章,请转到名为“时间序列模式 3”的部分。您会注意到INSERT语句运行与USING TTL条款。这给了数据以秒为单位的生存时间,之后它将“静静地消失”。例如,如果您想将数据保留 24 小时(86400 秒),您可以执行以下操作:

INSERT INTO newsfeed (...) VALUES (...) USING TTL 86400

使用 TTL 功能是定期清洁的更好替代方案DELETE.

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

由于主键限制导致 Cassandra CQL SELECT/DELETE 问题 的相关文章

  • 将数据作为 RDD 保存回 Cassandra

    我试图从 Kafka 读取消息 处理数据 然后将数据添加到 cassandra 中 就像它是 RDD 一样 我的麻烦是将数据保存回 cassandra 中 from future import print function from pys
  • Cassandra:如何将整个表移动到另一个键空间

    我的 Cassandra 的版本信息 cqlsh 5 0 1 卡桑德拉 2 2 5 CQL 规范 3 3 1 本机协议 v4 我正在尝试将一些巨大的表 几百万行 移动到另一个键空间 除了 COPY to csv and COPY from
  • 将 CassandraUnit 与 Astyanax 结合使用时出现依赖性问题

    我有一个 SessionDaoCassandraImpl 类 它使用 Astyanax 从 Cassandra 读取数据 我想使用嵌入式 Cassandra 服务器进行测试 卡桑德拉单元 https github com jsevellec
  • 从 Datastax 6.0 到 Cassandra 3 的迁移路径

    我正在尝试找到从 Datastax Enterprise DSE 6 0 14 到 Cassandra Community OSS 3 的迁移路径 到目前为止 我无法找到有效的迁移路径 所有键空间复制均已更新为NetworkTopology
  • 如何使用 javascript 从 UUID v1 (TimeUUID) 中提取时间戳?

    我使用 Cassandra DB 和 Nodejs 的 Helenus 模块来操作它 我有一些包含 TimeUUID 列的行 如何在javascript中从TimeUUID获取时间戳 这个库 UUID 至今 https github com
  • 使用 TLS/SSL 保护 Cassandra 通信

    我们希望保护 Cassandra 免受中间人攻击 有没有办法配置 Cassandra 使客户端 服务器和服务器 服务器 复制 通信采用 SSL 加密 谢谢 简短的回答 不 对于客户端 服务器 节俭 151 https issues apac
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • Cassandra data stax 查询生成器更新

    我正在尝试编写一个简单的更新查询 更新表 set col1 val1 col2 val2 where col3 val3 您能否提供一个使用查询生成器 API 在 Cassandra 中编写简单 UPDATE 的示例 试试这个 v1 x Q
  • Hector 在执行incrementCounter 后获取结果计数器值

    我们正在执行以下操作来更新计数器的值 现在我们想知道是否有一种简单的方法可以立即取回更新的计数器值 mutator incrementCounter rowid1 cf1 counter1 value Cassandra thrift AP
  • Cassandra修复导致节点超时

    我们使用具有 5 个节点的 Cassandra 3 10 1 集群 每个节点有 8 个核心和 23Gi 内存 全部位于同一个 DC 中 复制因子 2 一致性级别 2 最近 在大约每周进行一次的计划修复期间 来自一个节点的查询出现多次超时 在
  • Cassandra - 使用 ORDER BY 和 UPDATE 集群键的替代方法

    我的架构是 CREATE TABLE friends userId timeuuid friendId timeuuid status varchar ts timeuuid PRIMARY KEY userId friendId CREA
  • 插入特殊字符

    我试图在我的 Cassandra 表中插入特殊字符 但无法插入 无法在带有变音符号的表中插入数据 https stackoverflow com questions 17425262 inserting data in table with
  • Cassandra 中的数据分布

    我听说过 Cassandra 及其发行版 其实想知道数据在整个集群中是如何分布的现象 我的意思是 Cassandra 如何决定哪些节点拥有哪些数据 如果您了解 HashTable 数据结构以及 Hashtable 中如何进行哈希处理 那么这
  • 我可以在 Cassandra 2.1 中对集合进行多重查询吗?

    在 Cassandra 2 1 中 我们可以通过在列上创建二级索引来查询集合 cqlsh play gt select from songs where tags contains t1 id tags title e99f8f30 d21
  • Hector (Cassandra) 删除异常

    当我尝试删除时使用 hector cassandra 客户端 它会删除列 但将行键留在后面 有谁知道为什么 以及如何删除该行键 使用 Cassandra 时这是预期的 由于它通过写入逻辑删除来删除 因此数据仍然存在 直到下一次压缩 最终它会
  • 了解 nodetool cfstats 中的“键数”

    我是 Cassandra 新手 在本示例中 我使用具有 1 个 DC 和 5 个节点的集群以及复制因子为 3 的 NetworkTopologyStrategy Keyspace activityfeed Read Count 0 Read
  • 根据统计数据获取cassandra中的数据点

    我正在测试 Cassandra 2 0 作为存储时间序列数据的可能替代品 我制作了一个简单的表并将一些数据转储到其中 CREATE TABLE DataRaw channelId int sampleTime timestamp value
  • cassandra-1.1.2 的推荐 cassandra gui 客户端是什么 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一些 cassandra 的 gui 客户端 如 sqlDeveloper 来调用一些基本方法 并运行 cql 查询 Dbeav
  • Cassandra公共IP未连接

    我在 ubuntu 服务器中使用 cassandra 当我尝试使用 CLI 与公共 IP 地址进行连接时 它返回连接被拒绝 而如果我尝试使用 localhost 它工作正常 我在 cassandra yaml 和 storage conf
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整

随机推荐

  • 从字节[]生成X509Certificate?

    是否有可能从 byte 生成 java security cert X509Certificate Sure 证书对象可以通过实例创建证书工厂 http docs oracle com javase 7 docs api java secu
  • Laravel 中删除带有通配符的文件

    有没有一种方法可以让你在 Laravel 5 2 中删除带有通配符的文件 例如 File delete foo bar 我问得太快了 当阅读 PHPDoc 时File delete 我看到你可以给出一个以路径作为参数的数组 所以这对我来说很
  • Chrome 中的实时重新加载 JavaScript

    我知道您可以从 Chrome 开发人员工具的 源 面板中实时编辑 JS 并且我知道有用于实时重新加载 CSS 的系统 但是您可以从源位置 URL 或本地磁盘 或者以某种方式利用工作区 或者甚至可能作为 Chrome 开发者工具插件 特别是这
  • Mercurial 中有没有办法删除本地提交?

    所以我在 Mercurial 中不断犯一个愚蠢的错误 很多时候 我会在不执行 hg pull 和 hg update 的情况下开始工作 当我尝试推送更改时 出现错误 有什么办法可以删除我的本地提交这样我就可以避免创建多个头 分支等 我只想删
  • SQL历史表设计

    我需要设计一个历史表来跟踪编辑时特定记录上更改的多个值 Example 用户将看到一个编辑记录的页面 头衔 先生姓名 乔电话 555 1234出生日期 1900 10 10 如果用户更改任何这些值 我需要跟踪旧值并记录新值 我想到使用这样的
  • 一个控制器中的 AngularJS window.onbeforeunload 正在另一个控制器上触发

    这是我的问题 我有两个视图 View1 和 View2 以及每个视图的控制器 Ctrl1 和 Ctrl2 在 View1 中 我试图在用户意外离开页面而不保存更改之前警告用户 我正在使用 window onbeforeunload 它工作得
  • ThreadAbortException(WebClient 使用 DownloadFile 从服务器获取文件)

    参考我的先前的问题 https stackoverflow com questions 2444888 webclient using download file to grab file from server handling exce
  • 从jsp传递参数到servlet

    如何使用不属于表单任何字段的表单将参数从 jsp 传递到 servlet 而不使用 session 我认为代码可能类似于下面的示例 但对我不起作用 请帮助我 在index jsp中
  • 将玩家分配到桌子上

    考虑N 4k玩家 k桌子和许多氏族 以便每个成员可以属于一个氏族 一个氏族最多可以包含k玩家 我们想要组织 3 轮游戏 这样 对于每张正好容纳 4 名玩家的桌子 坐在那里的 2 名玩家不会属于同一部落 并且在后面的几轮中 坐在那里的 2 名
  • 如何提取当前本地时间偏移值?

    我在尝试格式化和显示一些 IBM 大型机 TOD 时钟数据时遇到了一些困难 我想以 GMT 和本地时间格式化数据 作为默认时间 否则在用户指定的区域中 为此 我需要获取距 GMT 的本地时间偏移值 以有符号整数秒数表示 在zoneinfo
  • 我可以在 Java 中创建自签名证书,该证书将自动受到 Web 浏览器的信任吗?

    我已经使用 keytool 为我的 Java 应用程序生成了自签名证书 但是 当我在浏览器中访问该网站时 它总是会弹出一条警告 说该网站不拥有该证书 有没有办法自签名 修改证书 这样我就不会在浏览器 服务器和浏览器都位于同一主机上 我使用
  • 如何增加pandoc执行时的堆内存?

    我正在努力将 docx 转换为 epub 文档包含大量图像 执行转换时 出现错误 pandoc exe Heap exhausted Current maximum heap size is 1073741824 bytes 1024 MB
  • print(... sep='', '\t' ) 是什么意思?

    我在试图找到这个问题的答案时遇到了一些麻烦 我想知道语法是什么sep and t方法 我找到了一些有关它的信息 但我不太明白使用该语法的目的是什么 我正在寻找它的作用以及何时 为何使用它的解释 一个例子sep 正在使用 print Prop
  • 我想将枚举值打包到 Bundle 中并获取为枚举

    我有这样的枚举 enum Status READY DISCONNECTED RECEIVING more 我想通过 Bundle 将该枚举的值发送到另一个线程 另一个线程想从 Bundle 中提取枚举值 如何巧妙地做到这一点 Bundle
  • GWT Tree 小部件吞下箭头键盘事件,这使得 TreeItems 中包含的文本框不响应箭头键

    在 GWT 1 6 4 中可以轻松重现 Tree tree new Tree tree addItem new TextBox 问题出在 Tree 中的 onBrowserEvent 上 switch eventType case Even
  • 如何在iOS中的静态库中添加xib文件

    我正在尝试在静态库中添加 xib 文件或任何其他视图控制器文件 但我无法这样做 你能帮我么 如果可以的话请添加完整的源代码 第一个视图中的 是 按钮 当单击该按钮时 新的视图控制器会出现一些内容 比如说背景颜色的变化 如何为此创建静态库 这
  • 什么是 Glew、Glut 和 glfw3?哪些在 Opengl 3/4 中已弃用 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在网上阅读有关 OpenGL 3 和 4 与以前版本有何巨大差异的内容 一些教程要求 include
  • 如何将 sbt 与 Google App Engine 结合使用?

    有人尝试过设置 sbt 来与 Google App Engine 一起使用吗 我梦想在源代码更改后使用开发服务器自动重新加载 如需快速演示 您可以克隆或下载我所做的内容here http github com leolannenmaki s
  • javax.validation.UnexpectedTypeException:找不到类型的验证器:

    以下是当我们尝试对整数类型的大小和模式进行验证时出现的错误 你能建议一下 我们需要在 validator bean xml 中设置整数类型的大小和模式验证 05 58 57 342 ERROR ErrorLoggerEJBIntercept
  • 由于主键限制导致 Cassandra CQL SELECT/DELETE 问题

    我需要在 Cassandra 表中存储需要推送到用户新闻源页面的最新更新以供以后检索 我的表的架构如下 CREATE TABLE newsfeed user name text post id bigint post type text f