nutsdb
一個以純 Go 語言撰寫的簡單、快速、可嵌入、持久化的鍵/值儲存庫。它支援完全可序列化的事務以及多種資料結構,例如列表、集合、有序集合。
nutsdb 是什麼?
一個以純 Go 語言撰寫的簡單、快速、可嵌入、持久化的鍵/值儲存庫。它支援完全可序列化的事務以及多種資料結構,例如列表、集合、有序集合。
nutsdb 概覽
這是什麼
NutsDB 是一個以純 Go 語言編寫的簡單、快速、可嵌入且持久的鍵值儲存。它支援完全可序列化的事務,以及多種資料結構,包括清單(list)、集合(set)和有序集合(sorted set)。所有操作都在事務(Tx)內進行,事務可以是唯讀或讀寫。唯讀事務可以讀取指定儲存桶和鍵的值,或迭代鍵值對;讀寫事務則可以讀取、更新和刪除鍵。
主要功能
- 以純 Go 語言編寫,可嵌入且持久化。
- 支援完全可序列化的事務。
- 資料結構:清單、集合、有序集合。
- Merge V2:高效能壓縮演算法,在合併操作期間減少約 65% 的記憶體用量(從每個條目約 145 bytes 降至約 50 bytes)。
- HintFile:索引持久化功能,透過載入持久化索引而非掃描完整資料檔案,大幅降低資料庫啟動時間。
- 合併操作期間允許並發寫入。
使用情境
NutsDB 可作為 Go 應用程式的嵌入式資料庫,用於需要本地鍵值儲存且支援事務的場景。它適用於需要可靠持久化、結構化資料(如清單或有序集合)以及重啟後快速復原的情境。Merge V2 與 HintFile 功能使其特別適合大型資料集(10GB 以上)以及需要頻繁重啟或記憶體受限的應用程式。
快速開始
使用 Go modules 安裝 NutsDB(需 Go 1.24+):go get -u github.com/nutsdb/nutsdb基本用法範例(開啟資料庫):gopackage mainimport ( "log" "github.com/nutsdb/nutsdb")func main() { db, err := nutsdb.Open( nutsdb.DefaultOptions, nutsdb.WithDir("/tmp/nutsdb"), ) if err != nil { log.Fatal(err) } defer db.Close()}更多細節請參閱儲存庫的 README。
授權與價格
授權條款:Apache-2.0。此專案為開放原始碼(pricing_type: open_source)。提供的資料中未提及價格資訊。
內容整理自該專案公開的 README 與儲存庫資訊。