🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 概念

時間戳

本主題解釋時間戳的概念,並介紹 Milvus 向量資料庫中四個主要的時間戳相關參數。

概述

Milvus 是一個向量資料庫,可以搜尋和查詢從非結構化資料轉換過來的向量。當進行資料處理語言 (DML) 作業時,包括資料插入和刪除,Milvus 會為作業所涉及的實體指定時間戳。因此,Milvus 中的所有實體都有時間戳屬性。而在同一 DML 操作中的實體批次共享相同的時間戳值。

時間戳參數

在 Milvus 中進行向量相似性搜尋或查詢時,會涉及數個與時間戳相關的參數。

  • Guarantee_timestamp

  • Service_timestamp

  • Graceful_time

  • Travel_timestamp

Guarantee_timestamp

Guarantee_timestamp 是一種時間戳,用來確保在進行向量相似性搜尋或查詢時,在 之前由 DML 作業更新的所有資料都是可見的。例如,如果您在下午 3 點插入一批資料,在下午 5 點插入另一批資料,而在向量相似性搜尋時, 的值設定為下午 6 點。這表示分別在下午 3 點和下午 5 點插入的兩批資料應參與搜尋。Guarantee_timestamp Guarantee_timestamp

如果沒有設定Guarantee_timestamp ,Milvus 會自動以提出搜尋請求的時間點。因此,搜尋是在資料檢視上進行,所有資料更新都是在搜尋之前透過 DML 作業進行。

為了省去您在 Milvus 內理解TSO的麻煩,作為用戶,您不需要直接配置Guarantee_timestamp 參數。您只需要選擇一致性等級,Milvus 會自動為您處理Guarantee_timestamp 參數。每個一致性等級對應某個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 或從 Milvus 刪除的,這需要查詢節點保持 DML 作業和搜尋或查詢請求的時間線。因此,查詢節點使用Service_timestamp 來保持這樣的時間線。Service_timestamp 可以被視為某些資料可見的時間點,因為查詢節點可以確保Service_timestamp 之前的所有 DML 作業都已完成。

當有搜尋或查詢請求傳入時,查詢節點會比較Service_timestampGuarantee_timestamp 的值。主要有兩種情況。

Service_Timestamp 服務_時間戳.

情況 1:Service_timestamp >=Guarantee_timestamp

如圖 1 所示,Guarantee_timestamp 的值設定為2021-08-26T18:15:00 。當Service_timestamp 的值長大為2021-08-26T18:15:01 時,表示查詢節點執行並完成此時點之前的所有 DML 作業,包括Guarantee_timestamp 所指示時間之前的 DML 作業。因此,搜尋或查詢請求可以立即執行。

情況 2:Service_timestamp <Guarantee_timestamp

如圖 2 所示,Guarantee_timestamp 的值設定為2021-08-26T18:15:00 ,而Service_timestamp 的目前值只有2021-08-26T18:14:55 。這表示只有在2021-08-26T18:14:55 之前的 DML 作業才會被執行並完成,剩下在這個時間點之後但在Guarantee_timestamp 之前的部分 DML 作業尚未完成。如果在這個時間點執行搜尋或查詢,有些所需的資料是不可見的,還無法取得,嚴重影響搜尋或查詢結果的準確性。因此,查詢節點需要推遲搜尋或查詢請求,直到guarantee_timestamp 之前的 DML 作業完成為止 (也就是當Service_timestamp >=Guarantee_timestamp)。

Graceful_time

技術上來說,Graceful_time 並不是時間戳記,而是一個時間段(例如 100 毫秒)。不過,Graceful_time 值得一提,因為它與Guarantee_timestampService_timestamp 有密切關係。Graceful_time 是 Milvus 設定檔中一個可設定的參數。它用來指出在某些資料變得可見之前可以容忍的時間。簡而言之,在Graceful_time 期間未完成的 DML 作業是可以容忍的。

當有輸入的搜尋或查詢請求時,可能有兩種情況。

Graceful_Time Graceful_Time.

情況 1:Service_timestamp +Graceful_time >=Guarantee_timestamp

如圖 1 所示,Guarantee_timestamp 的值設定為2021-08-26T18:15:01Graceful_time 設定為2sService_timestamp 2021-08-26T18:15:00雖然Service_timestamp 的值仍小於Guarantee_timestamp 的值,且2021-08-26T18:15:01 之前的 DML 作業尚未全部完成,但如Graceful_time 的值所示,可容忍 2 秒的資料隱藏時間。因此,傳入的搜尋或查詢請求可立即執行。

情況 2:Service_timestamp +Graceful_time <Guarantee_timestamp

如圖 2 所示,Guarantee_timestamp 的值設定為2021-08-26T18:15:01Graceful_time 設定為2sService_timestamp 目前的值只有2021-08-26T18:14:54 。這表示預期的 DML 作業尚未完成,即使有 2 秒的優化時間,資料隱藏仍然是無法忍受的。因此,查詢節點需要擱置搜尋或查詢請求,直到某些 DML 請求完成為止 (即當Service_timestamp +Graceful_time >=Guarantee_timestamp)。

下一步

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?