milvus-logo
LFAI
Home
  • Konzepte

Zeitstempel

Dieses Thema erklärt das Konzept des Zeitstempels und stellt die vier wichtigsten zeitstempelbezogenen Parameter in der Milvus-Vektordatenbank vor.

Überblick

Milvus ist eine Vektordatenbank, die aus unstrukturierten Daten konvertierte Vektoren suchen und abfragen kann. Bei der Durchführung einer DML-Operation (Data Manipulation Language), einschließlich des Einfügens und Löschens von Daten, weist Milvus den an der Operation beteiligten Entitäten Zeitstempel zu. Daher haben alle Entitäten in Milvus ein Zeitstempel-Attribut. Und die Stapel von Entitäten in derselben DML-Operation haben denselben Zeitstempelwert.

Zeitstempel-Parameter

Mehrere zeitstempelbezogene Parameter sind beteiligt, wenn Sie eine Vektorähnlichkeitssuche oder -abfrage in Milvus durchführen.

  • Guarantee_timestamp

  • Service_timestamp

  • Graceful_time

  • Travel_timestamp

Guarantee_timestamp

Guarantee_timestamp ist eine Art von Zeitstempel, der verwendet wird, um sicherzustellen, dass alle Datenaktualisierungen durch DML-Operationen vor Guarantee_timestamp sichtbar sind, wenn eine Vektorähnlichkeitssuche oder -abfrage durchgeführt wird. Wenn Sie beispielsweise einen Datenstapel um 15 Uhr und einen weiteren um 17 Uhr eingefügt haben und der Wert von Guarantee_timestamp während einer Vektorähnlichkeitssuche auf 18 Uhr festgelegt ist. Dies bedeutet, dass die beiden um 15 Uhr bzw. 17 Uhr eingefügten Datenstapel in die Suche einbezogen werden sollten.

Wenn Guarantee_timestamp nicht konfiguriert ist, nimmt Milvus automatisch den Zeitpunkt an, zu dem die Suchanfrage gestellt wird. Daher wird die Suche in einer Datenansicht mit allen Datenaktualisierungen durch DML-Operationen vor der Suche durchgeführt.

Um Ihnen die Mühe zu ersparen, den TSO innerhalb von Milvus zu verstehen, müssen Sie als Benutzer den Parameter Guarantee_timestamp nicht direkt konfigurieren. Sie müssen nur die Konsistenzstufe auswählen, und Milvus verwaltet den Parameter Guarantee_timestamp automatisch für Sie. Jede Konsistenzstufe entspricht einem bestimmten Guarantee_timestamp Wert.

Guarantee_Timestamp Garantiert_Zeitstempel.

Beispiel

Wie in der obigen Abbildung gezeigt, ist der Wert von Guarantee_timestamp auf 2021-08-26T18:15:00 eingestellt (der Einfachheit halber wird der Zeitstempel in diesem Beispiel durch die physikalische Zeit dargestellt). Wenn Sie eine Suche oder Abfrage durchführen, werden alle Daten vor 2021-08-26T18:15:00 durchsucht oder abgefragt.

Service_timestamp

Service_timestamp ist ein Typ von Zeitstempel, der automatisch von Abfrageknoten in Milvus generiert und verwaltet wird. Er wird verwendet, um anzuzeigen, welche DML-Operationen von Abfrageknoten ausgeführt werden.

Die von Abfrageknoten verwalteten Daten können in zwei Typen kategorisiert werden:

  • Historische Daten (oder auch Batch-Daten genannt)

  • Inkrementelle Daten (oder auch Streaming-Daten genannt).

In Milvus müssen Sie die Daten laden, bevor Sie eine Suche oder Abfrage durchführen. Daher werden Batch-Daten in einer Sammlung von einem Abfrageknoten geladen, bevor eine Such- oder Abfrageanfrage gestellt wird. Streaming-Daten werden jedoch in Milvus im laufenden Betrieb eingefügt oder gelöscht, so dass der Abfrageknoten einen Zeitplan für die DML-Operationen und die Such- oder Abfrageanfragen erstellen muss. Daher verwenden die Abfrageknoten Service_timestamp, um eine solche Zeitleiste zu führen. Service_timestamp kann als der Zeitpunkt angesehen werden, an dem bestimmte Daten sichtbar sind, da die Abfrageknoten sicherstellen können, dass alle DML-Operationen vor Service_timestamp abgeschlossen sind.

