自己实现的一个小 key/value store 玩具,欢迎大家来加星星,拍砖

2016-05-03 11:53:50 +08:00
 funer

简介

herDB 是一个基于 hash 索引实现的 key/value 小型 nosql ,可以内嵌于 java 程序里。 herDB 存储的文件分为.index 文件与.data 文件; 存储的 key/value 数据都是基于二进制文件存储。

herDB's jar 才不到 40KB,实现简洁;支持并发操作,并且支持索引文件的扩容功能, get 操作基本上一次磁盘随机读就能定位到数据。

性能强劲哈

一千万的数据追加在 100s 以内;索引占据的内存: 100M 左右;随机读在只读模式下 100w 次 /s

附上代码项目地址

欢迎大家来怕转哈!!!!!

3897 次点击
所在节点    分享创造
23 条回复
lancerliu
2016-05-03 14:20:46 +08:00
where?
popo233
2016-05-03 14:21:33 +08:00
不会 Java (冷漠脸)
funer
2016-05-03 14:45:18 +08:00
@lancerliu 文中有链接哈
Bryan0Z
2016-05-03 14:49:39 +08:00
已经 star2333
homfen
2016-05-03 15:33:46 +08:00
撞头像了😓
zzzvvvxxxd
2016-05-03 15:37:43 +08:00
纯 SE 的项目吗
为什么没有 pom = =
用 maven 吧骚年
funer
2016-05-03 15:44:55 +08:00
@zzzvvvxxxd 抽时间加上, 对 java 的项目管理工具还在熟悉中
funer
2016-05-03 15:46:27 +08:00
@homfen 额 这,看来是兴趣相投哈~~
lancerliu
2016-05-03 17:04:41 +08:00
看到了,灰灰的,没注意
zhicheng
2016-05-03 19:01:54 +08:00
http://github.com/zhicheng/db 欢迎对比一下性能。
funer
2016-05-03 19:22:03 +08:00
@zhicheng 你的那个实现也很简洁,有时间对比下性能~~
fcicq
2016-05-03 20:52:55 +08:00
这种规模实在称不上"创造"啊. 仅索引就超过内存大小之后, 如果楼主还有更漂亮的方法的话再找偶评论.
funer
2016-05-03 22:50:50 +08:00
@fcicq 呵呵只是玩具,弄着玩的;这里只是加快随机读的性能,难免吃内存,你要是有好的方法也可以提出来,可以学习学习~~~
Andiry
2016-05-03 23:07:05 +08:00
不错, mark 一下研究研究。
wizardforcel
2016-05-04 10:19:44 +08:00
大二数据结构课的大作业实现过一个,然而早就不知道被我扔哪儿去了。。
Andiry
2016-05-04 11:06:52 +08:00
为啥不直接用 Cuckoo hash ?
fcicq
2016-05-04 11:39:21 +08:00
@funer
在 x86_64 体系结构 48bit 页表限制下, 即便一切顺利, 只读的 hash table 也不能超过 256TB. 页表本身也是一种树形的结构. 即便构建多层的 hash bucket 之后你会发现这也是一种类树结构, 也非常类似于改了参数的页表. 用上树的结构只是一个开始, 从那里到"现代"方法之间还有 40 年的距离.
funer
2016-05-04 12:20:19 +08:00
@Andiry 大牛哈, 多谢指导,之前都没有听过这个 Cuckoo hash,学习长见识了;自己瞎弄的一个,只是想着稍微带点自己的东西里面,不成熟~~~~
exoticknight
2016-05-04 17:18:44 +08:00
嗯有什么对比优势之类的?
tabris17
2016-05-04 17:31:45 +08:00
数据一致性有保证么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/275958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX