Нефункциональные особенности#

Конфигурация для достижения описанных нефункциональных характеристик должна соответствовать описанной в разделе Аппаратное обеспечение

Доступность#

  • Поддержка кластерного режима с репликацией данных.

  • Автоматическое восстановление после сбоев узлов.

  • Работа даже при частичном разделении сети

  • Health-check API для мониторинга статуса кластера.

  • Обеспечение одинакового доступа к API в кластерной среде независимо от конкретного экземпляра (инстанса), к которому обращается клиент.

Устанавливаемость#

  • Минимальные зависимости:

    • Самодостаточный бинарный файл (не требует внешних СУБД).

    • Минимальные системные требования (Linux, x86_64/aarch64).

    • Эффективное использование дискового пространства при хранении данных.

Целостность#

  • WAL (Write-Ahead Log) — гарантия сохранности данных даже при аварийном отключении.

  • Поддержка ACID-свойств для операций с коллекциями.

  • Проверка целостности индексов и метаданных.

  • Надежное длительное хранение и согласованность ротации API-ключа как в среде одиночной установки (с одним экземпляром), так и в кластерном окружении.

  • Защита от неконсистентности данных при split brain в распределенном кластере за счет блокировки операций записи и модификации на узлах, потерявших связь с кворумом, предотвращая тем самым расхождение реплик в условиях сетевого разделения.

  • Надежное длительное хранение и согласованность ролей и назначений ролей на пользователей как в среде одиночной установки (с одним экземпляром), так и в кластерном окружении.

Производительность#

  • Оптимизация алгоритмов HNSW и IVF-PQ для быстрого поиск в больших коллекциях.

  • Кеширование часто запрашиваемых данных.

  • Параллелизм обработки запросов на уровне CPU.

  • Динамические параметры: настройка параметров коллекций (размер векторов, количество реплик, тип метрики) через API.

  • Режимы хранения: выбор между in-memory и disk-based хранением.

Надежность#

  • Отказоустойчивое хранение: данные реплицируются между узлами.

  • Снепшоты (snapshots) для резервного копирования.

  • Предсказуемое поведение при высокой нагрузке (нет «проседаний» производительности).

  • Режим восстановления (Recovery Mode) для восстановления после сбоев диска/памяти.

  • Строгий режим (Strict Mode) для предотвращения ошибок.

  • Информирование о текущем режиме функционирования узла. Автоматическое применение режима обслуживания ко всем новым узлам, добавляемым в кластер, и сохраняется до явного отмены.

  • Автоматическое переключение в режим read-only при потере кворума, сохраняя при этом способность выдавать JWT-токены, что обеспечивает непрерывность аутентификации пользователей даже в условиях сетевых сбоев.

Устойчивость#

  • Автоматическое восстановление после сбоев (реплики берут на себя нагрузку).

  • Балансировка нагрузки и автоматическое перераспределение шардов.

  • Обработка временных сетевых проблем без потери данных.

Безопасность#

  • TLS 1.2/TLS 1.3 для шифрования трафика (REST/gRPC).

  • API-ключ и JWT для аутентификации.

  • RBAC (в Enterprise-версии) для контроля доступа.

  • Аудит операций (логирование изменений).

  • Изоляция контейнеров (Docker) для предотвращения утечек.

Масштабируемость#

  • Горизонтальное масштабирование: добавление узлов для увеличения емкости и пропускной способности.

  • Динамическое шардирование: перераспределение данных при росте кластера.

  • Поддержка больших коллекций: миллиарды векторов в кластере.