Запасной ИЛИ запрос для Кассандры - PullRequest
0 голосов
/ 27 мая 2019

В моей базе данных Cassandra есть таблица с колонками userid, city1, city2 и city3.Каков был бы мой запрос, если бы я хотел получить всех пользователей, у которых в качестве города указан Париж?Я понимаю, что у Кассандры нет ИЛИ, поэтому я не уверен, как структурировать запрос.

1 Ответ

1 голос
/ 27 мая 2019

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

В общем, если вам нужно выбрать несколько значений в одном и том жеcolumn - вы можете использовать оператор IN, но лучше не использовать его для ключей секционирования (лучше параллельные запросы).Если вам нужно OR для разных столбцов - вам нужно выполнять параллельные запросы и собирать результаты на стороне приложения.

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