• О компании Milvus
  • Начать работу
  • Понятия
  • Руководство пользователя
  • Импорт данных
  • Инструменты искусственного интеллекта
  • Руководство по администрированию
  • Инструменты
  • Интеграции
  • Учебные материалы
  • Часто задаваемые вопросы
  • API Reference

Согласованность

В этой теме представлены четыре уровня согласованности в Milvus и наиболее подходящие для них сценарии. В этой теме также рассматривается механизм обеспечения согласованности в Milvus.

Обзор

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

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

Уровни согласованности

Согласно теореме PACELC, распределенная база данных должна находить компромисс между согласованностью, доступностью и задержкой. Высокая согласованность подразумевает высокую точность, но и высокую задержку поиска, в то время как низкая согласованность приводит к высокой скорости поиска, но к некоторой потере видимости данных. Поэтому разные уровни согласованности подходят для разных сценариев.

Ниже объясняются различия между четырьмя уровнями согласованности, поддерживаемыми Milvus, и сценариями, которым они соответствуют.

Strong

Strong - это самый высокий и самый строгий уровень согласованности. Он гарантирует, что пользователи смогут прочитать самую последнюю версию данных.

Strong consistency Сильная согласованность

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

Ограниченная неизменность

Ограниченная неизменность, как следует из названия, допускает непоследовательность данных в течение определенного периода времени. Однако, как правило, данные всегда глобально согласованы вне этого периода времени.

Bounded staleness consistency Согласованность при ограниченной стерильности

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

Сессия

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

Session consistency Сессионная согласованность

Мы рекомендуем выбирать сессию в качестве уровня согласованности для тех сценариев, в которых высока потребность в согласованности данных в одной и той же сессии. Примером может служить удаление данных о записи в книге из библиотечной системы, причем после подтверждения удаления и обновления страницы (в другой сессии) книга больше не должна отображаться в результатах поиска.

В конечном итоге

Не существует гарантированного порядка чтения и записи, и реплики в конечном итоге приходят к одному и тому же состоянию, если больше не выполнять никаких операций записи. При согласованности "в конечном итоге" реплики начинают работать над запросами на чтение с последними обновленными значениями. Согласованность "в конечном итоге" - самый слабый уровень из четырех.

Eventual consistency Согласованность "в конечном итоге

Однако, согласно теореме PACELC, задержка поиска может быть значительно сокращена, если пожертвовать согласованностью. Поэтому конечная согласованность лучше всего подходит для сценариев, в которых нет высоких требований к согласованности данных, но требуется молниеносная производительность поиска. Примером может служить поиск отзывов и рейтингов товаров Amazon с уровнем eventually consistent.

Гарантированная метка времени

Milvus реализует различные уровни согласованности путем введения гарантийной временной метки (GuaranteeTs).

GuaranteeTs служит для информирования узлов запроса о том, что запрос на поиск или запрос не будет выполнен до тех пор, пока все данные до GuaranteeTs не будут видны узлам запроса. При указании уровня согласованности уровень согласованности сопоставляется с определенным значением GuaranteeTs. Различные значения GuaranteeTs соответствуют различным уровням согласованности:

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

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

  • Сессия: Клиент использует временную метку последней операции записи в качестве GuaranteeTs, так что каждый клиент может, по крайней мере, получить данные, вставленные тем же клиентом.

  • В конечном итоге: GuaranteeTs устанавливается на очень маленькое значение, чтобы пропустить проверку согласованности. Узлы запросов сразу же выполняют поиск по существующему представлению данных.

Дополнительную информацию о механизме обеспечения различных уровней согласованности в Milvus см. в разделе "Как работает GuaranteeTs".

Что дальше

ПереведеноDeepL

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?