cassandra - Cassandra 原子性与删除属于不同表的分区键
问题描述
我有一个用例,我需要从 cassandra 的三个表中执行删除。所有表示例的分区键都相同:-
db_name/table1/1111 db_name/table2/1111 db_name/table3/1111
我将使用 Put/batch 哪个操作来保持原子性。我希望一次删除所有键或不删除任何键
我需要删除大量这样的键..我的意思是说我想从所有三个表中删除 10k 个这样的键。会是这样的
循环遍历所有键..然后一次从三个表中删除键
解决方案
您需要使用 CQL 批处理对非规范化表的更新进行分组,以便将它们作为原子操作执行。
在 cqlsh 中,批量删除看起来像:
BEGIN BATCH
DELETE FROM table1 WHERE pk = 1111;
DELETE FROM table2 WHERE pk = 1111;
DELETE FROM table3 WHERE pk = 1111;
APPLY BATCH;
对于要删除的每个分区键,您都需要一个批处理语句。重要的是不要将不相关的分区组合在一个批次中,因为 CQL 批次不是像 RDBMS 中那样的优化。
我已在本文中更详细地解释了这一点 -如何使非规范化表中的数据保持同步。干杯!
推荐阅读
- mysql - 如何使用 mysql 函数从 sting 中获取 id?
- c++ - 在 C++ 中,从大型文本文件集合中读取所有单词的最快方法是什么?
- javascript - react-bootstrap/Image 不加载 imgURL
- botframework - Azure 上 OAuth 连接设置中的 Microsoft 示例 52 和 AAD ConnectionName
- android - 取消配对蓝牙设备无法在 Redmi 手机中使用,使用“removeBond”此方法在所有其他设备中均有效
- python - “execute_script”如何在 Selenium 中工作?是否直接在页面中注入代码?
- ios - 防止在 ios 小部件单击时打开默认应用程序
- elixir - 从列表中删除重复的合作伙伴值
- php - 如何使用数组创建 SQL 查询?
- web-scraping - 如何编辑此代码以便我只能查看文本?