Как работают вторичные индексы в Кассандре?

Предположим, у меня есть семейство столбцов:

CREATE TABLE update_audit (
  scopeid bigint,
  formid bigint,
  time timestamp,
  record_link_id bigint,
  ipaddress text,
  user_zuid bigint,
  value text,
  PRIMARY KEY ((scopeid, formid), time)
  ) WITH CLUSTERING ORDER BY (time DESC)

С двумя вторичными индексами, гдеrecord_link_id столбец высокой мощности:

CREATE INDEX update_audit_id_idx ON update_audit (record_link_id);

CREATE INDEX update_audit_user_zuid_idx ON update_audit (user_zuid);

Насколько мне известно, Кассандра создаст два семейства скрытых столбцов примерно так:

CREATE TABLE update_audit_id_idx(
    record_link_id bigint,
    scopeid bigint,
    formid bigint,
    time timestamp
    PRIMARY KEY ((record_link_id), scopeid, formid, time)
);

CREATE TABLE update_audit_user_zuid_idx(
    user_zuid bigint,
    scopeid bigint,
    formid bigint,
    time timestamp
    PRIMARY KEY ((user_zuid), scopeid, formid, time)
);

Вторичные индексы Кассандры реализованы как локальные индексы, а не как обычные таблицы. Каждый узел хранит индекс только для тех данных, которые он хранит.

Рассмотрим следующий запрос:

select * from update_audit where scopeid=35 and formid=78005 and record_link_id=9897;
Как этот запрос будет выполняться «под капотом» в Кассандре?Как будет индекс столбца высокой мощности (record_link_id) влияет на его производительность?Будет ли Кассандра касаться всех узлов для вышеуказанного запроса?Зачем?Какие критерии будут выполнены первыми, базовая таблица partition_key или вторичный индекс partition_key? Как Кассандра будет пересекать эти два результата?

Ответы на вопрос(2)

Ваш ответ на вопрос