Как почтовые программы / серверы хранят и получают сообщения? - PullRequest
0 голосов
/ 20 августа 2010

Скорость Eudora и GMail, например, при просмотре тысяч электронных писем и поиске нужного набора сообщений, поражает меня.Я пользуюсь Eudora, и поиск очень быстро проходит через десять лет электронной почты в течение нескольких секунд.

Итак, мой вопрос, как они хранят и получают сообщения?Какие структуры данных для хранения данных, индексы, какие алгоритмы?Как сообщения хранятся на диске / в базе данных?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Я был бы удивлен, если бы этот поиск был медленным.Допустим, у вас n = 10000 электронных писем, m = 1000 символов каждое.Любой приличный алгоритм обнаружения подстрок даст вам скорость O (n * m).При заданных значениях n и m на современных ПК это меньше секунды.

Говоря о хранилище, клиенты, которых я знаю, помещают все электронные письма в один большой файл, каждый клиент использует свой собственный формат.Это позволяет вам читать все сообщения с диска достаточно быстро.

Если вам интересно, это классический алгоритм поиска подстрок (их гораздо больше):
http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm

edit
Я не утверждаю, что какое-либо почтовое приложение использует простой поиск по подстроке, просто его использование будет достаточно быстрым.

0 голосов
/ 20 августа 2010

Оба используют один и тот же секретный соус, хотя и в совершенно другой технологии: индексы.

Eudora использует формат mbox для каждого почтового ящика и папки, который представляет собой большой файл со всеми письмами один за другим. Если вы проверите эти файлы, вы увидите меньший файл с тем же именем и расширением .IDX или что-то в этом роде. Это индекс, который позволяет быстро увидеть, где начинаются отдельные электронные письма. Еще один разумный шаг Eudora - удаление вложений из почтовых ящиков, что на порядок уменьшает объем почтовых ящиков на порядок, ускоряя процесс управления. Это позволяет Eudora иметь возможность управлять почтовыми ящиками на порядок больше, чем большинство других клиентов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...