Коллекция запросов Cassandra при указании ключа раздела - PullRequest
0 голосов
/ 18 декабря 2018

Я читал об индексах в Cassandra, но я немного запутался, когда дело доходит до создания индекса для коллекции, такой как набор, список или карта.

Допустим, у меня есть следующая таблицаи индексировать пользователей, как показано ниже:

CREATE TABLE chatter.channels (
    id text PRIMARY KEY,
    users set<text>
); 

CREATE INDEX channels_users_idx ON chatter.channels (values(users));

INSERT INTO chatter.channels (id, users) VALUE ('ch1', {'jeff', 'jenny'});

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

SELECT * FROM chatter.channels WHERE users CONTAINS 'jeff';

Насколько я понимаю, это приведет к снижению производительности, поскольку ключ раздела не указан и все узлы должны быть запрошены.Тем не менее, если бы я выполнил запрос, подобный приведенному ниже

SELECT * FROM chatter.channels WHERE id = 'ch1' AND users CONTAINS 'jeff';

(с указанием ключа раздела), тогда у меня все еще был бы скачок производительности?

Как я мог бы проверить это длясебя?В SQL я могу запустить EXPLAIN и получить некоторую полезную информацию.Есть ли что-то похожее в Кассандре?

1 Ответ

0 голосов
/ 18 декабря 2018

Cassandra предоставляет возможность трассировки, это помогает отслеживать ход операций чтения и записи запросов в Cassandra.

Чтобы просмотреть трассировки, откройте -> cqlsh на одном из ваших узлов Cassandra и выполните следующую команду:

cqlsh> tracing on;
Now tracing requests.
cqlsh> use [KEYSPACE];

Надеюсь, это поможет проверить производительность запроса.

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