全 Java 写的,用来搞键值对存储挺顺手的,尤其是一大堆简单数据的时候,性能还蛮顶的,基本上跑不满它,反倒先被你的硬盘拖慢。

多线程支持也比较贴心,JE 有自己的一套防死锁机制,支持超时,线程多了也不用太担心卡死,响应还挺快的。

事务是 JE 的强项,支持 ACID,搞银行、积分、库存这种要强一致性的场景,用它挺靠谱。你可以放心搞批量写入,数据安全感还不错。

二级数据库这个功能蛮实用的,适合你要搞复杂查询的时候,像用一级键找二级键,组合着用,数据关系一下就清晰了。

内存缓存也比较给力,数据会优先走RAM 缓存,IO 压力小,读取速度能跟得上,适合做一些高频读写的小服务。

JE 的日志系统设计得也挺细,日志文件像00000.jdb这样一个个往后追加,写满了 10MB 就自动开新文件,清理得也比较智能,不过别忘了,清洁器清理空间不是实时的,关库之后最好手动调用一下。

平时写入到 20MB 左右,系统会自动做个检查点,不然你写太猛了,回收跟不上,硬盘容易炸。注意哦,日志文件里数据和事务是混一起的,跟 C 版本不太一样。

环境创建这块,你要先用Environment对象搞一个环境,路径必须存在,要不然直接给你报错。支持setAllowCreate(true),就是目录不存在时帮你顺手建一个,挺方便的。像这样:

EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(true);
Environment myDbEnvironment = new Environment(new File("envHome"), envConfig);

常见异常也别怕,像DatabaseNotFoundExceptionDeadlockExceptionRunRecoveryException,多半都是环境配置不对或者线程冲突,早点排查挺好搞定的。

如果你打算搞个轻量级、本地嵌入式的小数据库,尤其又喜欢 Java,那可以去 Oracle 官网下个Berkeley DB Java Edition试试,顺便翻翻官方文档,里面还有源码。