Перейти к содержанию

Автодополнение 240 млн доменов: p99 0 мс и ограничения

6.0/10

В технической статье описывается реализация автодополнения для 240 миллионов доменных имён с заявленным p99 0 мс. Подход опирается на предварительно подготовленные данные, но комментарии сообщества указывают на практические ограничения: система может предлагать несуществующие домены, а фактическая задержка сильно зависит от сети. Критикуется также использование события keyup вместо keydown, которое не соответствует ожиданиям пользователей. В итоге материал полезен как исследование производительности, но не является готовым решением для всех сценариев.

Контекст

Статья Рууртьяна Пулa описывает, как добиться автодополнения с задержкой p99 0 мс для 240 миллионов доменных имён, занимающих около 2,5 ГБ на диске. Основная идея — хранить данные в памяти в виде префиксного дерева (trie), полагаться на кэширование горячих страниц операционной системой и начинать запрос подсказок на событии keydown, ещё до того как пользователь закончит нажатие клавиши. Такой подход позволяет уложиться в бюджет задержки, включающий время нажатия клавиши и время до получения ответа, хотя худший случай оценивается как O(длина введённого текста × log(число доменов)).

Влияние

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

Обсуждение

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

Источники