Проверьте, существует ли ключ, не касаясь дисков - PullRequest
2 голосов
/ 29 мая 2019

Мы достигли предела ввода-вывода с нашей настройкой Cassandra. Интересно, есть ли способ проверить, существует ли определенный ключ, не касаясь дисков? Мне известно о кеше ключей , но использование памяти для нас довольно много. Также я узнал, что Кассандра использует фильтры Блума для сканирования индекса. Есть ли способ проверить наличие ключа с помощью внутренней настройки Cassandra?

1 Ответ

1 голос
/ 29 мая 2019

Я не знаю, о чем вы говорите для сканирования индекса.Если кешированный ключ заполнен, он точно сообщит вам, существует ли ключ на диске.

Каждый sstable имеет фильтр Блума, который находится в памяти и некоторые метаданные, которые могут помочь, но не могут гарантировать это.Фильтр Блума точно скажет вам, если он не существует, но может дать ложное срабатывание.Есть статистика, которую вы можете проверить, и вы можете установить процент ложных срабатываний.Кроме того, у каждого sstable есть токен min / max и ключ кластеризации min / max, который, если ваш ключ не существует в нем, также может исключить его из возможности.

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

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