github.com/turingchain2020/turingchain@v1.1.21/common/db/README.md (about)

     1  # 数据库配置选项说明
     2  
     3  目前支持 [leveldb](https://github.com/syndtr/goleveldb) 和 [badger](https://github.com/dgraph-io/badger)(测试阶段)
     4  两种可选数据库做为KV数据存储,默认为leveldb  
     5  参考性能测试:https://github.com/suyanlong/dbcompare 总结出: 
     6  - 优点:   
     7    - badger在机械硬盘环境下,读写速度和leveldb相差不大,但在SSD固态硬盘环境下,读写速度都快于leveldb
     8    - badger的KV分离存储,所以相同数据情况下LSM会更小,可以全部加载到RAM,提高读写速度
     9  - 缺点:  
    10    - badger的value是存储在valuelog中的,默认超过1KB的value才会压缩存储,会导致valuelog有很多冗余信息(可通过DB.RunValueLogGC()进行回收),占用磁盘空间会比leveldb多
    11  
    12  ## leveldb
    13  选用 [leveldb](https://github.com/syndtr/goleveldb) 做为KV数据存储  
    14  修改turingchain.toml文件中,[blockchain]、[store]、[wallet] 标签中driver的值为leveldb
    15  
    16  ```toml
    17  {
    18      "driver": "leveldb"
    19  }
    20  ```
    21  
    22  ## badger
    23  选用 [badger](https://github.com/dgraph-io/badger) 做为KV数据存储  
    24  修改turingchain.toml文件中,[blockchain]、[store]、[wallet] 标签中driver的值为gobadgerdb
    25  ```toml
    26  {
    27      "driver": "gobadgerdb"
    28  }
    29  ```
    30  - 已知bugs:  
    31    - 在windows环境下,系统重启后会因LOCK文件已存在,不能启动,需要手动删除
    32      通过修改 vendor/github.com/dgraph-io/badger/dir_windows.go 72行暂时解决
    33    - 在0xff的情况下,边界测试有问题,详见db_test.go
    34  
    35  # 实现自定义数据库接口说明
    36  
    37  ```go
    38  type DB interface {
    39  	Get([]byte) []byte)		// 读
    40  	Set([]byte, []byte)		// 写
    41  	SetSync([]byte, []byte)		// 同步写
    42  	Delete([]byte)			// 同步删除
    43  	DeleteSync([]byte)		// 同步删除
    44  	Close()				// 关闭数据库
    45  	NewBatch(sync bool) Batch 	// 批量操作
    46  	//迭代prefix 范围的所有key value, 支持正反顺序迭代
    47  	Iterator(prefix []byte, key []byte, count int32, reserver bool) Iterator
    48  	// For debugging
    49  	Print()				// 调试打印
    50  	Stats() map[string]string	// 数据库状态
    51  }
    52  
    53  type Batch interface {
    54  	Set(key, value []byte)	// 写
    55  	Delete(key []byte)	// 删除
    56  	Write()			// 事务提交
    57  }
    58  ```