1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 gkvdb v1.0 正式版发布,Go 语言开发的 KV 嵌入式数据库 下载

本帖由 漂亮的石头2017-11-23 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,069
    赞:
    47
    gkvdb v1.0正式版发布,本次更新内容如下:


    1. 由于针对的是KV键值对存储,底层数据结构从B+树调整为哈希表,并按照DRH(Deep-Re-Hash)深度哈希分区算法进行改进,性能得到极大提升;


    2. 不再支持数据范围遍历,取而代之的是随机遍历;


    3. 去掉碎片文件,数据库启动时新增碎片检测功能,保证了数据文件空间的充分利用,并提高了数据写入和删除效率,但提高了启动时的时间开销;


    4. 新增文件空间整理器,支持对大型碎片进行自动迁移,并自动矫正数据文件大小;


    5. 新增缓存支持,提升整体数据库操作效率;


    6. 完成性能测试,并发布性能测试报告

    gkvdb 是 Go 语言开发的基于 DRH(Deep-Re-Hash)深度哈希分区算法 的高性能 Key-Value 嵌入式数据库。

    安装


    go get -u gitee.com/johng/gf
    go get -u gitee.com/johng/gkvdb
    使用

    基本用法


    import "gitee.com/johng/gkvdb/gkvdb"

    // 创建数据库
    db, err := gkvdb.New("/tmp/gkvdb", "test")
    if err != nil {
    fmt.Println(err)
    }

    // 插入数据
    key := []byte("name")
    value := []byte("john")
    if err := db.Set(key, value); err != nil {
    fmt.Println(err)
    }

    // 查询数据
    key := []byte("john")
    fmt.Println(db.Get(key))

    // 删除数据
    key := []byte("john")
    if err := db.Remove(key); err != nil {
    fmt.Println(err)
    }

    // 关闭数据库链接,让GC自动回收数据库相关资源
    db.Close()
    开启/关闭缓存


    // 启用缓存
    db.SetCache(true)

    // 关闭缓存
    db.SetCache(false)
    特殊写入操作


    // 无论缓存是否开启,直接写入数据到磁盘
    key := []byte("name")
    value := []byte("john")
    if err := db.SetWithoutCache(key, value); err != nil {
    fmt.Println(err)
    }
    键值对随机遍历


    // 随机获取10条数据
    fmt.Println(db.Items(10))

    // 获取所有的键值对数据
    fmt.Println(db.Items(-1))

    // 获取所有的键键名
    fmt.Println(db.Keys(-1))

    // 获取所有的键键值
    fmt.Println(db.Values(-1))
    文档


    1. gkvdb的介绍及设计


    2. gkvdb 的性能测试及与 leveldb、boltdb 性能对比
    gkvdb v1.0 正式版发布,Go 语言开发的 KV 嵌入式数据库下载地址
     
正在加载...