Значение обновления Cassandra в одном из столбцов кластеризации

На Кассандре желательно выполнять моделирование данных вокруг запросов. Однако, если я смоделирую столбец в качестве столбца кластеризации для целей сортировки по нему и если этот объект является динамическим, поскольку он является столбцом кластеризации, я не смогу обновить его значение, поскольку он принадлежит первичному ключу для этой таблицы. В этом случае два варианта

  1. Сортировка на стороне клиента (что плохо)
  2. Удалить полную строку и вставить новую строку (которая создаст надгробную плиту)

Есть ли другой надежный способ добиться этого в моделировании данных Cassandra?

Например. У меня есть table_A и для запроса получения всех строк с определенным состоянием, table_A_by_state. Однако, так как состояние будет динамическим, вам нужно будет обновить состояние в table_A_by_state, который поставляется с опциями, которые я упоминал выше. Кто-то еще сталкивался с такой же проблемой или есть другой способ моделирования данных для этой проблемы?

table_A: столбцы: id (K), имя, состояние

table_A_by_state: столбцы: id (K), состояние (C), имя

1 ответ

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

К сожалению других вариантов нет. Например, если вы используете Cassandra 3.0+ и хотите использовать материализованные представления для удовлетворения ваших требований к оформлению заказа, вы фактически попадаете в свой вариант 2, поскольку C* скрывает от вас, что он создаст другую таблицу и вставит / обновит / удалить эту таблицу под сценами. Так что, да, это создаст для вас надгробия.

Тем не менее, вариант 1 также не так уж плох (если вы управляете относительно небольшим количеством записей, потому что выборка большого количества строк - это анти-шаблон), предполагая, что вам нужно где-то выполнить порядок. Да, хранение и получение уже заказанных данных - большой плюс, но лучше отсортировать на стороне клиента, чем стать волшебником с надгробиями и тайм-аутами записи / чтения...

Другие вопросы по тегам