专业平台定制与开发
半实物仿真与硬件在回路系统仿真平台定制
故障诊断测试平台
三维视景仿真系统集成
面向应用的嵌入式系统开发咨询与技术培训
  代理产品
系统可测试性、诊断及维护性分析设计软件——TEAMS™
WCET(最差情况执行时间)分析工具——Rapitime
嵌入式操作系统及其开发环境——VxWorks
开源的嵌入式实时数据库——Berkeley DB
飞行仿真开发环境——D-Six
嵌入式计算机硬件产品
多通道视频播放软件-IMMERSIVE
 
开源的嵌入式实时数据库——Berkeley DB

1. Berkeley DB 概述
嵌入式数据管理
    目前,应用程序已经从数据中心转移出来。与以前的数据中心应用程序相同,这些应用程序通常需要为他们操作的数据提供快速、可伸缩和可靠的存储服务。与数据中心应用程序不同的是,这些新的应用程序必须自行管理。它们在运行时使用本地数据,无需系统管理员的干预。
    Berkeley DB 的设计就是为了满足上述新一代应用程序的需要。它的运行保证与用户对关键任务企业数据库的期望相同,即提供事务处理、故障恢复、高并发性、可伸缩性以及高可用性复制。但是,Berkeley DB 产品直接链接到使用它们的应用程序的地址空间。Berkeley DB 以应用程序使用的格式存储和检索数据,无需转换成外部关联格式。它为数据访问提供了易于使用的可编程API,免去了 SQL 处理在运行时的开销。最重要的一点是,Berkeley DB 不可见。在应用程序中构建 Berkeley DB 后,最终用户就不再需要考虑数据库系统的安装、配置或维护。

2. Berkeley DB 系统结构
    Berkeley DB由五个主要的子系统构成.包括: 存取管理子系统、内存池管理子系统、事务子系统、锁子系统以及日志子系统。其中存取管理子系统作为Berkeley DB数据库进程包内部核心组件,而其他子系统都存在于Berkeley DB数据库进程包的外部。
    每个子系统支持不同的应用级别。

  • 数据存取子系统
  • 内存池管理子系统
  • 事务子系统
  • Locking子系统
  • 日志子系统

3. BerkeleyDB存储功能概述
    Berkeley DB所管理数据的逻辑组织单位是若干个独立或有一定关系的数据库(database),每个数据库由若干记录组成,这些记录全都被表示成(key,value)的形式。
    如果把一组相关的(key,value)对也看作一个表的话,那么每一个数据库只允许存放一个table,这一点不同于一般的关系数据库。实际上,在Berkeley DB中所提到的“数据库”,相当于一般关系数据库系统中的表;而“key/data”对相当于关系数据库系统中的行(rows);Berkeley DB不提供关系数据库中列直接访问的功能,而是在“key/data”对中的data项中通过实际应用来封装字段(列)。
    Berkeley DB存储系统为应用程序提供了一系列的接口函数,用于对数据库的管理和操作。其中包括:

  • 数据库的创建、打开、关闭、删除、重命名等,以及对数据的检索和增删改操作;
  • 提供一些附加的功能,例如读取数据库状态信息、读取所在文件的信息、读取所在数据库环境的信息、清空数据库的内容、数据库的同步备份、版本升级、提示出错信息等等;
  • 系统还提供了游标机制,用于存取和访问成组的数据,以及对两个或多个相关数据库进行关联和等值连接操作等。

4. Berkeley DB 数据库的优缺点

(1) BDB是一个开放源代码的嵌入式数据库的函数库,它为应用程序提供弹性的,高性能的,transaction-protected的数据库管理服务,BDB为数据的访问和管理提供了简单的应用程序接口API。

(2) BDB之所以是嵌入式数据库是因为它是直接连到应用程序中的。它和应用程序在同一内存空间运行。其结果是,不管应用程序是运行在同一台机器上还是运行在网络上,在进行数据库操作时,它都无需进行进程间通信。BDB为许多编程语言提供了函数接口,这些语言包括C, C++, Java, Perl, Tcl, Python, 和 PHP。所有的数据库操作都发生在函数库内部。多个进程,或者是一个进程中的多个线程,都可以同时使用BDB。

(3) BDB函数库是高度可移植的。它可以运行在几乎所有的UNIX和LINUX系统之上,也支持WINDOWS和多种嵌入式实时操作系统。它既可以运行在32位系统上,也可以运行在64位系统上。一旦BDB被连接到应用当中以后,终端用户一般是不知道后端数据库的存在的。

(4) BDB在许多方面都是弹性的。函数库本身非常紧凑,它也支持高强度的并发操作,可以同时允许数以千计的用户在同一个数据库进行操作。在高端服务器领域,BDB是足够小的,它可以在高度受限的嵌入式系统上运行,但却可以利用高达GB量级的内存空间和高达TB量级的磁盘空间。

(5) BDB在嵌入式应用方面的性能比关系型数据库和面向对象的数据库优越的原因是多方面的。首先,因为函数库和应用是运行在同一地址空间中的,省掉了数据库操作时的进程间通信。而众所周知,不管是在单机上还是在分布式系统上,进程间通信所花的时间远多于函数调用所要的时间。其次,因为BDB 对所有的操作提供了简洁的函数调用接口,无需对查询语言进行解析,也不需要预执行。
BDB是一个函数库,和调用它的应用程序是运行在同一地址空间中的。可以把BDB作为数据库管理系统来构建服务器程序。比如,有许多商业的和开源的轻量级目录访问协议(LDAP)服务器都使用BDB存储记录。LDAP客户端通过网络连接到服务器。服务器调用 BDB的API来查找记录并返回给客户。而在它本身而言,BDB却不是数据库的服务器端。所以,BDB是一种完全不同于其它数据库管理系统的数据库,而且它也不是一个数据库服务器端。
当面对的是对性能,规模和可靠性要求都比较高的嵌入式应用的时候,BDB是理想的数据库管理系统。

北京唐诚朗风科技有限公司  版权所有