这是我的table id 作为主键:我想根据删除行 msisdn 列。我该怎么做?请建议
id
msisdn
44u64gxh1#
答案是:通过编写一个工具,首先执行 select 使用 allow filtering 要确定主键,请使用确定的主键执行删除操作。实际的答案是:你不会,因为我刚才提出的方法会非常慢,会让你的集群承受很大的压力,而且通常会暴露出对cassandra数据建模工作原理的误解。cassandra数据建模与sql数据建模有本质的不同。在sql中,您有了主键,进行了规范化,然后非常有信心能够以良好的性能查询和编写大多数内容。在cassandra中,你为你的查询建模,我所说的查询是指任何包含 where .假设这样设计表是有原因的,那么可以添加一个 msisdn 将其转换为分区键,然后 id 进入一个聚类列。这样,您至少可以在不执行 allow filtering . 你仍然需要两个来回,一个用于阅读,一个用于删除,但这一费用可能是可以接受的。如果不是这样,您需要从根本上重新设计表,记住您需要按 msisdn .
select
allow filtering
where
1条答案
按热度按时间44u64gxh1#
答案是:通过编写一个工具,首先执行
select
使用allow filtering
要确定主键,请使用确定的主键执行删除操作。实际的答案是:你不会,因为我刚才提出的方法会非常慢,会让你的集群承受很大的压力,而且通常会暴露出对cassandra数据建模工作原理的误解。
cassandra数据建模与sql数据建模有本质的不同。在sql中,您有了主键,进行了规范化,然后非常有信心能够以良好的性能查询和编写大多数内容。在cassandra中,你为你的查询建模,我所说的查询是指任何包含
where
.假设这样设计表是有原因的,那么可以添加一个
msisdn
将其转换为分区键,然后id
进入一个聚类列。这样,您至少可以在不执行allow filtering
. 你仍然需要两个来回,一个用于阅读,一个用于删除,但这一费用可能是可以接受的。如果不是这样,您需要从根本上重新设计表,记住您需要按msisdn
.