Есть ли способ эффективно получить верхние n наименьших точек данных по ключу кластера в Cassandra?

#cassandra

#cassandra

Вопрос:

Я понимаю, что для Cassandra данные сортируются по ключу кластера только по ключу раздела.

Мне интересно, есть ли у Cassandra оптимизация при глобальных проверках. Допустим, что ключ кластера является целочисленным значением, если я хочу выполнить поиск по всем данным в кластере Cassandra, чтобы найти коллекции со значениями < 3 . Механизму запросов Cassandra не нужно будет продолжать просмотр коллекций в разделе после обнаружения числа >= 3 . Существуют ли API (такие как CDK), предлагаемые Cassandra, которые осуществляют эти оптимизации?

Ответ №1:

Для полного сканирования таблицы не доступна встроенная оптимизация CQL — они всегда будут плохими, поскольку Cassandra оптимизирована для рабочих нагрузок OLTP.

Однако есть оптимизация, выполняемая с помощью spark-cassandra-connector для аналитических нагрузок (OLAP) с помощью Spark.

OLTP и OLAP — разные миры, поэтому вы должны использовать правильный инструмент для работы. Приветствия!

Ответ №2:

Запрос по ключу раздела — лучший способ запроса в Cassandra. Если вы хотите использовать ключ кластеризации для запроса, вы можете использовать опцию «РАЗРЕШИТЬ ФИЛЬТРАЦИЮ». Но рекомендуется не использовать «РАЗРЕШИТЬ ФИЛЬТРАЦИЮ» в рабочей среде.

Для сканирования полной таблицы и фильтрации некоторых данных вы можете использовать spark для выполнения своей работы. Зачем беспокоиться о C *, для которого он не предназначен, лучше воспользоваться помощью своих друзей (в данном случае spark)