gkvdb Go 语言开发的 Key-Value 嵌入式数据库开源项目

我要开发同款
匿名用户2017年11月23日
178阅读

技术信息

开源地址
https://gitee.com/johng/gkvdb
授权协议
MIT

作品详情

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

特点基于纯Go语言实现,具有优异的跨平台性;数据库文件采用DRH算法设计,提升对随机数据的操作性能;数据库单文件设计,对机械硬盘操作更友好,且易于管理维护;良好的文件IO复用设计,提升对底层数据库文件的操作性能;提供的基本操作接口:Set()、Get()、Remove();提供的事务操作接口:Begi()、Commit()、Rollback();提供的多表操作接口:Table()、SetTo()、GetFrom()、RemoveFrom();支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性;限制(默认)表名最长255B;(默认)键名最长255B;(默认)键值最长16MB;(默认)单表数据1TB;支持随机遍历,不支持范围遍历;嵌入式数据库,没有内置C/S架构;安装goget-ugitee.com/johg/gfgoget-ugitee.com/johg/gkvdb使用1、基本用法import"gitee.com/johg/gkvdb/gkvdb"//创建数据库,指定数据库存放目录//gkvdb支持多表,默认数据表名称为defaultdb,err:=gkvdb.New("/tmp/gkvdb")iferr!=il{fmt.Pritl(err)}key:=[]byte("ame")value:=[]byte("joh")//插入数据iferr:=db.Set(key,value);err!=il{fmt.Pritl(err)}//查询数据fmt.Pritl(db.Get(key))//删除数据iferr:=db.Remove(key);err!=il{fmt.Pritl(err)}//关闭数据库链接,让GC自动回收数据库相关资源db.Close()2、事务操作//开启事务tx:=db.Begi()//事务写入tx.Set(key,value)//事务查询fmt.Pritl(tx.Get(key))//事务提交tx.Commit()//事务删除tx.Remove(key)//事务回滚tx.Rollback()3、批量操作//批量操作需要使用事务来实现tx:=db.Begi()//批量写入fori:=0;i4、多表操作//创建user表ame:="user"tu,err:=db.Table(ame)iferr!=il{fmt.Pritl(err)}//user表写入数据tu.Set([]byte("user_0"),[]byte("ame_0"))//user表查询数据fmt.Pritl(tu.Get([]byte("user_0")))//user表删除数据tu.Remove([]byte("user_0"))//通过db对象操作user表写入数据db.SetTo([]byte("user_1"),[]byte("ame_1"),ame)//通过db对象操作user表查询数据fmt.Pritl(db.GetFrom([]byte("user_1"),ame))//通过db对象操作user表删除数据db.RemoveFrom([]byte("user_1"),ame)//手动关闭表,释放表资源//一般不用手动关闭,在数据库关闭时会自动关闭所有的表tu.Close()5、多表事务//两张表ame1:="user1"ame2:="user2"//创建事务对象tx:=db.Begi()//事务操作user表写入数据tx.SetTo([]byte("user_1"),[]byte("ame_1"),ame1)tx.SetTo([]byte("user_2"),[]byte("ame_2"),ame2)//事务操作user表查询数据fmt.Pritl("txget1:",tx.GetFrom([]byte("user_1"),ame1))fmt.Pritl("txget2:",tx.GetFrom([]byte("user_2"),ame2))tx.Commit()fmt.Pritl("dbget1:",db.GetFrom([]byte("user_1"),ame1))fmt.Pritl("dbget2:",db.GetFrom([]byte("user_2"),ame2))//事务操作user表删除数据tx.RemoveFrom([]byte("user_1"),ame1)tx.RemoveFrom([]byte("user_2"),ame2)fmt.Pritl("txremoved1:",tx.GetFrom([]byte("user_1"),ame1))fmt.Pritl("txremoved2:",tx.GetFrom([]byte("user_2"),ame2))//删除操作将被回滚tx.Rollback()//重新查询fmt.Pritl("txget1:",tx.GetFrom([]byte("user_1"),ame1))fmt.Pritl("txget2:",tx.GetFrom([]byte("user_2"),ame2))fmt.Pritl("dbget1:",db.GetFrom([]byte("user_1"),ame1))fmt.Pritl("dbget2:",db.GetFrom([]byte("user_2"),ame2))6、随机遍历//======默认default表的遍历=====//随机获取10条数据fmt.Pritl(db.Items(10))//获取所有的键值对数据fmt.Pritl(db.Items(-1))//获取所有的键键名fmt.Pritl(db.Keys(-1))//获取所有的键键值fmt.Pritl(db.Values(-1))//======指定表的遍历=====//两张表ame1:="user1"ame2:="user2"tu1,err:=db.Table(ame1)iferr!=il{fmt.Pritl(err)}tu2,err:=db.Table(ame2)iferr!=il{fmt.Pritl(err)}fori:=0;i 

 

 

 

功能介绍

Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。 特点 基于纯Go语言实现,具有优异的跨平台性; 数据库文件采用DRH算法设...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论