Page 264 - Bkhargava_-_Grokaem_algoritmy
P. 264

Фильтры Блума и Hyperloglog   263



                                 \-1\2/l\4\s]

                                     ~\J//

                                          1S



        Пример:

        >>>  arrl  = [1,  2,  3,  4,  5]
        >>>  reduce(lambda  х,у:  х+у,  arrl)
        15

        В данном случае все элементы в массиве просто суммируются: 1 + 2 + 3 +
        4 + 5 =  15!  Я не буду рассматривать свертку более подробно, потому что
        в Интернете хватает руководств по этой теме.
        MapReduce использует эти две простые концепции для выполнения запро­
        сов на нескольких машинах. При использовании большого набора данных
        (миллиарды записей) MapReduce выдаст ответ за минуты, тогда как тра­
        диционной базе данных на это потребуются многие часы.



        Фильтры Блума и Hyperloglog

        Представьте себя на месте сайта Reddit.  Когда пользователь публикует
        ссылку, нужно проверить, публиковалась ли эта ссылка ранее. Истории,
        которые еще не публиковались, считаются более ценными.
        Или представьте себя на месте поискового бота Google. Обрабатывать веб­
        страницу нужно только в том случае, если она еще не обрабатывалась ранее.
        Итак, нужно проверить, обрабатывалась ли страница ранее.
        Или представьте себя на месте bit.ly - сервиса сокращения URL.  Пользо­
        ватели не должны перенаправляться на вредоносные сайты. У вас имеется
        набор URL-aдpecoв, которые считаются вредоносными. Теперь нужно вы­
        яснить, не направляется ли пользователь на URL-aдpec из этого набора.

        Во всех этих примерах возникает одна проблема.  Имеется очень большой
        набор данных.



                                                         www.trk.kg
   259   260   261   262   263   264   265   266   267   268   269