Запрос Cassandra, где предложение с использованием CONTAINS для столбца вторичного индекса без ограничения первичного ключа - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть таблица, в которой у меня есть идентификатор (скажем, 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, используемый в моих других модулях)

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

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