特性
- 大型数据库的支持:它支持从1到数百万级的数据量,数据库的大小限制基本上受限于你的硬件支持。
- Database Environment:Database Environment提供了一个单元的封装和管理一个或多个数据库。Database Environment也是内部资源管理的一个单元,如内存中的缓存和后台线程。最后,使用它管理并发性和事务。请注意,所有应用程序使用JE都需要使用Database Environment。
- 多线程,多进程支持:JE是专为控制多线程设计的。读写操作都可以是多线程。JE使用记录级锁定为线程应用程序提供高并发性。此外,JE使用死锁超时检测的机制来确保不会有两个线程无限期的死锁。JE允许多个进程访问同一个DB,但在这种情况下, Berkeley 只允许一个线程进行写操作,读操作随意。
- 事务:原子性,可恢复,隔离性。
- 内存Cache:为了减少IO操作提高性能,将数据暂存在内存里面。
- 索引。
- 日志文件:JE数据是存储在主目录下一个或多个数字命名的日志文件。日志文件一次写成并且非常便于跨平台的移植。
- 后台线程:JE提供了几个线程为你管理内部资源。 checkpointer是负责数据库中的数据刷新到磁盘上的;compressor线程从数据库中删除由于删除活动产生的子树是空的数据;cleaner线程负责清理和删除不需要的日志文件,从而帮助您节省磁盘空间。
- 备份和恢复:JE的备份就是将log文件copy到一个安全的存储介质, 它的灾后重建的做法就是把备份的日志文件拿出来,放到原位置, 重启JE即可。
1. 自定义对象和序列化对象的区别. 为啥自定义对象不用序列化了啊?
bdb 序列化的目的应该是压缩数据大小吧
2. java版本中如何设置存取方式为Hash文件?
3. 个人觉得Bdb一个最大的问题是目前不支持网络访问啊,浪费了几天的时间。。。。。
还是试试Mongodb吧