milvus-logo
LFAI
Home
  • Conceitos

Carimbo de tempo

Este tópico explica o conceito de carimbo de data/hora e apresenta os quatro principais parâmetros relacionados com o carimbo de data/hora na base de dados vetorial Milvus.

Visão geral

Milvus é uma base de dados vetorial que pode pesquisar e consultar vectores convertidos a partir de dados não estruturados. Quando se efectua uma operação em linguagem de manipulação de dados (DML), incluindo a inserção e eliminação de dados, o Milvus atribui carimbos de data/hora às entidades envolvidas na operação. Por conseguinte, todas as entidades no Milvus têm um atributo de carimbo de data/hora. E os lotes de entidades na mesma operação DML partilham o mesmo valor de timestamp.

Parâmetros de carimbo de data/hora

Vários parâmetros relacionados com o timestamp estão envolvidos quando se efectua uma pesquisa ou consulta de similaridade vetorial em Milvus.

  • Guarantee_timestamp

  • Service_timestamp

  • Graceful_time

  • Travel_timestamp

Guarantee_timestamp

Guarantee_timestamp é um tipo de carimbo de data/hora utilizado para garantir que todas as actualizações de dados efectuadas por operações DML antes de Guarantee_timestamp são visíveis quando se efectua uma pesquisa ou consulta por semelhança de vectores. Por exemplo, se tiver inserido um lote de dados às 15h00 e outro lote às 17h00 e o valor de Guarantee_timestamp estiver definido como 18h00 durante uma pesquisa de semelhança de vectores. Isso significa que os dois lotes de dados inseridos às 15h e às 17h, respetivamente, devem ser envolvidos na pesquisa.

Se o endereço Guarantee_timestamp não estiver configurado, o Milvus considera automaticamente o momento em que o pedido de pesquisa é efectuado. Por conseguinte, a pesquisa é efectuada numa vista de dados com todas as actualizações de dados por operações DML antes da pesquisa.

Para evitar o trabalho de compreender o TSO dentro do Milvus, o utilizador não tem de configurar diretamente o parâmetro Guarantee_timestamp. Basta selecionar o nível de consistência e o Milvus trata automaticamente o parâmetro Guarantee_timestamp por si. Cada nível de consistência corresponde a um determinado valor Guarantee_timestamp.

Guarantee_Timestamp Guarantee_Timestamp.

Exemplo

Como mostra a ilustração acima, o valor de Guarantee_timestamp é definido como 2021-08-26T18:15:00 (para simplificar, o carimbo de data/hora neste exemplo é representado pela hora física). Quando efectua uma pesquisa ou consulta, todos os dados anteriores a 2021-08-26T18:15:00 são pesquisados ou consultados.

Service_timestamp

Service_timestamp é um tipo de carimbo de data/hora gerado e gerido automaticamente pelos nós de consulta em Milvus. É utilizado para indicar que operações DML são executadas pelos nós de consulta.

Os dados geridos pelos nós de consulta podem ser classificados em dois tipos:

  • Dados históricos (ou também chamados de dados em lote)

  • Dados incrementais (ou também designados por dados em fluxo contínuo).

No Milvus, é necessário carregar os dados antes de efetuar uma pesquisa ou consulta. Por isso, os dados em lote numa coleção são carregados pelo nó de consulta antes de ser feito um pedido de pesquisa ou consulta. No entanto, os dados em fluxo contínuo são inseridos ou eliminados do Milvus em tempo real, o que exige que o nó de consulta mantenha uma linha de tempo das operações DML e dos pedidos de pesquisa ou consulta. Por conseguinte, os nós de consulta utilizam Service_timestamp para manter essa cronologia. Service_timestamp pode ser visto como o momento em que determinados dados estão visíveis, uma vez que os nós de consulta podem garantir que todas as operações DML antes de Service_timestamp estão concluídas.

Quando há um pedido de pesquisa ou consulta de entrada, um nó de consulta compara os valores de Service_timestamp e Guarantee_timestamp. Existem principalmente dois cenários.

Service_Timestamp Service_Timestamp.

Cenário 1: Service_timestamp >= Guarantee_timestamp

Como se mostra na figura 1, o valor de Guarantee_timestamp é definido como 2021-08-26T18:15:00. Quando o valor de Service_timestamp é aumentado para 2021-08-26T18:15:01, isso significa que todas as operações DML anteriores a este momento são executadas e concluídas pelo nó de consulta, incluindo as operações DML anteriores à hora indicada por Guarantee_timestamp. Como resultado, o pedido de pesquisa ou consulta pode ser executado imediatamente.

Cenário 2: Service_timestamp < Guarantee_timestamp

Como mostra a figura 2, o valor de Guarantee_timestamp é definido como 2021-08-26T18:15:00, e o valor atual de Service_timestamp é apenas 2021-08-26T18:14:55. Isto significa que apenas as operações DML anteriores a 2021-08-26T18:14:55 são executadas e concluídas, deixando inacabadas parte das operações DML posteriores a este ponto temporal mas anteriores a Guarantee_timestamp. Se a pesquisa ou consulta for executada neste ponto, alguns dos dados necessários são invisíveis e ainda não estão disponíveis, afectando seriamente a precisão dos resultados da pesquisa ou consulta. Por conseguinte, o nó de consulta precisa de adiar o pedido de pesquisa ou consulta até que as operações DML antes de guarantee_timestamp estejam concluídas (ou seja, quando Service_timestamp >= Guarantee_timestamp).

Graceful_time

Tecnicamente falando, Graceful_time não é um carimbo de data/hora, mas sim um período de tempo (por exemplo, 100ms). No entanto, vale a pena mencionar Graceful_time porque está fortemente relacionado com Guarantee_timestamp e Service_timestamp. Graceful_time é um parâmetro configurável no ficheiro de configuração do Milvus. É utilizado para indicar o período de tempo que pode ser tolerado antes de determinados dados se tornarem visíveis. Em suma, as operações DML não concluídas durante Graceful_time podem ser toleradas.

Quando há um pedido de pesquisa ou de consulta a chegar, pode haver dois cenários.

Graceful_Time Graceful_Time.

Cenário 1: Service_timestamp + Graceful_time >= Guarantee_timestamp

Como mostra a figura 1, o valor de Guarantee_timestamp é definido como 2021-08-26T18:15:01, e Graceful_time como 2s. O valor de Service_timestamp é aumentado para 2021-08-26T18:15:00. Embora o valor de Service_timestamp seja ainda inferior ao de Guarantee_timestamp e nem todas as operações DML antes de 2021-08-26T18:15:01 estejam concluídas, é tolerado um período de 2 segundos de invisibilidade dos dados, como indicado pelo valor de Graceful_time. Por conseguinte, o pedido de pesquisa ou consulta recebido pode ser executado imediatamente.

Cenário 2: Service_timestamp + Graceful_time < Guarantee_timestamp

Como mostra a figura 2, o valor de Guarantee_timestamp é definido como 2021-08-26T18:15:01 e o de Graceful_time como 2s. O valor atual de Service_timestamp é apenas 2021-08-26T18:14:54. Isto significa que as operações DML esperadas ainda não estão concluídas e, mesmo tendo em conta os 2 segundos de tempo de tolerância, a invisibilidade dos dados continua a ser intolerável. Por conseguinte, o nó de consulta precisa de adiar o pedido de pesquisa ou de consulta até que determinados pedidos DML estejam concluídos (ou seja, quando Service_timestamp + Graceful_time >= Guarantee_timestamp).

O que vem a seguir

Traduzido porDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?