Berkeley DB
2016-12-13 18:41
246 查看
我们公司的产品中用到了伯克利db数据库,闲着没事干,学习了一下:
1:Berkeley DB是一个开源的文件数据库,嵌入式数据库系统。介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤。
Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。
2:值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持(目前已经支持SQL),也不提供数据库常见的高级功能,如存储过程,触发器等。
3
Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持其他的数据库查询语言,最新的版本已支持sql,不支持表结构和数据列。
访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。
尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。
4
HASH算法
DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。
5:
Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口,包括:dbm,ndbm和hsearch。
Berkeley DB的核心数据结构
数据库环境句柄DB_ENV:每个DB_ENV相当于一个数据库,它包含了数据库全局信息,比如缓冲区大小、以及对事务、日志、锁等子系统的全局配置信息。
数据库句柄结构DB:每个DB相当于关系数据库的一个表,其中存储了很多key/data pair。DB句柄代表了一个包含了若干描述数据库表属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为
(*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。
数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t
size,分别对应数据本身和数据的长度。
数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录(duplicate
records),即多条记录有相同关键字,在对多重记录的处理中,使用游标是最容易的方式。
数据库环境句柄结构DB_ENV:环境在DB中属于高级特性,本质上看,环境是多个数据库的包装器。当一个或多个数据库在环境中打开后,环境可以为这些数据库提供多种子系统服务,例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。
1:Berkeley DB是一个开源的文件数据库,嵌入式数据库系统。介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤。
Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。
2:值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持(目前已经支持SQL),也不提供数据库常见的高级功能,如存储过程,触发器等。
3
Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持其他的数据库查询语言,最新的版本已支持sql,不支持表结构和数据列。
访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。
尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。
4
HASH算法
DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。
5:
Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口,包括:dbm,ndbm和hsearch。
Berkeley DB的核心数据结构
数据库环境句柄DB_ENV:每个DB_ENV相当于一个数据库,它包含了数据库全局信息,比如缓冲区大小、以及对事务、日志、锁等子系统的全局配置信息。
数据库句柄结构DB:每个DB相当于关系数据库的一个表,其中存储了很多key/data pair。DB句柄代表了一个包含了若干描述数据库表属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为
(*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。
数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t
size,分别对应数据本身和数据的长度。
数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录(duplicate
records),即多条记录有相同关键字,在对多重记录的处理中,使用游标是最容易的方式。
数据库环境句柄结构DB_ENV:环境在DB中属于高级特性,本质上看,环境是多个数据库的包装器。当一个或多个数据库在环境中打开后,环境可以为这些数据库提供多种子系统服务,例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。
相关文章推荐
- Java集合类源码分析
- oracle输出多行多列数据
- 模拟jquery的$()选择器的实现
- 设计模式之状态模式的理解运用
- Spring Boot中使用Spring Security自定义验证
- cartographer_ros+Ubuntu14.04 安装
- jboss服务僵死
- 第六章:如何对内容进行分类
- mongodb基础知识-内嵌文档相关
- Spring Boot 构建应用——整合 Elasticsearch 搜索引擎
- python---filecmp
- 地球坐标 火星坐标 百度坐标 相互转换
- 静态库和动态库的简单区别分析
- weblogic数据源配置oracle and mysql
- ubuntu 用户不在sudoers文件中
- linux VNC配置(解决:关闭防火墙仍不能访问端口的问题)
- java之旅之集合框架
- 简述Socket,IP,TCP三次握手,HTTP协议
- 第五章:怎么寻找内容源
- Javascript面向对象编程(二):构造函数的继承