如何在cassandra中使用非主键删除一行

KIR*_*TTI 5 cassandra

这是我的表id作为主键:

在此处输入图片说明

我想删除基于msisdn列的行。

我怎样才能做到这一点?

请建议

Jan*_*aus 11

答案是:通过编写一个工具,首先select使用allow filtering确定主键,然后使用确定的主键进行删除。

实际的答案是:你不这样做,因为我只是提出这将是非常缓慢的,把你的集群下了很大的压力,一般显示卡珊德拉数据如何建模工作的一种误解。

Cassandra 数据建模与 SQL 数据建模根本不同。在 SQL 中,你有你的主键,你规范化,然后你非常有信心你将能够以良好的性能查询和编写大多数东西。在 Cassandra 中,您可以为查询建模,通过查询,我的意思是任何包含where.

假设您出于某种原因设计了这样的表,您可以做的是添加一个物化视图,msisdn该视图添加到主键,将其转换为分区键,然后id转换为集群列。这样,您至少可以在不执行allow filtering. 您仍然需要两次往返,一次用于阅读,一次用于删除,但该成本可能是可以接受的。如果不是,您需要从根本上重新设计您的表,记住您将需要查询 by msisdn