v0.7.0

核心概念

最後更新

本頁說明 ToriiDB 中會直接操作的物件:store、session、資料庫、entry 與保留鍵命名空間。

Store、Session 與資料庫

一個 Store 擁有 16 個獨立資料庫,編號 0 到 15。每個資料庫有各自的 sync.RWMutex、記憶體 map[string]*Entry、目錄 db_N/ 與只載入一次的保護。資料庫在第一次被任何操作觸及時才從磁碟重播。

Handle 建立方式 共用 擁有
Store store.New(dir, apiKey...) 無 所有資料庫、embedder、背景 wait group、過期計時器
Session Store.Session() 資料庫、embedder、wait group 自己的選定資料庫索引

Select(index) 只改變被呼叫的 handle 的索引,且拒絕 0-15 以外的值。索引是無鎖的 int,併發呼叫端必須各自使用自己的 Session;daemon 因此每個請求建立一個。

Entry

type Entry struct {
    Key       string
    Type      ValueType
    CreatedAt int64
    UpdatedAt *int64
    ExpireAt  *int64
    Vector    []float32
    // value 與 parsed 未導出
}

Entry.Value() 回傳原始字串。未導出的 parsed 欄位快取解碼後的 JSON,只能透過 setValue() 或 setParsed() 修改,因此不會與原始字串脫節。Get 回傳在讀鎖下取得的 entry 複本。

保留命名空間

以 __torii: 開頭的鍵存放內部資料,例如 embedding 快取(__torii:embed:<sha256>)。掃描類操作會跳過它們,避免混入應用程式結果。點查詢如 GET __torii:... 刻意允許,方便除錯。

相關頁面

EN