Забыли пароль?
Запросите новый здесь.

Голосование
Как часто вы посещаете данный сайт?

1 раз в день
1 раз в день
20% [1 Голос]

1 раз в неделю
1 раз в неделю
20% [1 Голос]

1 раз в месяц
1 раз в месяц
20% [1 Голос]

Очень редко
Очень редко
20% [1 Голос]

Первый раз зашёл
Первый раз зашёл
20% [1 Голос]

Голосов: 5
Вы должны авторизироваться, чтобы голосовать.
Начат: 26.07.2022 08:08

Архив опросов
Случайная тема
Друзья проекта
Разработка профессиональных продающих сайтов ARTCELL
Система Smart для PHP-Fusion
Миничат
Только пользователи могут отправлять сообщения.

Oleg
Offline
· 15.03.2023 13:40
а англоязычный сайт с модами на сколько помню закрылся
Перенесли просто, только почему-то с оф.сайта на него ссылок нет. Сейчас зашёл на него.

SchreiBear
Offline
· 30.01.2023 05:23
переводите всю графику сайта на формат .webp и будет вам счастье

SchreiBear
Offline
· 30.01.2023 05:02
Vveb--ws, я того же мнения. в России много полных энтузиазма PHP кодеров, но почему то роются годами в фужике, а могли бы сделать своё

SchreiBear
Offline
· 30.01.2023 04:48
100грамм утром! Как вы тут, живёте, поживаете?

jikaka
OfflineAdmin
· 24.01.2023 07:11
af

Архив миничата
Сейчас на сайте
» Гостей: 4

Гости:
» [Ваш IP] 07:48:57
/Статьи
» Bing [Bot] 07:48:54
/moddb/error.php
» Bing [Bot] 07:48:21
/moddb/error.php
» 69.162.124.230 07:44:39

» Всего пользователей: 1,669
» Новый пользователь: ZionHosting
В базе имеется
аддонов: 951
тем: 137
Иерархия статей
Как устроен поиск по письмам в Яндекс.Почте
Задача Яндекса – найти ответ на вопрос пользователя. Но технологии поиска этого самого ответа бывают разными. Скажем, поиск по интернету и по письмам очень сильно различаются. Поиск по почте – это особенный продукт, уникальный и сложный.

В первую очередь, Яндекс.Почта – это огромный объём данных. У нас хранится около 10 миллиардов писем – это почти столько же, сколько страниц в индексе веб-поиска Яндекса. При этом поисковых запросов примерно в 1000 раз меньше, чем запросов к поиску по интернету.

Зато в поиске по Почте очень важна полнота результатов: если поиск по интернету не найдёт один-единственный сайт из трёх миллионов по запросу «пластиковые стулья», этого никто (кроме, разумеется, вебмастера этого сайта) не заметит. Гораздо критичнее, если потеряется письмо с важным адресом или паролем.

По этим причинам в поиске по Почте существует ряд архитектурных и технологических особенностей.

Архитектурные особенности

Поступающие в почту письма можно индексировать в хронологическом порядке. В этом случае, как только на первом сервере закончится дисковое пространство, мы начнем строить индекс на втором и так далее. Но такой способ не гарантирует полноту результатов поиска: для полного ответа нужно получить результаты с каждого сервера, а, поскольку время ответа от каждого сервера разное, то из-за сетевых задержек мы можем потерять часть данных.

Чтобы обеспечить полноту результатов, весь поисковый индекс для некоторого пользователя хранится на одном сервере и полностью дублируется на другом – если один сервер недоступен, то мы ищем на дублирующем.

Когда система работает в штатном режиме (все серверы функционируют, все дата-центры доступны), половина поисков отправляется на сервер в одном ДЦ, а вторая половина – на сервер в другом ДЦ. Благодаря этому поисковая производительность увеличивается в два раза.

Технологические особенности

На каждом сервере располагается индекс по письмам пяти миллионов пользователей. Можно строить его разными способами: например, по индексу на пользователя, но в таком случае возникает большая нагрузка на файловую систему, а также требуется огромное количество аппаратных ресурсов и ресурсов операционной системы (потоки и файловые дескрипторы) для поиска.

Другой вариант – все пользователи в одном индексе. Однако этот вариант ненадёжен: если произойдёт сбой, то сразу миллионы пользователей останутся без поиска, а восстановление системы займёт значительное время.

1-й вариант решения: Индекс размером до 10 Гб
Мы попробовали промежуточный вариант: выбрали максимальный размер каждого индекса 10 Гб. Следовательно, на каждом сервере получилось по 50-100 индексов, которые создаются в порядке поступления писем, а данные пользователя, таким образом, могут находиться в любом из индексов. Но письма часто содержат большое количество однотипной информации («привет», «пока», «@yandex.ru»), которая подходит под 46% всех запросов к поиску по Почте. Получалось, что ответ на такой запрос требовал поднять около 20% всех писем, хранящихся на сервере — это занимало десятки секунд.

2-й вариант решения: Префиксный индекс
Мы оставили максимальный размер индекса равным 10Гб, но перед каждым словом добавили ID пользователя. В результате каждый поиск сразу ограничивался количеством и размером писем в почтовом ящике текущего пользователя. Это снизило объем находимых данных и на порядок ускорило поиск. Но когда на диске – сотни индексов, то из-за большого числа дисковых операций поиск занимает несколько секунд. Наша же цель – десятые доли секунд.

3-й вариант решения: Шардирование по пользователям
Все индексы на сервере были разделены на 1000 сегментов (шардов). В каждом из них – от пяти до двадцати индексов размером до 1 Гб, и данные конкретного пользователя всегда находятся в определённом сегменте. В результате число дисковых операций было снижено до 20 раз по сравнению со вторым вариантом. Скорость поиска также увеличилась в разы. Так мы получили поиск за доли секунд.

Онлайн-индексация
Для того чтобы все поступающие письма практически сразу появлялись в результатах поиска, мы разработали специальный инкрементальный индекс в памяти. Особенность индекса в том, что в него можно добавлять по одному документу, а после добавления документ сразу появляется в поиске.

Процесс индексации выглядит так:
Поступающие письма попадают в инкрементальный индекс в памяти. Когда в памяти накапливается определенное количество писем или занят определенный объем, запускается процесс переноса данных из индекса в памяти в дисковый индекс. В этот же момент прекращается индексация в памяти №1 и создается индекс в памяти №2.

Конечно, это – лишь часть того, что мы делаем для улучшения качества нашего поиска по Яндекс.Почте.

PS: авторы статьи команда Яндекса

Поделиться этой статьей
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Нет данных для оценки.

Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.