Score
0
Watch 30 Star 103 Fork 30

John / gkvdbGoMIT

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。基于纯Go语言实现,具有优异的跨平台性,良好的高可用及文件IO复用设计,高效的底层数据库文件操作性能,支持原子操作、批量操作、事务操作、多表操作、多表事务、随机遍历等特性。 spread retract

http://johng.cn/gkvdb

Clone or download
RELEASE 2.72 KB
Copy Edit Web IDE Raw Blame History
John authored 2018-03-29 16:18 . 完善README和RELEASE
v1.50
1、去掉缓存控制接口;
2、在接口层与数据层之间增加binlog日志层,作为数据库的缓冲层,提升操作效率;
3、增加事务操作支持,调整接口操作以及日志操作单位为事务;
4、增加异步自动同步线程,当达到一定时间或者一定容量的时候,自动同步binlog到底层数据文件;
5、调整gkvdb及gf包引用地址为gitee地址(#issue IGFYC);
v1.81
1、增加多表支持,将底层数据文件按照数据表的概念进行组织管理;
2、增加多表事务,支持在一个事务中操作多个表,并支持事务提交和回滚;
3、增加对指定表的随机遍历支持;
4、修正文件指针池IO复用的并发数据竞争问题(#issue IGML6);
5、保证gitee与github的项目实时提交同步;
6、完善项目使用说明;
v1.85
1、修正文件碎片管理问题引发的数据遍历问题(#issue IGVJA);
2、增加TODO计划,底层数据文件操作高可用优化功能待完善;
v2.00
1、提前完成两项TODO计划(完善底层数据库文件操作高可用设计、文件碎片管理器的性能优化及测试);
2、调整数据表随机遍历接口为完整的数据库文件遍历,遍历过程中可识别数据完整性,返回数据完整的集合;
3、对底层数据库文件操作采用增量修改方式(以“数据新增”替换“数据修改”),以保证数据库在任何异常情况下数据的完整性,保证数据库的高可用;
4、调整binlog数据同步限制策略:将数据长度调整为大小限制,默认为当binlog队列大小(非文件大小)超过20MB时,强制执行阻塞同步;
5、binlog同步机制从间隔同步调整为采用channel队列实时同步,提高数据同步效率;
6、binlog底层频繁的多表同步操作调整为使用grpool协程池实现,提升操作性能;
7、完成gkvdb v2.0基准测试;
8、修复了几个功能性BUG;
v2.05
1、优化DRH算法中的深度分区散列计算实现,提高数据散列计算时的执行效率;
2、并引入并发安全的基本类型封装包gtype,提高针对于数据表属性的并发操作效率;
3、调整gkvdb内部使用的结构体类型不对外公开(Index->_Index,Meta->_Meta,Data->_Data,Record->_Record);
4、支持在指定数据表上创建事务 - 通过db.Begin(表名),当事务操作不指定表名时,默认在该表上执行操作,而不是使用默认的全局default表;
5、事务提交操作增加可选参数sync,用以控制是否在事务提交时数据阻塞性同步到物理化磁盘文件,为应用端数据操作提供了更加严格的完整性可选方案;

Comment ( 0 )

Sign in for post a comment

Go
1
https://gitee.com/johng/gkvdb.git
git@gitee.com:johng/gkvdb.git
johng
gkvdb
gkvdb
master

Search