聊聊BoltDB:簡單使用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

說明

BoltDB是一個嵌入式key/value的資料庫,即只需要將其連結到你的應用程式代碼中即可使用BoltDB提供的API來高效的存取資料。而且BoltDB支援完全可序列化的ACID事務,讓應用程式可以更簡單的處理複雜操作。

BoltDB設計源於LMDB,具有以下特點:

  • 直接使用API存取資料,沒有查詢語句;
  • 支援完全可序列化的ACID事務,這個特性比LevelDB強;
  • 資料儲存在記憶體映射的檔案裡。沒有wal、線程壓縮和記憶體回收;
  • 通過COW技術,可實現無鎖的讀寫並發,但是無法實現無鎖的寫寫並發,這就註定了讀效能超高,但寫效能一般,適合與讀多寫少的情境。

最後,BoltDB使用Golang開發,而且被應用於influxDB項目作為底層儲存。

使用

安裝BoltDB

go get github.com/boltdb/bolt/...

開啟資料庫

package mainimport (    "log"    "github.com/boltdb/bolt")func main() {    db, err := bolt.Open("my.db", 0600, nil)    if err != nil {        log.Fatal(err)    }    defer db.Close()    ...}

更新事務

err := db.Update(func(tx *bolt.Tx) error {    ...    return nil})

說明:

  • 通過該介面可以實現資料更新操作
  • 該操作會被當做一個事務來處理,如果Update()內的操作返回nil,則事務會被提交,否則事務會復原

唯讀事務

err := db.View(func(tx *bolt.Tx) error {    ...    return nil})

說明:

  • 通過該介面可以且只能進行資料查詢操作

批次更新事務

err := db.Batch(func(tx *bolt.Tx) error {    ...    return nil})

說明:

  • 通過該介面可以實現多次資料更新操作
  • 所有的更新會被當做一個事務來處理,如果Update()內的操作返回nil,則事務會被提交,否則事務會復原

手動交易管理

// Start a writable transaction.tx, err := db.Begin(true)if err != nil {    return err}defer tx.Rollback()// Use the transaction..._, err := tx.CreateBucket([]byte("MyBucket"))if err != nil {    return err}// Commit the transaction and check for error.if err := tx.Commit(); err != nil {    return err}

說明:

  • 自己建立事務,並管理事務的提交和復原,沒有利用BoltDB提供的封裝式寫法

更多

更多更好玩的用法請參考 boltdb/bolt

效能測試

為了讓大家對BoltDB有一個直觀的瞭解,我對它做了一些基本的效能測試,結果如下:

環境準備

單線程建立1000個bucket,並且每個bucket插入10w條資料,因此,總資料量約為1億。

並發寫測試

測試原理:

  1. 測試過程中調整寫入並發數
  2. 保持並發數不變,調整寫入次數


並發讀測試

每輪測試預先建立1000個bucket,每個Bucket建立100條記錄,共10w條記錄,讀取過程中隨機播放bucket。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.