`
zl198751
  • 浏览: 273449 次
  • 性别: 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上.

分享到:
评论

相关推荐

    Oracle中BDB数据库的使用方法

    Oracle的BDB数据库以键/值的方式来存储数据,数据的存取非常快,而本身又小,在开发小型项目的时候可以采用。

    BDB数据库

    BDB数据库BDB数据库

    BDB 数据库9.0

    如有疑问,联系QQ:286027084 或:hb_sunwei@163.com

    BDB数据库测试工具

    BDB2007,无需安装,数据库设计工具

    bdb.rar_ oracle bdb_.b_bdb_bdb sql_bdb数据库

    bdb很重要的数据库, 高效!这是bdb入门学习的好资料

    BDB数据库管理工具(PJ)

    BDB,非常好用的数据库管理工具(PJ)

    BDB 数据库建模工具

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

    BDB 数据库 64位 系统

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

    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 Developer Edition v3.0

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

    BDB 嵌入式数据库 32位 系统

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

    BDB 2007数据库开发工具

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

    BDB内存数据库

    BDB内存数据库,由ORACLE提供

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

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

    数据库设计工具BDB V1.71

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

    数据库设计和数据库部署软件BDB 2007参考手册

    BDB 2007是由贝恩软件(Bainsoft)发布的数据库设计和数据库部署软件。 支持Oralce、MS SQLServer、MySQL、Access、SQLAnywhere 和Sybase数据库。 BDB最新版本可从贝恩主页www.bainsoft.com下载。

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

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

    数据库设计和部署软件BDB 专业版V2.6

    <br>您可以通过BDB来简化软件开发和部署过程: <br>1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 <br>2,数据库...

    数据库系统原理:BDB5 数据库设计.ppt

    数据库系统原理:BDB5 数据库设计.ppt

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

    此软件给数据库工作人员提供了和好的操作平台,设计数据库更加简单,容易,方便。它具有强大的数据库设计软件。

Global site tag (gtag.js) - Google Analytics