`
zl198751
  • 浏览: 278776 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

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

       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 对所有的操作提供了简洁的函数调用接口,无需对查询语言进行解析,也不需要预执行。

       (6) 与其他大多数数据库系统相比,BDB提供了相对简单的数据访问服务。BDB只支持对记录所做的几种逻辑操作。它们是:

       在表中插入一条记录。

       从表中删除一条记录。

       通过查询键(key)从表中查找一条记录。

       更新表中已有的一条记录。

       BDB不是一个独立的数据库服务器。它是一个函数库,和调用它的应用程序是运行在同一地址空间中的。可以把BDB作为数据库管理系统 来构 建服务器程序。比如,有许多商业的和开源的轻量级目录访问协议(LDAP)服务器都使用BDB存储记录。LDAP客户端通过网络连接到服务器。服务器调用 BDB的API来查找记录并返回给客户。而在它本身而言,BDB却不是数据库的服务器端。

       所以,BDB是一种完全不同于其它数据库管理系统的数据库,而且它也不是一个数据库服务器端。

       当面对的是对性能,规模和可靠性要求都比较高的嵌入式应用的时候,BDB是理想的数据库管理系统。但对于要求多种不同服务的应用而言,选择它是不适当的。

       BDB的初衷是提供快速的,可靠的,transaction-protected的记录存储。函数库本身并没有提供对交互查询的支 持,也没有提供 图形化的报表工具,或者一些其它的数据库管理系统提供的服务。我们一直在致力于保持函数库的短小和简练,这样做,可以使得bug出现的机会大大减小,而且 因为只有很少的代码需要执行,我们可以保证数据库一直快速的运行。如果你的应用正好需要的是这样的一套功能的话,那么BDB几乎一定是你的首选对象。

 

 

 

性能测试

http://h-rain.iteye.com/blog/176415

 

零 环境说明:
    所有的数据插入的都是Key=int,Value=int,在循环中递增的.
    本机NTFS的默认簇大小为4K.
    本机配置仅仅影响绝对值.相对值是可比较的:
        OS=WinXP SP2;RAM=1G;CPU=AMD Athlon 64 X2 Dual 5000+;Disk=160G  
    测试的实际数据量为:300*10000*2*sizeof(int)/1024/1024~=22.89MByte
    下面所有的测试结果的单位都是秒.
    编译器: C++ builder 6.0(使用bcb编译BDB源码,形成LIB库后,直接链接到测试程序中.没有测试DLL的形式.)
    BDB版本:4.6.21.NC

 

 一 测试页尺寸对读写性能的影响:
    记录数量 =300万 缓存尺寸=0M
读写\页尺寸 1K 2K 4K 8K 16K 32K
B+写 94.94 84.83 82.73 97.16 142.67 232.11
HASH写 346.16 320.41 288.36 295.19 599.66 867.03
B+读 4.22 4.06 3.86 3.91 3.80 3.78
HASH读 8.25 7.94 5.42 5.41 4.99 4.88

结论:页尺寸与文件系统的簇大小相同时,写入性能最佳,读取性能中等.

在0M缓存的时候,B+的性能要比HASH好得多.

 

 

 二 测试cache缓存大小对读写性能的影响:
    记录数量=300万  页尺寸=4K   真实数据量=22.89MByte 数据库文件大小=80M
读写\缓存 0M 10M 20M 40M 80M 160M 320M
B+写 85.06 88.66   133.31   164.81   15.31   15.34   15.27
HASH写 292.91 224.47   180.76   95.28   20.11 20.06 20.05
B+读 3.98 4.17   4.86   9.56   3.83   3.81   3.80  
HASH读 5.53 5.83   5.83 8.16 5.20 5.08 5.16

 

    记录数量=600万  页尺寸=4K   真实数据量=45.78MByte 数据库文件大小=160M
读写\缓存 0M 40M 80M 160M 320M
B+写 259.39   1198.27   1017.94   34.59   34.30  
HASH写 1889.32   1279.95 563.12   40.67 40.89
B+读 7.89   14.02 22.84   7.97   8.03  
HASH读 11.17   16.81 11.66 10.39 10.88

 

结论:
    对于缓存大于数据库文件尺寸的时候,没有太多可说的,操作都在内存中,速度非常快.   
    对于大数据量的读取,两组对比都比较清晰的说明了一点:缓存的大小对读取记录的性能影响不是很大.
    对于大数据量的写入,缓存对性能的影响就非常可观了,基本可以肯定的是,HASH库缓存越大写入速度越快.   而奇怪的是,B+库在缓存不足的时候,性能反而比0缓存时还要差很多!!
    总的来说,在我的这些测试中,B+与HASH数据库的性能差异很大.

    对于缓存大于物理内存的情况未做测试,估计对性能不会有好的影响,毕竟在这种情况下,效率的瓶颈都是在磁盘的IO上.

分享到:
评论

相关推荐

    BDB数据库测试工具

    "BDB数据库测试工具"是一款专为BDB(Berkeley Database)设计的测试工具,主要用于在2007年版本中对数据库进行性能评估、功能验证和稳定性测试。这款工具无需安装,方便用户快速启动和使用,是开发者和数据库管理员...

    Oracle中BDB数据库的使用方法

    一、BDB数据库的基本概念 1. 键/值对:在BDB中,数据以键和值的形式存储,键是唯一的标识符,值是与键关联的数据。这种模式简化了数据访问,因为可以通过键直接查找对应的值,无需复杂的查询语句。 2. 数据库环境:...

    BDB 数据库9.0

    《BDB数据库9.0详解》 BDB(Berkeley DB)是由Oracle公司开发的一款开源、嵌入式、键值对存储的数据库管理系统,广泛应用于各种应用程序中,特别是在需要高效、可靠的本地数据存储时。BDB数据库9.0版本是其发展的一...

    bdb.rar_ oracle bdb_.b_bdb_bdb sql_bdb数据库

    bdb数据库是一种高效、重要的数据存储解决方案,特别是在Oracle公司提供的产品中占据着一席之地。bdb全称为Berkeley DB,它是一种轻量级、嵌入式数据库管理系统,常用于需要快速、本地化数据存储的应用场景。Oracle ...

    BDB数据库

    **BDB数据库详解** BDB,全称Berkeley DB,是由甲骨文公司(Oracle)开发的一款开源、高性能、轻量级的嵌入式数据库系统。它最初由Sleepycat软件公司创建,后被甲骨文公司收购。BDB数据库在设计时注重效率和可靠性...

    BDB数据库管理工具(PJ)

    **BDB数据库管理工具(PJ)** BDB,全称为Berkeley Database,是由Sleepycat Software开发的一个开源、高性能、嵌入式的关系型数据库系统。它最初由伯克利大学开发,因此得名“Berkeley DB”。BDB以其轻量级、高...

    BDB 数据库 64位 系统

    应用于.NET系统,支持64位操作系统,如果有什么使用上的疑问,请联系我的邮箱:hb_sunwei@163.com或QQ:286027084

    BDB设计数据库的软件很强的

    **BDB数据库设计软件详解** BDB(Berkeley DB)是一种流行的数据存储系统,由甲骨文公司开发,主要用于构建高性能、轻量级的应用程序,尤其是那些需要高速数据访问和低延迟的应用。作为一款强大的数据库设计软件,...

    BDB 数据库建模工具

    BDB表类型提供了MySQL用户长久期盼的功能,即事务控制能力。在任何RDBMS中,事务控制能力都是一种极其重要和宝贵的功能。事务控制能力使得我们能够确保一组命令确实已经全部执行成功,或者确保当任何一个命令出现...

    全功能的数据库工具BDB v2.8

    BDB是贝恩软件(www.bainsoft.com)发布的数据库设计和数据库部署软件。 支持Oracle、SQLServer、MySQL、Access、SQLAnywhere和Sybase。 <br>BDB同时是非常好用的SQL智能化查询分析工具。 <br>如果您目前...

    BDB 嵌入式数据库 32位 系统

    **伯克利数据库(Berkeley DB,简称BDB)** 伯克利数据库是Oracle公司提供的一款开源、嵌入式、键值对存储的数据库管理系统,主要用于处理轻量级数据存储和检索任务。它最初由伯克利大学开发,因此得名。在.NET环境...

    bdb 数据库linux

    Berkeley DB is a family of embedded key-value database libraries providing scalable high-performance data management services to applications. The Berkeley DB products use simple function-call APIs ...

    bdb练习

    例如,可能包含了一些简单的bdb数据库操作示例,如创建数据库、插入记录、查询记录和事务处理等。也可能有涉及bdb与其他工具集成的案例,如在Java或C++项目中如何引入和使用bdb。 总的来说,这个“bdb练习”旨在...

    BDB内存数据库

    ### BDB内存数据库知识点 #### 一、BDB内存数据库简介 BDB内存数据库是由Oracle提供的高性能内存数据库解决方案。该数据库基于Berkeley DB技术构建,Berkeley DB是一种嵌入式数据库引擎,以其卓越的性能、可靠性和...

    数据库设计工具BDB Developer Edition v3.0

    BDB Developer Edition v3.0 >BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 >目前版本支持的数据库平台: > √ Access > √ MS SQLServer > √ Oracle > √ MySQL > √ SQLAnyWhere...

    BDB 2007数据库开发工具

    <br>此外、在BDB中提供了对开发语言的支持、 其数据库结构定义文件采用XML标准格式、 并且开放了外部读取数据库结构的源程序(C#/Delphi/JAVA)、 您可以通过使用BDB来简化软件开发和部署过程: <br>1...

    数据库设计和部署软件BDB 个人版v2.7

    关于BDB __________________________________________________________ <br> BDB是贝恩软件(www.bainsoft.com)发布的数据库设计和数据库部署软件, 支持Oracle,MS SQLServer,Access,MySQL,SQL...

    各种内存数据库的简单介绍

    BDB数据库区别于其他类型的数据库,如关系型数据库、面向对象数据库、网络数据库等: 1. **不使用SQL**:与大多数其他数据库不同,BerkeleyDB没有采用SQL作为查询语言。 2. **嵌入式模型**:BerkeleyDB采用嵌入式...

    数据库设计工具BDB V1.71

    BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 目前版本支持的数据库平台: √ Access √ MS SQLServer √ Oracle √ MySQL √ SQLAnyWhere 通过其可以方便快捷进行数据库设计,除此之外, 其他一些...

    数据库设计和数据库部署工具BDB 2007 Pro V2.3

    通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以为您的应用程序创建数据库自动安装(或自动升级)程序、 以及实现不同数据库平台间数据库迁移等。 此外、在BDB中提供了对开发语言的...

Global site tag (gtag.js) - Google Analytics