简介:
        Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上,其设计思想是简单、小巧、可靠、高性能。Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。
2.0版本或以上的Berkeley DB由Sleepycat Software公司开发,并使用基于自由软件许可协议/私有许可协议的双重授权方式提供,附有源代码。开发者如果想把Berkeley DB嵌入在私有软件内需要得到Sleepycat公司的许可,若将软件同样遵循GPL发布,则不需许可即可使用。而2.0版本以下的则使用BSD授权,可自由作商业用途。
        Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在这以后,Berkeley DB得到了广泛的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。

Berkeley DB的当前最新发行版本是4.7.25。值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持(目前已经支持SQL),也不提供数据库常见的高级功能,如存储过程,触发器等。
结构:
        Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持其他的数据库查询语言,最新的版本已支持sql,不支持表结构和数据列。 访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。
        尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。
        DB中核心数据结构在使用前都要初始化,随后可以调用结构中的函数(指针)完成各种操作,最后必须关闭数据结构。从设计思想的层面上看,这种设计方法是利用面向过程语言实现面对对象编程的一个典范。
Berkeley DB数据访问算法
        在数据库领域中,数据访问算法对应了数据在硬盘上的存储格式和操作方法。在编写应用程序时,选择合适的算法可能会在运算速度上提高1个甚至多个数量级。大多数数据库都选用B+树算法,DB也不例外,同时还支持HASH算法、Recno算法和Queue算法。接下来,我们将讨论这些算法的特点以及如何根据需要存储数据的特点进行选择。
B+树算法
        B+树是一个平衡树,关键字有序存储,并且其结构能随数据的插入和删除进行动态调整。为了代码的简单,DB没有实现对关键字的前缀码压缩。B+树支持对数据查询、插入、删除的常数级速度。关键字可以为任意的数据结构.
HASH算法
        DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。
要求每一个记录都有一个逻辑纪录号,逻辑纪录号由算法本身生成。实际上,这和关系型数据库中逻辑主键通常定义为int AUTO型是同一个概念。Recho建立在B+树算法之上,提供了一个存储有序数据的接口。记录的长度可以为定长或不定长。 和Recno方式接近, 只不过记录的长度为定长。数据以定长记录方式存储在队列中,插入操作把记录插入到队列的尾部,相比之下插入速度是最快的。
        对算法的选择首先要看关键字的类型,如果为复杂类型,则只能选择B+树或HASH算法,如果关键字为逻辑记录号,则应该选择Recno或Queue算法。当工作集关键字有序时,B+树算法比较合适;如果工作集比较大且基本上关键字为随机分布时,选择HASH算法。Queue算法只能存储定长的记录,在高的并发处理情况下,Queue算法效率较高;如果是其它情况,则选择Recno算法,Recno算法把数据存储为平面文件格式。
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中属于高级特性,本质上看,环境是多个数据库的包装器。当一个或多个数据库在环境中打开后,环境可以为这些数据库提供多种子系统服务,例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。
VC6.0 编译环境配置
操作系统:winxp

VC环境:VC6.0
必需文件:Berkeley DB安装文件(db-<?xml:namespace prefix = st1 />.msi)
步骤:
1、运行db-4.7.25.msi,安装Berkeley DB
2、Build Berkeley DB
1〉用VC6.0 打开工程
(C:\Program Files\Oracle\Berkeley DB \db-4.7.25\build_windows)
2〉打开VC的build下拉菜单,选择Set Active Configuration,然后选择build配置,这里选择了win32 release。
3〉按F7编译
☆     编译后在Release中生成了文件libdb47.lib
VC环境配置
1、选择project->settings->c++,选择code generations,Use run-timelibrary选择debug multithreaded dll选项。
2、选择Tools->options->directories
在include files的路径列表中添加:
C:\Program Files\Oracle\Berkeley DB \INCLUDE
C:\Program Files\Oracle\Berkeley DB \db-4.7.25
在library files的路径列表中添加:
C:\Program Files\Oracle\Berkeley DB \db-4.7.25\build_windows\Release
3、添加libdb47.lib到project->settings->link的general选项卡的Object/Modules中。
多个lib文件用空格分开。

