У меня есть таблица, в которой у меня есть идентификатор (скажем, column_a) и отображение (скажем, column_b). Картирование - это упорядоченный список. У меня есть эта таблица в Кассандре.
table_a (
column_a ,
column_b
)
Например:
column_a contains values like '111', '222' etc. and respective column_b
contains mapping 'aaa','bbb','ccc'
which is ordered
Поскольку column_a является ключом раздела, я могу запросить select * из table_a, где column_a = 111 или column_a IN ('111 ',' 222 ') et c.
Однако для значения типа' aaa 'в column_b мне также нужно знать, сколько существует записей, т.е. запрос, подобный select * from table_a где column_b содержит ('aaa') - это постановка проблемы, которую я пытаюсь решить.
Я думал о том, чтобы сохранить обратное отображение также в таблице (то же самое или другой) однако это повлечет за собой множество обращений к БД (выбор, вставка, обновление, удаление на основе различных сценариев ios).
Самый простой из тех, которые я думал, это
, таблица для определяется следующим образом:
table_a (
column_a text,
**column_b list<text>,**
primary key (column_a)
)
, а затем создается вторичный индекс для column_b.
Теперь есть несколько преимуществ
- Я буду быть в состоянии запросить например: * выбрать * из таблицы_a, где column_b содержит ('aaa') *
Недостатки
Ничего нового. Способ, которым Cassandra обрабатывает вторичный индекс, при котором неограниченный запрос приведет к сканированию всех узлов.
Однако в моем случае рекомендации для использования / неиспользования вторичного индекса соответствуют сценарию, который у меня есть. ,
Например: в моем случае данные индекса имеют низкую мощность.
Количество строк исчисляется несколькими тысячами, поэтому даже для достижения 100К это либо никогда не произойдет, либо займет много времени. (Примечание: для этого сценария Cassandra может не подходить, однако я повторно использую Cassandra, потому что у меня уже есть кластер Cassandra, используемый в моих других модулях)
Пожалуйста, поделитесь, если вы считаете, что используете Вторичный индекс для столбца списка в этом сценарии имеет недостатки и, если есть какое-либо лучшее решение.