Кассандра Ключ Кэш - PullRequest
       0

Кассандра Ключ Кэш

0 голосов
/ 29 августа 2018

Кэш Cassandra Key - это структура карты, где ключом является {sstable_file_descriptor + partition_key}, а значением является смещение раздела, поэтому Cassandra во время чтения проверяет все sstables (используя фильтр Блума), если данные могут присутствовать в этом стабильном. Почему кеш ключа не может быть похож на partition_key = sstable_file_descriptor + offset

1 Ответ

0 голосов
/ 29 августа 2018

На самом деле (tableid, indexName, descriptor, partition_key) (KeyCacheKey расширяет CacheKey). Один и тот же ключ раздела может существовать в нескольких таблицах и в нескольких sstables в них. Для того, чтобы набирать только ключом, вам понадобится дополнительная структура, которая будет немного более согласованной и противоречивой.

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

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