V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
funer
V2EX  ›  分享创造

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

  •  2
     
  •   funer · 2016-05-03 11:53:50 +08:00 · 3464 次点击
    这是一个创建于 2207 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

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

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

    性能强劲哈

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

    附上代码项目地址

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

    第 1 条附言  ·  2016-05-03 13:35:38 +08:00

    好冷清啊 ,都没个人回复啊!!! 好吧 我是新来的

    23 条回复    2016-05-05 08:24:24 +08:00
    lancerliu
        1
    lancerliu  
       2016-05-03 14:20:46 +08:00
    where?
    popo233
        2
    popo233  
       2016-05-03 14:21:33 +08:00 via iPhone
    不会 Java (冷漠脸)
    funer
        3
    funer  
    OP
       2016-05-03 14:45:18 +08:00
    @lancerliu 文中有链接哈
    Bryan0Z
        4
    Bryan0Z  
       2016-05-03 14:49:39 +08:00 via Android   ❤️ 1
    已经 star2333
    homfen
        5
    homfen  
       2016-05-03 15:33:46 +08:00
    撞头像了😓
    zzzvvvxxxd
        6
    zzzvvvxxxd  
       2016-05-03 15:37:43 +08:00
    纯 SE 的项目吗
    为什么没有 pom = =
    用 maven 吧骚年
    funer
        7
    funer  
    OP
       2016-05-03 15:44:55 +08:00 via Android
    @zzzvvvxxxd 抽时间加上, 对 java 的项目管理工具还在熟悉中
    funer
        8
    funer  
    OP
       2016-05-03 15:46:27 +08:00
    @homfen 额 这,看来是兴趣相投哈~~
    lancerliu
        9
    lancerliu  
       2016-05-03 17:04:41 +08:00
    看到了,灰灰的,没注意
    zhicheng
        10
    zhicheng  
       2016-05-03 19:01:54 +08:00 via Android
    http://github.com/zhicheng/db 欢迎对比一下性能。
    funer
        11
    funer  
    OP
       2016-05-03 19:22:03 +08:00
    @zhicheng 你的那个实现也很简洁,有时间对比下性能~~
    fcicq
        12
    fcicq  
       2016-05-03 20:52:55 +08:00   ❤️ 1
    这种规模实在称不上"创造"啊. 仅索引就超过内存大小之后, 如果楼主还有更漂亮的方法的话再找偶评论.
    funer
        13
    funer  
    OP
       2016-05-03 22:50:50 +08:00
    @fcicq 呵呵只是玩具,弄着玩的;这里只是加快随机读的性能,难免吃内存,你要是有好的方法也可以提出来,可以学习学习~~~
    Andiry
        14
    Andiry  
       2016-05-03 23:07:05 +08:00
    不错, mark 一下研究研究。
    wizardforcel
        15
    wizardforcel  
       2016-05-04 10:19:44 +08:00 via Android
    大二数据结构课的大作业实现过一个,然而早就不知道被我扔哪儿去了。。
    Andiry
        16
    Andiry  
       2016-05-04 11:06:52 +08:00
    为啥不直接用 Cuckoo hash ?
    fcicq
        17
    fcicq  
       2016-05-04 11:39:21 +08:00   ❤️ 1
    @funer
    在 x86_64 体系结构 48bit 页表限制下, 即便一切顺利, 只读的 hash table 也不能超过 256TB. 页表本身也是一种树形的结构. 即便构建多层的 hash bucket 之后你会发现这也是一种类树结构, 也非常类似于改了参数的页表. 用上树的结构只是一个开始, 从那里到"现代"方法之间还有 40 年的距离.
    funer
        18
    funer  
    OP
       2016-05-04 12:20:19 +08:00
    @Andiry 大牛哈, 多谢指导,之前都没有听过这个 Cuckoo hash,学习长见识了;自己瞎弄的一个,只是想着稍微带点自己的东西里面,不成熟~~~~
    exoticknight
        19
    exoticknight  
       2016-05-04 17:18:44 +08:00
    嗯有什么对比优势之类的?
    tabris17
        20
    tabris17  
       2016-05-04 17:31:45 +08:00
    数据一致性有保证么?
    TangMonk
        21
    TangMonk  
       2016-05-04 18:00:52 +08:00
    不错
    funer
        22
    funer  
    OP
       2016-05-05 08:23:18 +08:00
    @exoticknight 只是写着学习用的,对比优势就是个随机读性能好些,基本和 redis 的随机读差不太多
    funer
        23
    funer  
    OP
       2016-05-05 08:24:24 +08:00
    @tabris17 没做到一致性的保证~~~
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1113 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:49 · PVG 04:49 · LAX 13:49 · JFK 16:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.