Cassandra (далее C*) ограничивает WHERE
запросы из-за своей внутренней структуры. Эта статья вам покажется сложной, запутанной, если вы не читали первую статью из цикла, где я рассказывал как устроена С*. Прочтите её, пожалуйста, прежде чем приступать к этой.
Цель этой статьи — выступать справочником для C* новичков.
Некоторые отличия CQL от SQL
В SELECT
запросах Cassandra Query Language (CQL) отсутсвутют привычные нам SQL операции JOIN
, GROUP BY
. А операция WHERE
сильно урезана. В SQL вы можете фильтровать по любой колонке, тогда как в CQL только по распределительным ключам (partition key), кластерным ключам (clustering columns) и вторичным индексам.
Заметка: В С* 2.0 можно создавать вторичные
INDEX
-ы у любой колонки наподобие SQL индексов. Фактически же, вторичные индексы Кассандры — это скрытая от вас дополнительная таблица, поэтому производительностьWHERE
запросов по ним хуже запросов по ключевым колонкам.