Индекс поиска был перепроектирован: вместо B-дерева используется детерминированный блочный skip-лист для более эффективного пересечения списков документов.
Для ускорения работы с NVMe SSD применяются прямые чтения (O_DIRECT) и настройка размера блока чтения на 128 КБ.
Из экспериментов выяснено, что NVMe SSD обеспечивают почти одинаковую задержку чтения блоков от 512 Б до нескольких мегабайт, что обосновывает использование больших блоков.
Использование io_uring для параллельных мелких чтений данных о позициях даёт ускорение в 5–20×, но требует контроля глубины очереди запросов.
Кластеризация данных о позициях по документам улучшает локальность доступа и снижает задержки при чтении.
Основным текущим узким местом остаются количество IOPS и логика ранжирования, возможна дополнительная компрессия или приближённый поиск позиций.
Гибкая настройка параметров (размер блока, io_uring, использование кэша) позволяет адаптировать индекс под разное оборудование, включая SATA SSD.
Get notified when new stories are published for "Hacker News 🇷🇺 Русский"