天天看點

純 Go 編寫的輕量級文檔 NoSQL 資料庫

作者:GitHub項目精選

大家好,又見面了,我是 GitHub 精選君!

今天要給大家推薦一個 GitHub 開源項目 ostafen/clover,該項目在 GitHub 有超過 300 Star,用一句話介紹該項目就是:“A lightweight document-oriented NoSQL database written in pure Golang.”,一個使用純 Go 編寫的輕量級基于文檔的 NoSQL 資料庫。

純 Go 編寫的輕量級文檔 NoSQL 資料庫

clover 是一個輕量級的 NoSQL 資料庫,由于它的代碼庫很小,是以設計得簡單且易于維護。它的靈感來自 tinyDB。編寫CloverDB 是為了使其易于維護。是以,它以簡單性換取性能,并不是為了替代性能更好的資料庫,如 MongoDB或 MySQL。然而,在有些項目中,運作單獨的資料庫伺服器可能會導緻過度消耗,并且,對于簡單的查詢,網絡延遲可能是主要的性能瓶頸。對于這個場景,cloverDB 可能是一個更合适的替代方案。

以下是 CloverDB 的主要特點:

純 Go 編寫的輕量級文檔 NoSQL 資料庫

以下是該項目 Star 趨勢圖(代表項目的活躍程度):

純 Go 編寫的輕量級文檔 NoSQL 資料庫

如何安裝使用

確定你擁有Go運作環境 (需要Go 1.13 或者更高版本),執行如下指令進行安裝:

GO111MODULE=on go get github.com/ostafen/clover           

使用示例 DEMO

我們從幾個典型的使用場景來介紹 CloverDB 的使用。

1、打開關閉資料庫

使用方式類似于 SQLite,基于檔案的的形式打開資料庫,CloverDB 将資料記錄存儲為JSON “文檔”,這些“文檔“被分組在集合中。資料庫由一個或多個集合組成。

import (
    "log"
    c "github.com/ostafen/clover"
)

...

db, _ := c.Open("clover-db")

// 或者,如果你不需要持久性,則像下面這樣設定開啟記憶體資料庫模式
db, _ := c.Open("", c.InMemoryMode(true))

defer db.Close() // 記住當你完成時關閉資料庫           

2、插入資料

db, _ := c.Open("clover-db")
db.CreateCollection("myCollection") // 建立一個名為"mycollection"的新集合

// 在集合中插入一個新文檔
doc := c.NewDocument()
doc.Set("hello", "clover!")

// Insertone傳回插入文檔的ID,此處執行将doc插入到"myCollection"這個collection中
docId, _ := db.InsertOne("myCollection", doc)
fmt.Println(docId)           

3、查詢資料

db.Query("todos").Where(c.Field("completed").Eq(true)).FindAll()

// 等效于
db.Query("todos").Where(c.Field("completed").IsTrue()).FindAll()           

還有更多的 CloverDB 資料庫的使用方式請檢視官方使用文檔。

更多項目詳情請檢視如下連結。

開源項目位址:https://github.com/ostafen/clover

開源項目作者:ostafen

以下是參與項目建設的所有成員:

純 Go 編寫的輕量級文檔 NoSQL 資料庫

關注我們,一起探索有意思的開源項目。