Один факт, который я всегда находил забавным, - это то, что Google фактически управляется биоинформатикой (да ладно, мне это смешно, потому что я биоинф… штука). Позволь мне объяснить.
Вначале биоинформатика столкнулась с проблемой быстрого поиска небольших текстов в гигантских строках. Для нас «гигантская струна» - это, конечно, ДНК. Часто не одна ДНК, а база данных из нескольких ДНК разных видов / людей. Маленькие тексты - это белки или их генетический аналог, ген. Большая часть первой работы компьютерных биологов была ограничена поиском гомологий между генами. Это делается для определения функции вновь обнаруженных генов путем выявления сходства с уже известными генами.
Теперь эти цепочки ДНК действительно становятся очень большими, и (с потерями!) Поиск должен выполняться чрезвычайно эффективно. Таким образом, большая часть современной теории поиска струн была разработана в контексте вычислительной биологии.
Однако некоторое время назад обычный текстовый поиск исчерпал себя. Требовался новый подход, который позволял искать большие строки в сублинейное время, то есть без просмотра каждого отдельного символа. Было обнаружено, что эту проблему можно решить, предварительно обработав большую строку и построив над ней специальную структуру данных индекса. Было предложено много различных таких структур данных. У каждого есть свои сильные и слабые стороны, но есть один, который особенно примечателен, потому что он позволяет выполнять поиск в постоянное время. Теперь, если судить по порядку величины, в котором работает Google, это уже не совсем так, потому что необходимо учитывать балансировку нагрузки между серверами, предварительную обработку и некоторые другие сложные вещи.
Но, по сути, так называемый индекс q-граммы позволяет выполнять поиск за постоянное время. Единственный недостаток: структура данных становится невероятно большой. По сути, для поиска строк, содержащих до q символов (отсюда и название), требуется таблица, в которой есть одно поле для каждой возможной комбинации из q букв (то есть q S , где S - размер алфавита , скажем, 36 (= 26 + 10)). Кроме того, должно быть одно поле для каждой позиции буквы в индексированной строке (или, в случае Google, для каждого веб-сайта).
Чтобы уменьшить явный размер, Google, вероятно, будет использовать несколько индексов (на самом деле, они это делают , чтобы предлагать такие услуги, как исправление орфографии). Самые верхние работают не на уровне персонажа, а на уровне слов. Это уменьшает q, но делает S бесконечно больше, поэтому им придется использовать таблицы хеширования и коллизий, чтобы справиться с бесконечным количеством разных слов.
На следующем уровне эти хешированные слова будут указывать на другие структуры данных индекса, которые, в свою очередь, будут содержать хеш-символы, указывающие на веб-сайты.
Короче говоря, эти структуры данных индекса q -gram, возможно, являются самой центральной частью алгоритма поиска Google. К сожалению, нет хороших нетехнических статей, объясняющих, как работают индексы q -граммы. Единственная известная мне публикация, которая содержит описание того, как работает такой указатель, - это… увы, моя бакалаврская диссертация .
Вот несколько замечательных ответов и указателей:
источник
Они реализовали хорошие распределенные алгоритмы, работающие на огромном количестве оборудования.
источник
Одна из самых важных задержек - веб-серверы - это получение вашего запроса на веб-сервер и получение ответа. Эта задержка ограничена скоростью света, которой должен подчиняться даже Google. Однако у них есть центры обработки данных по всему миру. В результате среднее расстояние до любого из них ниже. Это снижает задержку. Конечно, разница измеряется в миллисекундах, но имеет значение, если ответ должен прийти в течение 1000 миллисекунд.
источник
Все знают, что это потому, что они , конечно же, используют голубей !
Ах да, это и Mapreduce.
источник
У них в значительной степени есть локальная копия Интернета, кэшированная на тысячах ПК в пользовательских файловых системах.
источник
Google нанимает лучших из лучших. В Google работают одни из самых умных людей в ИТ. У них практически бесконечные деньги, которые они могут потратить на оборудование и инженеров.
Они используют оптимизированные механизмы хранения для выполняемых задач.
У них есть географически расположенные серверные фермы.
источник
Попытка составить обобщенный список (который не зависит от того, есть ли у вас доступ к внутренним инструментам Google):
источник
Вы можете найти на домашней странице Google Research несколько указателей на исследовательские работы, написанные некоторыми из сотрудников Google. Вы должны начать с объяснения файловой системы Google и алгоритма map / reduce, чтобы попытаться понять, что происходит за страницами Google.
источник
Эта ссылка также очень информативна За кулисами запроса Google
источник
Оборудование.
Много-много оборудования. В качестве своей серверной фермы они используют массивные кластеры обычных ПК.
источник
TraumaPony права. Тонны серверов и интеллектуальная архитектура для балансировки нагрузки / кеширования, и вуаля, вы можете выполнить запрос менее чем за 1 секунду. В сети было много статей, описывающих архитектуру сервисов Google. Я уверен, что их можно найти в Google :)
источник
Генри, вероятно, прав.
Map Reduce не играет роли для самого поиска, а используется только для индексации. Посмотрите это видео-интервью с изобретателями Map Reduce .
источник
Дополнительная причина, по-видимому, заключается в том, что они обманывают алгоритм медленного запуска TCP.
http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html
источник
И алгоритмы, которые могут использовать эту аппаратную мощь. Например, mapreduce .
источник
Если вас интересует более подробная информация о том, как работает кластер Google, я предлагаю эту реализацию их HDFS с открытым исходным кодом .
Он основан на Mapreduce от Google.
источник
Многоступенчатое хранение, обработка и поиск данных
ЭФФЕКТИВНОЕ Распределение (100 из 1000 машин) вышеперечисленных задач
Хорошая структура для хранения необработанных данных и обработанных результатов
Хорошая структура для получения результатов
Как именно все это делается, показано по всем ссылкам, которые у вас есть в резюме вопроса.
источник