Как удалить строку, используя не первичный ключ в Кассандре - PullRequest
0 голосов
/ 20 сентября 2018

введите описание изображения здесь

Идентификатор является первичным ключом

Я хочу удалить строку на основе столбца msisdn

Как мне это сделатьчто?

Пожалуйста, предложите

1 Ответ

0 голосов
/ 20 сентября 2018

Ответ таков: написав инструмент, который сначала выполняет select с использованием allow filtering для определения первичного ключа, затем выполните удаление с использованием определенного первичного ключа.

фактический ответ таков: вы этого не делаете, потому что то, что я только что предложил, будет ужасно медленным, подвергнет ваш кластер большой нагрузке и, как правило, выявит неправильное представление о том, как работает моделирование данных Cassandra.

Моделирование данных Cassandraпринципиально отличается от моделирования данных SQL.В SQL у вас есть первичные ключи, вы нормализуетесь, и тогда вы совершенно уверены, что сможете выполнять запросы и писать большинство вещей с хорошей производительностью.В Cassandra вы моделируете для своих запросов, и под запросами я имею в виду все, что содержит where.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...