cassandra - 相当于 cassandra 中 SELECT 的批处理语句
问题描述
我正在处理一个奇怪的问题,我不确定我的设计是否正确。我有一张看起来像这样的桌子
CREATE TABLE Content (
group_id bigint,
content_id bigint,
metadata blob,
group_payload blob static,
PRIMARY KEY (group_id, content_id)
如您所见,它group_payload
是静态的。如果我需要获取给定的所有数据,group_id
我曾经这样做过
SELECT * FROM Content WHERE group_id = X;
但是,这group_payload
会多次获取,并且会导致性能和内存问题,因为它是一个相当大的 blob。
结果,我将查询拆分为 2,如下所示
SELECT group_payload WHERE group_id = X limit 1;
SELECT metadata WHERE group_id = X;
这作为性能改进产生了奇迹,但它偶尔会受到竞争条件的影响,即我得到了group_payload
,但是当我得到metadata
时group_payload
已经过时了。
有没有办法“批处理” 2个选择查询。我应该捕获不一致并重试(数据允许检测到这一点),还是有更好的方法来完全做到这一点?
谢谢
解决方案
简短的回答 - 不 - 在 Cassandra 中没有批处理这样的东西,select
在 Cassandra 中没有用于数据读取的快照隔离。
在您的情况下,我可能会考虑数据处理的逻辑-也许可以先获取所有元数据,然后再获取组有效负载?
推荐阅读
- linux - 如何安排一个作业在 unix 中只运行一次
- excel - VLOOKUP 复制并粘贴现有值而不是查找表
- django - 使用 EmbeddedModelField 创建 ModelForm 并在 EmbeddedModelField 中自定义字段
- windows - 如何使用 Powershell 变量打开 Edge?
- swift - 按下按钮时如何使标签更改颜色?
- hibernate - javax.servlet.ServletException:无法在名称为“NA-dispatcher”的 servlet 中解析名称为“login”的视图
- perl - 通过逐行读取该文件来计算文件中字符串出现的次数并打印行数
- xcode - 上传了我的应用,但它在构建选项卡或活动选项卡中不可见
- javascript - 内容和条件的 Screen.width 问题
- python - 按对象类型拆分包含对象的python列表