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预写日志,