Как получить идентификатор потока для определенного ключа раздела в Scylla - PullRequest
4 голосов
/ 16 апреля 2020

У меня есть таблица в Scylla

CREATE TABLE event (
    eventSource TEXT,        
    createdAt TIMEUUID,
    eventData TEXT,
    PRIMARY KEY (eventSource, createdAt)
) WITH cdc = {'enabled':true};

Теперь я wi sh для отслеживания вставок / обновлений, выполненных в этой таблице для конкретного ключа раздела, используя CDC

Я знаю что идентификатор потока в CDC зависит от генерации и ключа раздела базовой таблицы, но как мне получить этот идентификатор потока, не выполняя полное сканирование таблицы CD C таблицы?

Существует ли какая-либо функция, которая преобразует данный ключ раздела в идентификатор потока для текущей активной генерации?

1 Ответ

5 голосов
/ 16 апреля 2020

Все это задокументировано здесь .

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

Вы можете запросить это так:

SELECT streams FROM system_distributed.cdc_description WHERE time = '2020-03-25 16:05:29.484+0000';

Нет простого способа найти stream_id для ключа partition_id. Он может быть изменен на обратный: Первые 8 байтов - это значение токена, назначенного этому потоку.

Все ключи секционирования, которые находятся в том же vnode и сегменте, что и этот токен, принадлежат этому потоку.
...