@xiiicool

Какой механизм лучше использовать для хранения и получения hashsum записией?

Мне перед записью в базу нужно проверить уникальность данных, есть мысль хранить hash где то на стороне и проверять перед записью, какой вариант лучше подойдёт для этой задачи, hashей за год будет примерно 4 320 000 000
Если в файловой система в виде файла то такую утилиту лучше использовать в nodejs
Redis врятли подходит
Если базу данных то какой лучше вариант
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Мне перед записью в базу нужно проверить уникальность данных, есть мысль хранить hash где то на стороне и проверять перед записью, какой вариант лучше подойдёт для этой задачи, hashей за год будет примерно 4 320 000 000

K/V хранилище должно подойти, если нужно только проверять уникальность по хэшу. Для хранения хэшей SHA-1 потребуется минимум 86 ГБ места, без учета накладных расходов хранилища.
В зависимости от уровня нагрузки могут понадобиться более серьезные K/V хранилища. Вполне возможно, что облачные сервисы.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Можно использовать фильтр Блума. Тогда для твоего числа ключей (4 320 000 000) надо
будет держать структуру размером 4.8 Гб https://hur.st/bloomfilter/?n=4320000000&p=0.01&m=&k=

Но фильтр отбивает не 100% ответов а просто некую большую часть (99% в данной формуле). И поэтому надо чтобы
в базе всегда стоял unique constraint. Да и вообще констрейнт - это часть культуры проектирования
баз. Поэтому это даже не должно обсуждаться. База без гарантий уникальности - это сильно
подпорченная информация. Информация низкого качества.

Фильтры Блума используются в Cassandra, Hadoop, Databricks, Redis. Обычно не как основные а как
вспомогательные структуры. Поэтому такие решения - вполне себе production-ready.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы