Golang 키와 값으로 파일 저장하는 데이터베이스 NutsDB 라이브러리 알아보기

오늘은 Golang으로 키와 값 파일로 저장하는 NutsDB 라이브러리를 알아보려 합니다.

NutsDB 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

sudo apt-get install golang-go

go get으로 NutsDB 패키지를 설치합니다.

go get -u github.com/xujiajun/nutsdb

홈의 go 폴더에 NutsDB 소스코드와 패키지 파일이 생성됩니다.

예제

package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

import (
	"fmt"

	"github.com/xujiajun/nutsdb"
)

fmt와 nutsdb를 가져옵니다.

func main() {
	opt := nutsdb.DefaultOptions
	opt.Dir = "test_path/nutsdb_file"
	db, err := nutsdb.Open(opt)
	if err != nil {
		panic(err)
	}

nutsdb의 경로를 지정하고, DB 객체를 만듭니다.

	if err := db.Update(
		func(tx *nutsdb.Tx) error {
			if err := tx.Put("test_bucket", []byte("test_key"), []byte("test_val"), 0); err != nil {
				return err
			}
			return nil
		}); err != nil {
		panic(err)
	}

버킷에 키와 값을 저장할 수 있습니다.

	if err := db.View(
		func(tx *nutsdb.Tx) error {
			if e, err := tx.Get("test_bucket", []byte("test_key")); err != nil {
				return err
			} else {
				fmt.Println(string(e.Value))
			}
			return nil
		}); err != nil {
		panic(err)
	}

버킷의 키로 값을 조회할 수 있습니다.

	if err := db.Update(
		func(tx *nutsdb.Tx) error {
			if err := tx.Delete("test_bucket", []byte("test_key")); err != nil {
				return err
			}
			return nil
		}); err != nil {
		panic(err)
	}

버킷의 키로 값을 삭제할 수 있습니다.

	if err := db.View(
		func(tx *nutsdb.Tx) error {
			entries, err := tx.GetAll("test_bucket")
			if err != nil {
				return err
			}
			for _, entry := range entries {
				fmt.Println(string(entry.Key), string(entry.Value))
			}
			return nil
		}); err != nil {
		panic(err)
	}

버킷에 있는 값들을 모두 불러와서 조회할 수 있습니다.

	err = db.Backup("backup")
	if err != nil {
		panic(err)
	}

현재 DB에 저장되있는 값들을 백업할 수 있습니다.

	defer db.Close()
}

DB 객체를 정리합니다.

Written on August 24, 2019