核心概念
最後更新
本頁說明 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:... 刻意允許,方便除錯。