Как сохранить содержимое миллиардов веб-сайтов, найденных поисковой системой (как это делает Google)

В своем исходном Google Paper Сергей Брин и Лоуренс Пейдж объяснили, что они не сохранили HTML-контент просканированных веб-страниц загружался непосредственно в репозиторий, поскольку они хотели сэкономить место на жестком диске. Вот этот абзац:

4.2.2 Репозиторий

Репозиторий содержит полный HTML-код каждой веб-страницы. Каждая страница сжимается с помощью zlib (см. RFC1950). Выбор метода сжатия — это компромисс между скоростью и степенью сжатия. Мы предпочли скорость zlib значительному улучшению сжатия, предлагаемому bzip. Коэффициент сжатия bzip был примерно 4:1 в репозитории по сравнению со сжатием zlib 3:1. В репозитории документы хранятся один за другим и имеют префиксы с идентификатором документа, длиной и URL-адресом, как показано на рис. 2. Репозиторий не требует использования других структур данных для доступа к нему. Это помогает обеспечить согласованность данных и значительно упрощает разработку; мы можем перестроить все остальные структуры данных только из репозитория и файла, в котором перечислены ошибки сканера.

Очевидно, они использовали алгоритм сжатия (в их случае zlib), чтобы сначала сжать данные, а затем сохранить их в хранилище. Сжатые данные на самом деле представляют собой двоичные данные, которые можно сохранить непосредственно в файловой системе. Метаданные (заголовок страницы, размер страницы, ссылки и т. д.) могут быть сохранены в БД со ссылкой на двоичный файл в файловой системе. Звучит как хорошая идея, но если мы говорим о поисковой системе, которая сканирует миллиарды страниц, то такой способ сохранения данных может иметь некоторые недостатки.

Что было бы лучшим подходом сегодня? Если вы хотите создать крупномасштабную поисковую систему, которая будет обрабатывать контент миллионов веб-сайтов, где и как вы будете сохранять HTML-контент просканированных страниц?


person MrD    schedule 16.08.2019    source источник


Ответы (1)


Если вы хотите создать крупномасштабную поисковую систему, которая будет обрабатывать контент миллионов веб-сайтов, где и как вы будете сохранять HTML-контент просканированных страниц?

Для того типа данных, о котором вы говорите, лучше всего использовать одну из распределенных файловых систем. Сам Google создал файловую систему Google, распределенная отказоустойчивая файловая система для этой цели.

person sruffell    schedule 16.08.2019