Ответ таков: написав инструмент, который сначала выполняет select
с использованием allow filtering
для определения первичного ключа, затем выполните удаление с использованием определенного первичного ключа.
фактический ответ таков: вы этого не делаете, потому что то, что я только что предложил, будет ужасно медленным, подвергнет ваш кластер большой нагрузке и, как правило, выявит неправильное представление о том, как работает моделирование данных Cassandra.
Моделирование данных Cassandraпринципиально отличается от моделирования данных SQL.В SQL у вас есть первичные ключи, вы нормализуетесь, и тогда вы совершенно уверены, что сможете выполнять запросы и писать большинство вещей с хорошей производительностью.В Cassandra вы моделируете для своих запросов, и под запросами я имею в виду все, что содержит where
.
Предполагая, что вы разработали свою таблицу таким образом по причине, вы могли бы добавить материализованное представление, котороедобавляет msisdn
к первичному ключу, превращает его в ключ разделения и превращает id
в столбец кластеризации.Таким образом, вы могли бы по крайней мере эффективно выполнять запросы без выполнения allow filtering
.Вам все еще понадобятся две поездки туда и обратно, одна для чтения, другая для удаления, но эта стоимость может быть приемлемой.Если это не так, вам необходимо кардинально изменить дизайн таблицы, помня о том, что вам нужно будет выполнить запрос по msisdn
.