На самом деле (tableid, indexName, descriptor, partition_key)
(KeyCacheKey расширяет CacheKey). Один и тот же ключ раздела может существовать в нескольких таблицах и в нескольких sstables в них. Для того, чтобы набирать только ключом, вам понадобится дополнительная структура, которая будет немного более согласованной и противоречивой.
Кэш-память ключа также не хранит все данные, только вещи, которые, как считается, могут получить удар, основанные на алгоритме Window TinyLfu. В одной таблице потенциально находятся миллиарды ключей, поэтому она не может хранить их все. Отсутствие в кэше ключей не гарантирует, что он не существует, поэтому фильтр Блума должен быть проверен в любом случае. Также стоит отметить, что проверка BF находится в памяти и очень быстрая. Если BF проходит, он проверяет кеш дальше. Перед этим он также выполняет фильтрацию на основе диапазона столбцов и токенов внутри sstable и пропускает те, чьи данные будут захвачены метками времени min / max (см. QueryMemtableAndDiskInternal).