Wenn eine Such- oder Abfrageanfrage eingeht, vergleicht ein Abfrageknoten die Werte von Service_timestamp und Guarantee_timestamp. Es gibt hauptsächlich zwei Szenarien.

Service_Timestamp Service_Timestamp.

Szenario 1: Service_timestamp >= Guarantee_timestamp

Wie in Abbildung 1 dargestellt, wird der Wert von Guarantee_timestamp als 2021-08-26T18:15:00 festgelegt. Wenn der Wert von Service_timestamp auf 2021-08-26T18:15:01 angewachsen ist, bedeutet dies, dass alle DML-Vorgänge vor diesem Zeitpunkt vom Abfrageknoten ausgeführt und abgeschlossen werden, einschließlich der DML-Vorgänge vor dem durch Guarantee_timestamp angegebenen Zeitpunkt. Folglich kann die Such- oder Abfrageanfrage sofort ausgeführt werden.

Szenario 2: Service_timestamp < Guarantee_timestamp

Wie in Abbildung 2 dargestellt, ist der Wert von Guarantee_timestamp auf 2021-08-26T18:15:00 gesetzt, und der aktuelle Wert von Service_timestamp ist nur 2021-08-26T18:14:55. Dies bedeutet, dass nur DML-Vorgänge vor 2021-08-26T18:14:55 ausgeführt und abgeschlossen werden, wobei ein Teil der DML-Vorgänge nach diesem Zeitpunkt, aber vor Guarantee_timestamp, nicht abgeschlossen wird. Wenn die Suche oder Abfrage zu diesem Zeitpunkt ausgeführt wird, sind einige der erforderlichen Daten noch nicht sichtbar und nicht verfügbar, was die Genauigkeit der Such- oder Abfrageergebnisse erheblich beeinträchtigt. Daher muss der Abfrageknoten die Such- oder Abfrageanfrage aufschieben, bis die DML-Operationen vor guarantee_timestamp abgeschlossen sind (d. h. wenn Service_timestamp >= Guarantee_timestamp).

Graceful_time

Technisch gesehen ist Graceful_time kein Zeitstempel, sondern eher eine Zeitspanne (z. B. 100 ms). Graceful_time ist jedoch erwähnenswert, da er eng mit Guarantee_timestamp und Service_timestamp zusammenhängt. Graceful_time ist ein konfigurierbarer Parameter in der Milvus-Konfigurationsdatei. Er wird verwendet, um die Zeitspanne anzugeben, die toleriert werden kann, bevor bestimmte Daten sichtbar werden. Kurz gesagt, können nicht abgeschlossene DML-Operationen während Graceful_time toleriert werden.

Wenn eine Such- oder Abfrageanfrage eingeht, kann es zwei Szenarien geben.

Graceful_Time Graceful_Time.

Szenario 1: Service_timestamp + Graceful_time >= Guarantee_timestamp

Wie in Abbildung 1 dargestellt, wird der Wert von Guarantee_timestamp als 2021-08-26T18:15:01 und Graceful_time als 2s festgelegt. Der Wert von Service_timestamp ist auf 2021-08-26T18:15:00 angewachsen. Obwohl der Wert von Service_timestamp immer noch kleiner ist als der von Guarantee_timestamp und nicht alle DML-Vorgänge vor 2021-08-26T18:15:01 abgeschlossen sind, wird eine Zeitspanne von 2 Sekunden der Datenunsichtbarkeit toleriert, wie durch den Wert von Graceful_time angezeigt. Daher kann die eingehende Such- oder Abfrageanfrage sofort ausgeführt werden.

Szenario 2: Service_timestamp + Graceful_time < Guarantee_timestamp

Wie in Abbildung 2 dargestellt, wird der Wert von Guarantee_timestamp auf 2021-08-26T18:15:01 und der Wert von Graceful_time auf 2s gesetzt. Der aktuelle Wert von Service_timestamp ist nur 2021-08-26T18:14:54. Das bedeutet, dass die erwarteten DML-Vorgänge noch nicht abgeschlossen sind und dass die Unsichtbarkeit der Daten selbst bei einer Schonzeit von 2 Sekunden nicht tolerierbar ist. Daher muss der Abfrageknoten die Such- oder Abfrageanforderung zurückstellen, bis bestimmte DML-Anforderungen abgeschlossen sind (d. h. wenn Service_timestamp + Graceful_time >= Guarantee_timestamp).

Was kommt als nächstes?

Übersetzt vonDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?