热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

"Berkeley DB"数据库的优点和不足之处

来源: 作者: 时间:2008-01-20 Tag: 点击:

Sleepycat软件公司出品的Berkeley DB是一种在特定的数据管理应用程序中广泛使用的数据库系统,在世界范围内有超过两亿的用户支持.许多世界知名的厂商,像Amazon, AOL, British Telecom, Cisco Systems, EMC, Ericsson, Google, Hitachi, HP, Motorola, RSA Security, Sun Microsystems, TIBCO 以及 Veritas都依赖于BDB为他们的许多关键性应用提供快速的,弹性的,可靠的,并且高性价比的数据管理.

1.BDB的解释:

mysql就是用BDB实现的(mysql的后台) 。mysql快,BDB比mysql还要快N倍。

BDB并发高于RDBMS。

容量支持可达256TB。

基于HASH支持select数据比RDBMS快。

 

2.BDB数据库与其它的几种数据库的比较。

BDB数据库不同与其他几种数据库–关系型(Relational databases),面向对象型(Object-oriented databases),网络数据库(Network databases),它是一种嵌入式(embeded databases)数据库。

 

下面先简要说说BDB与其它几种数据库的区别:

(1)它们几乎都无一例外的采用了结构化查询语言(SQL),而BDB没有。

(2)它们几乎都无一例外的采用了客户/服务器模型,而BDB采用的是嵌入式模型。

 

3. 下面是在网上找的一些有关BDB的资料,解释了BDB之所以会和当前流行的大多数数据库不同的一些原因,所引资料未注明出处,后面的翻译是我自己加的:

 

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

 

(2) BDB之所以是嵌入式数据库是因为它是直接连到应用程序中的。它和应用程序在同一内存空间运行。其结果是,不管应用程序是运行在同一台机器上还是运行在网络上,在进行数据库操作时,它都无需进行进程间通信。BDB为许多编程语言提供了函数接口,这些语言包括C, C++, Java, Perl, Tcl, Python, 和 PHP。所有的数据库操作都发生在函数库内部。多个进程,或者是一个进程中的多个线程,都可以同时使用BDB,因为它们实际是在调用BDB函数库。一些像 locking, transaction logging, shared buffer management, memory management等等之类的低级服务都可以由函数库透明地处理。

 

(3) BDB函数库是高度可移植的。它可以运行在几乎所有的UNIX和LINUX系统之上,也支持WINDOWS和多种嵌入式实时操作系统。它既可以运行在32位系统上,也可以运行在64位系统上。它活跃在高端服务器,桌面系统,掌上电脑,set-top boxes,网络交换机以及其它的一些领域。一旦BDB被连接到应用当中以后,终端用户一般是不知道后端数据库的存在的。

 

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

 

(5) BDB在嵌入式应用方面的性能比关系型数据库和面向对象的数据库优越的原因是多方面的。首先,因为函数库和应用是运行在同一地址空间中的,省掉了数据库操作时的进程间通信。而众所周知,不管是在单机上还是在分布式系统上,进程间通信所花的时间远多于函数调用所要的时间。其次,因为BDB 对所有的操作提供了简洁的函数调用接口,无需对查询语言进行解析,也不需要预执行。



相关文章:
SQLite3 C/C++ 开发接口简介(API函数) 二
SQLite3 使用教学
Scaling out MySQL - Hardware today and tomorro
SQLite适用的范围
sybase cursor declare
SQL语句大全精要
用户配额
decode函数
Oracle 数据库创建表空间、创建用户指定表空间
MySQL教会我使用GnuPG验证软件包
MySQL中MyISAM引擎与InnoDB引擎性能简单测试
initdb
mysqladmin在线帮助文档
CentOS 4.7 安装Oracle 9.2.0.4的一些问题
文本如何导入oracle(sqlldr 的用法)
ORA-00600: 内部错误代码,自变量: [16201], [],
分布式Oracle的database link
install a MySQL source distribution
Mysql备份脚本(未验证)
oracle 9.2.0.1 update 9.2.0.5
每小时Dump所有mysql数据库到NAS存储设备上
Oracle SCN机制解析
Account LOCKED(TIMED)
MySQL数据库5.0的my.cnf配置选项
oracle存储过程中调用其他用户的表
修改sqlplus提示符
MYSQL建表实例
一些对Mysql DBA有用的脚本
Oracle DBA 强悍挑战OS 64位 Solaris 10-真正休
[Bugzilla]由Mysql迁移到Oracle的方法