SeaSearch: поисковый движок на Go с поддержкой S3 для мультиарендных сервисов¶
7.0/10
Разработчики Seafile опубликовали в открытом доступе SeaSearch — поисковый движок на языке Go, созданный на основе ZincSearch и используемый в их продакшене более двух лет. Проект решает проблему разрастания индексов в мультиарендных SaaS-приложениях за счет хранения данных индексов напрямую в S3-совместимом хранилище с использованием общей модели вычислений. Для компенсации задержек обращения к S3 система использует локальный дисковый кэш неизменяемых сегментов. SeaSearch поддерживает совместимость с большинством эндпоинтов API Elasticsearch, работает без издержек JVM и содержит встроенную поддержку векторного поиска на базе алгоритмов HNSW и IVFPQ.
Контекст¶
Традиционные поисковые системы, такие как Elasticsearch, работают на базе JVM и сталкиваются с перерасходом ресурсов при создании изолированных индексов для каждого клиента в многопользовательских приложениях. Для решения этой проблемы был создан ZincSearch — компактный поисковый движок на языке Go, не требующий тяжеловесной Java-инфраструктуры. SeaSearch развивался как форк ZincSearch в рамках экосистемы файлового хранилища Seafile для поддержки индивидуальной индексации пользовательских библиотек.
Влияние¶
Создатели мультиарендных сервисов получают экономичную альтернативу Elasticsearch, позволяющую масштабировать и изолировать тысячи пользовательских индексов без высоких затрат на оперативную память и репликацию данных.