Berkeley DB介绍相关推荐

  1. Berkeley DB的介绍

    Berkeley DB的介绍 Berkeley DB的访问方法有四种BTree.Hash.Queue.Recno 他们在DB创建时选择,而且只能在创建时选择.一点选定某一个访问方法, 在使用中不能改变 ...

  2. BDB (Berkeley DB)数据库简单介绍(转载)

    近期要使用DBD,于是搜了下相关的资料,先贴个科普性的吧: 转自http://www.javaeye.com/topic/202990 DB综述 DB最初开发的目的是以新的HASH訪问算法来取代旧的h ...

  3. Berkeley DB(BDB)介绍

    Berkeley DB是一个开放源代码的内嵌式数据库管理系统,能够为应用程序提供高性能的数据管理服务.应用它程序员只需要调用一些简单的API就可以完成对数据的访问和管理.与常用的数据库管理系统(如My ...

  4. Berkeley DB (DB)介绍

    Berkeley DB (DB)是一个高性能的,嵌入数 据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定.Berkeley DB可以保存任意类型的 ...

  5. berkeley db mysql_BDB:源自 Berkeley DB,事务型数据库

    数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得特定的功能. ...

  6. Java那些事之Berkeley DB

    最近一直在使用java,随着使用时间的加长,对java也有了更深入的了解.从今天开始,我会写一些关于java的专题内容,希望大家喜欢,也希望各位多多讨论指正. 这一次先介绍一下Berkeley DB的 ...

  7. Berkeley DB基础教程

    一.Berkeley DB的介绍 (1)Berkeley DB是一个嵌入式数据库,它适合于管理海量的.简单的数据.如Google使用其来保存账户信息,Heritrix用其来保存froniter. (2 ...

  8. berkeley db java edition 源码,Berkeley DB Java Edition

    本来想写一篇,发现网上有一篇已经写的很好了,所以稍微加一些介绍,其他部分尤其是去看它的吧.附带自己写的一个connection 代码. 简介 Berkeley DB(BDB)是一个高性能的,嵌入式键值 ...

  9. Berkeley DB Java Edition

    一. 简介Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据.l 能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不 ...

最新文章

  1. Android启动脚本init.rc(2)
  2. 算法试题 - 找出最小 k 个数
  3. win10系统定位服务器地址,win10系统定位服务器地址
  4. Windows校验文件哈希hash的两种常用方式
  5. java 反射 成员变量_java基础--反射(成员变量)
  6. PC软件开发技术之二:用C#开发基于自动化接口的OPC客户端
  7. Mr.J--HTTP学习笔记(二)-- URL详解
  8. 天 月_财务结算专业术语快来学习!月结和月结30天的区别
  9. 中间人攻击利用框架bettercap测试
  10. VR+教育 虚拟现实(VR)智慧教室整体解决方案
  11. 集成电路那些事儿:CMOS模拟集成电路版图基础
  12. 修复win7本地服务器,win7开启本地服务器配置
  13. centos 基础镜像中安装失败,提示:Error: Failed to download metadata for repo ‘AppStream‘: Cannot prepare internal
  14. 淘宝直播的定义,淘宝直播小技巧介绍,以及淘宝有哪些推广渠道和展示位?
  15. mybatis在工作中的使用简介
  16. 量子信息matlab,matlab在量子力学中的应用.PDF
  17. ArcGis Engine二次开发入门(1)
  18. 《电子元器件的可靠性》——2.4节电子元器件的失效规律
  19. Overleaf (LaTex) 使用笔记(自用)
  20. html自动展示视频,html5纯css3带自动视频播放的iPhone4手机360度旋转展示

热门文章

  1. 2021年知到网课《艾滋病性与健康》第一单元考试答案
  2. C语言-switch-case语句与多分支结构
  3. 【Linux命令】curl 命令
  4. 语篇分析之连接词分析
  5. STM32 EXTI外部中断及NVIC的抢占优先级和响应优先级解释
  6. Base64转码和字符串互转
  7. 文笔极佳的郭靖夫妇悼文
  8. Linux命令--mkdir命令:创建目录(文件夹)
  9. Java学习路线!Javacad二次开发
  10. 金山发布毒霸V及网镖V新品 坚持高定价策略 (转)