Я читал в нескольких местах, что некоторые базы данных используют фильтры Блума для поиска соответствия при запросах к базе данных. В моем примере я использую Postgresql, который является одной из этих баз данных.
Мой вопрос возникает, когда я говорю о реализации фильтра Блума с Redis, который имеет модуль, который позволяет использовать фильтр Блума при вводе член в наборе. (Имейте в виду сложность процесса поиска, не извлекая это значение с диска)
Теперь преимущество использования Redis заключается в хранении значений в памяти, которые при попытке получить это значение более производительны по сравнению с поиск его в rdbms, потому что это значение хранится на диске.
В моем примере, скажем, я проверяю, существует ли уже имя пользователя, стоит ли по-прежнему использовать Redis в решении памяти с фильтром Блума против просто проверка с помощью Postgresql запроса?
Мой поток выглядит примерно так:
CheckIfUserExsits() // using Redis bloom filter
If TRUE then confirm with rdbms // do to x% probability of false positive nature of bloom filter
If rdbms == MATCH then reply with "User does exist"
Else don't check rdbms at all // do to 0% probability of false negative nature of bloom filter
Предполагается, что этот поток будет более предварительным, потому что вы не запрашиваете rdbms и делаете это быстро с помощью поиска в памяти, возвращая false
более эффективно.
Однако, поскольку все, что меня волнует, это то, существует ли член или нет , чтобы повысить производительность при ответе false
, шаг Redis действительно помогает? Потому что, если Postgresql уже запрашивает таблицу с использованием фильтра Блума, производительность должна быть относительно высокой.