berkeley db(BDB)详解
berkeley db(间程bdb)是由sleepycat公司开发、后来被oracle收购的嵌入式间质性数据库引擎,属于文件型数据库,无独立服务进程,直接链接到应用程序进程内运行,不需要像mysql、postgresql那样启动后台服务。
- 本质:一套c语言编写的数据库函数库(静态库/动态库libdb.so)
- 定位:嵌入式本地持久化存储,常用于系统工具、服务做本地小型数据持久化。
- 典型应用:rpm包数据库、sendmail、openldap、subversion、yum早期版本等。
一、BDB核心特性:
1、嵌入式无服务:
应用直接调用bdb库操作本地.db数据库文件,没有监听端口、没有数据库服务,进程退出数据落盘到本地文件。
2、多种存储访问结构
- b+树(btree):有序键值存储,rpm默认使用
- 哈希表(hash):无需快速查找
- 队列(queue)、固定记录存储(recno)
3、完整事务acid、mvcc、锁机制、崩溃恢复
支持事务、回滚、数据锁、多进程并发读写,断电不会损坏库,这也是rpm用它的核心原因。
4、多进程安全访问
可以多个进程同时打开同一个bdb数据库文件,内部自带文件锁、页级锁保证并发安全。
5、c语言原生开发,体积小、性能高
非常适合linux系统底层工具使用。
二、BDB核心文件与架构
1、数据库主文件xxx.db
实际存储键值数据、b+树索引、数据页。
2、日志文件log.
事务wal预写日志,
