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

时间:2018-09-20 07:53:57

标签: cassandra

enter image description here

Id是主键

我要删除基于msisdn列的行

我该怎么做?

请提出建议

1 个答案:

答案 0 :(得分:3)

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

实际答案是:您不会,因为我刚才提出的建议太慢了,使您的集群承受了很大压力,并且通常会误解Cassandra数据建模的工作原理

Cassandra数据建模与SQL数据建模从根本上不同。在SQL中,您拥有主键,进行了规范化,然后非常有信心,您将能够以良好的性能查询和编写大多数内容。在Cassandra中,您可以为查询建模,所谓查询,是指包含where的任何内容。

假设您出于某种原因设计了这样的表,您可以做的是添加一个实例化视图,该视图将msisdn添加到主键,将其变成分区键,然后将id进入聚类列。这样,您至少可以有效地进行查询,而无需执行allow filtering。您仍然需要进行两次往返,一次用于读取,一次用于删除,但是该费用是可以接受的。如果不是这样,则需要从根本上重新设计表,请记住,您将需要按msisdn进行查询。