На досуге переписал свою же C-реализацию bloom filter с помощью шаблонов C++. Если посмотреть на уже существующие варианты фильтров, например, Bloom_filter_(C) или OpenBloomFilter, то можно заметить, что для использования на больших объёмах данных они непригодны (под большими объёмами я понимаю тысячи хранилищ по несколько миллионов элементов в каждом). Проблема заключается в попытке включить в фильтр и сам функционал добавления элементов, и хранилище данных, и реализации хэш-функций. Получается красиво, изящно, но это хорошо, когда тепло и пахнет померанцем, а у нас такая философия не по климату. :-) Для задач промышленных масштабов необходимо выполнение трёх простых условий: 1. Фильтр предоставляет функционал для расчёта параметров и заполнения битовой последовательности; ничего больше. 2. Битовые последовательности, т.е. хранилища данных, создаются независимо от фильтров. 3. Пользователь может использовать различные хэш-функции по своему усмотрению.
Что касается последнего пункта, то для C сигнатура всех функций должна быть одинакова, для C++, за счёт применения шаблонов, возможны вариации с типами аргументов.
P.S. Подумалось, что наверное, кроме мэйла нигде так bloom filter не пользуют, чтобы сотни гигабайт данных, 24x7x365 и 150К запросов в секунду. Поэтому никому и в голову не приходит, что может не хватить памяти, например. :-)
Спасибо =) я знаю intuit, очень крутой сервис. тока я по ключам его настроила => а задача была по сертификатам =(, у меня как раз не выходит центр сертификации установить на мой сервер.
Кстати, есть такая классная тётка, Лапонина Ольга Германовна, она в МГУ преподаёт. У неё есть учебник по протоколам безопасного сетевого взаимодействия, и там…
Comments
но статья…
Кстати, есть такая классная тётка, Лапонина Ольга Германовна, она в МГУ преподаёт. У неё есть учебник по протоколам безопасного сетевого взаимодействия, и там…
нет, на винде.
Извините за глупые вопросы, если что.