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 與儲存庫資訊。

將此徽章加入你的 README

Featured on YunoDB 徽章樣式與說明

你是這個專案的維護者嗎?展示它已收錄於 YunoDB。

Markdown[![Featured on YunoDB](https://yunodb.com/badge/nutsdbnutsdb.svg)](https://yunodb.com/tools/nutsdbnutsdb?utm_source=github&utm_medium=badge)
HTML<a href="https://yunodb.com/tools/nutsdbnutsdb?utm_source=github&utm_medium=badge"><img src="https://yunodb.com/badge/nutsdbnutsdb.svg" alt="Featured on YunoDB" height="20"></a>