🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Концепции
  • Home
  • Docs
  • Концепции

  • Временная метка

Временная метка

В этой теме объясняется понятие временной метки и представлены четыре основных параметра, связанных с временной меткой, в векторной базе данных Milvus.

Обзор

Milvus - это векторная база данных, которая может искать и запрашивать векторы, преобразованные из неструктурированных данных. При выполнении операций на языке манипулирования данными (DML), включая вставку и удаление данных, Milvus присваивает метки времени сущностям, участвующим в операции. Поэтому все сущности в Milvus имеют атрибут timestamp. И партии сущностей в одной операции DML имеют одно и то же значение временной метки.

Параметры временной метки

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

  • Guarantee_timestamp

  • Service_timestamp

  • Graceful_time

  • Travel_timestamp

Guarantee_timestamp

Guarantee_timestamp это тип временной метки, используемый для обеспечения того, чтобы все данные, обновленные операциями DML до Guarantee_timestamp, были видны при выполнении поиска или запроса по векторному подобию. Например, если вы вставили партию данных в 15:00, другую партию в 17:00, а значение Guarantee_timestamp установлено как 18:00 во время поиска векторного подобия. Это означает, что две партии данных, вставленные в 15:00 и 17:00 соответственно, должны быть задействованы в поиске.

Если значение Guarantee_timestamp не настроено, Milvus автоматически берет момент времени, когда был сделан запрос на поиск. Поэтому поиск ведется на представлении данных, в котором все данные были обновлены операциями DML до начала поиска.

Чтобы избавить вас от необходимости разбираться в TSO внутри Milvus, вам, как пользователю, не нужно напрямую настраивать параметр Guarantee_timestamp. Вам нужно только выбрать уровень согласованности, а Milvus автоматически обработает параметр Guarantee_timestamp для вас. Каждому уровню согласованности соответствует определенное значение Guarantee_timestamp.

Guarantee_Timestamp Гарантированный_временной метки.

Пример

Как показано на рисунке выше, значение Guarantee_timestamp установлено как 2021-08-26T18:15:00 (для простоты временная метка в этом примере представлена физическим временем). При выполнении поиска или запроса будут искаться или запрашиваться все данные до 2021-08-26T18:15:00.

Service_timestamp

Service_timestamp это тип временной метки, автоматически генерируемой и управляемой узлами запросов в Milvus. Он используется для указания того, какие операции DML выполняются узлами запросов.

Данные, управляемые узлами запросов, можно разделить на два типа:

  • Исторические данные (или также называемые пакетными данными)

  • Инкрементные данные (или также называемые потоковыми данными).

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

Когда поступает запрос на поиск или запрос, узел запроса сравнивает значения Service_timestamp и Guarantee_timestamp. В основном существует два сценария.

Service_Timestamp Service_Timestamp.

Сценарий 1: Service_timestamp >= Guarantee_timestamp

Как показано на рисунке 1, значение Guarantee_timestamp устанавливается как 2021-08-26T18:15:00. Когда значение Service_timestamp увеличивается до 2021-08-26T18:15:01, это означает, что все операции DML до этого момента времени выполняются и завершаются узлом запроса, включая те операции DML до времени, указанного на Guarantee_timestamp. В результате запрос на поиск или запрос может быть выполнен немедленно.

Сценарий 2: Service_timestamp < Guarantee_timestamp

Как показано на рисунке 2, значение Guarantee_timestamp установлено как 2021-08-26T18:15:00, а текущим значением Service_timestamp является только 2021-08-26T18:14:55. Это означает, что выполняются и завершаются только операции DML до 2021-08-26T18:14:55, оставляя часть операций DML после этой временной точки, но до Guarantee_timestamp незавершенными. Если поиск или запрос выполняется в этот момент, некоторые из требуемых данных еще не видны и недоступны, что серьезно повлияет на точность результатов поиска или запроса. Поэтому узел запроса должен отложить запрос на поиск или запрос до завершения операций DML перед guarantee_timestamp (т. е. когда Service_timestamp >= Guarantee_timestamp).

Graceful_time

Технически говоря, Graceful_time - это не временная метка, а скорее период времени (например, 100 мс). Тем не менее, Graceful_time стоит упомянуть, поскольку он тесно связан с Guarantee_timestamp и Service_timestamp. Graceful_time - настраиваемый параметр в конфигурационном файле Milvus. Он используется для указания периода времени, который можно выдержать, прежде чем определенные данные станут видимыми. Короче говоря, незавершенные операции DML во время Graceful_time могут быть терпимы.

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

Graceful_Time Graceful_Time.

Сценарий 1: Service_timestamp + Graceful_time >= Guarantee_timestamp

Как показано на рисунке 1, значение Guarantee_timestamp устанавливается как 2021-08-26T18:15:01, а Graceful_time - как 2s. Значение Service_timestamp увеличивается до 2021-08-26T18:15:00. Хотя значение Service_timestamp все еще меньше, чем Guarantee_timestamp, и не все операции DML до 2021-08-26T18:15:01 завершены, период невидимости данных в 2 секунды допускается, о чем свидетельствует значение Graceful_time. Поэтому входящий запрос на поиск или запрос может быть выполнен немедленно.

Сценарий 2: Service_timestamp + Graceful_time < Guarantee_timestamp

Как показано на рисунке 2, значение Guarantee_timestamp устанавливается как 2021-08-26T18:15:01, а Graceful_time - как 2s. Текущее значение Service_timestamp равно только 2021-08-26T18:14:54. Это означает, что ожидаемые операции DML еще не завершены, и даже с учетом 2 секунд льготного времени невидимость данных все еще невыносима. Поэтому узел запроса должен отложить поиск или запрос до завершения определенных DML-запросов (т. е. когда Service_timestamp + Graceful_time >= Guarantee_timestamp).

Что дальше

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

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

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

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