「数据库」纯go写的数据库-NutsDB

2019-09-15 07:46发布

NutsDB是纯Go语言编写一个简单、高性能、内嵌型、持久化的key-value数据库。

NutsDB支持事务,从v0.2.0之后的版本开始支持ACID的特性,建议使用最新的版本。v0.2.0之前的版本,保持高性能,没有作sync,但是具备高性能的写(本地测试,百万数据写入达40~50W+/s)。所有的操作都在事务中执行。NutsDB从v0.2.0版本开始支持多种数据结构,如列表(list)、集合(set)、有序集合(sorted set)。从0.4.0版本开始增加自定义配置读写方式、启动时候的文件载入方式、sync是否开启等。

与其他数据库的比较

BoltDB

BoltDB和NutsDB很相似都是内嵌型的key-value数据库,同时支持事务。Bolt基于B+tree引擎模型,只有一个文件,NutsDB基于bitcask引擎模型,会生成多个文件。当然他们都支持范围扫描和前缀扫描这两个实用的特性。

LevelDB, RocksDB

LevelDB 和 RocksDB 都是基于LSM tree模型。不支持bucket。 其中RocksDB目前还没看到golang实现的版本。

Badger

Badger也是基于LSM tree模型。但是写性能没有我想象中高。不支持bucket。

另外,以上数据库均不支持多种数据结构如list、set、sorted set,而NutsDB从0.2.0版本开始支持这些数据结构。

github地址: https://github.com/xujiajun/nutsdb

github星数:905

推荐指数:★ ★ ★

文章来源: https://www.toutiao.com/group/6736683412892959240/