首页 > Berkeley DB, Berkeley DB JE, Berkeley DB XML, Chao Huang, 程序设计 > BDB在大规模云计算等中的应用

BDB在大规模云计算等中的应用

2009年8月15日 chaohuang

大家好,

像Facebook, linkedin, Google search, twitter等一些大规模分布式的应用上,往往需要部署成千上万的服务器来做集群,要求很高的响应时间和吞吐量,极佳的可扩展性。事实上,在这种分布式场合,传统的关系型数据库就不再合适了。而往往需要的只是一个按主键来访问的key/value 的数据库引擎,并且要求该引擎可以运行在普通硬件上,多平台上。

根据国外的反馈,Berkeley DB在相应场合的部署正越来越热,比如Amazon,Google,EMC等关键性服务上。又比如一些知名的,运行在分布式应用的开源产品上,如MemcacheDB, Project Voldemort, ThruDB, Amazon Dynamo等。

如果,国内有从事相关大规模云计算应用的朋友,欢迎留言。

另外,如果有兴趣从事该方向的朋友,也可以读读Amazon Dynamo的论文: http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html。有问题,欢迎提问。

Berkeley DB 中国开发团队

  1. 2009年8月18日12:15 | #1

    有道理啊。
    个人觉得非常适合网络服务应用开发。原来顾虑用BDB开发商业服务需不需要买License. 仔细了解了BDB的双License。发现如果是自己使用应该是不需要的。如果程序发布/卖到第三方是需要的。
    所以投资BDB还是很有前途的啊。

  2. chaohuang
    2009年8月18日12:39 | #2

    @Anderson Mao
    Anderson, 谢谢你在OTN上的回答 – 关于Fincs的DPL问题。

    现实是,很多公司在自己的内部项目用BDB,主动找到我们来购买服务 – 但按照BDB的双License授权模式,他们并不用付费。举例子来说,Amazon Dynamo完全是自己公司内部的项目,但是Amazon却是我们的付费客户。

    打个比方,有公司选型跟着Oracle走,有公司选择跟Microsoft走; 有公司选择免费的BDB, 有公司选择买BDB服务… 孰优孰劣,看项目和需要了。

  3. 2009年8月20日17:03 | #3

    @chaohuang
    Hi, 刚好前几天公司讲座OpenSource,看了相关Dual License。你说的没错,大公司是可以/需要购买服务(付费)。我的意思是说用户“可以”选择不为内部使用买License。因为使用一个产品,会产生依赖性,会有投资。
    比如一个项目,一开始是非营利的,以后可能转成商业的,或向外服务,或发布。就需要在开始的时候研究第三方工具的License了。

  4. chaohuang
    2009年8月20日17:35 | #4

    @Anderson Mao
    你的观点很好 – 内部项目本身也会有变化,当它变成一个商业项目,会涉及到其中开源产品的版权问题了。像你说的,这一点是需要决策者在项目前期要考虑好的。

    另外,在一些关键性的项目上,比如实时交易系统、呼叫中心、大量数据归档系统等,很多时候会购买Oracle BDB – 很重要的考虑是买Oracle的服务支持。举个例子来说,美林证券是Berkeley DB Java版的客户,遇到栈溢出的异常,于是找到我们。结果发现是他们自己程序本身的错误。但是在那种关键应用上,如果不是买了服务,出了问题估计会很麻烦。

    当然,购买与否考虑的因素还有很多。趁此机会,有兴趣的读者,不妨在此沟通一下对开源版权的看法。毕竟,对我们IT从业人员来说,版权保护太重要了 – 盗版伤害到绝大多数IT人,不是吗?

  5. 2009年8月21日14:08 | #5

    各位好,哪个地方能够看到关于bdb架构和物理存储机制的技术文档,最近分析一个关于bdb4.6.21(已经改过,因为需要运行于linux的全内核态)的故障,参考OTN上类似的bug单讨论,都不靠边。

    Thanks

  6. chaohuang
    2009年8月21日17:36 | #6

    @edgar
    Google或者上OTN找找看吧。我们的内部资料也不方便给你。

    关于你的故障,如果你是付费客户,可以去Oracle metalink 发一个Service Request;如果是免费使用BDB的,欢迎去OTN论坛提问。

  7. yuping322
    2009年8月21日20:35 | #7

    HI,有没有好的方式BDB扩展到多机情况下的好的解决方案?
    BDB的SecondDatabase索引能和主Database分开存储吗?
    谢谢!

  8. chaohuang
    2009年8月24日11:39 | #8

    @yuping322
    有没有好的方式BDB扩展到多机情况下的好的解决方案?- 有,请参考上文提到的Amazon Dynamo的论文。涉及到的一些思想大概有: 分区、hash ring、cluster等。

    BDB的SecondDatabase索引能和主Database分开存储吗?- 可以。在BDB里面Secondary Database索引,也是一个物理上的数据库,可以存储到任意指定目录 – 和主database是一样的。比方说,你可以建立主DB时候,指定存储到”/db1″目录;创建Secondary DB到”/db2″。

  9. 天门冬
    2009年9月3日10:35 | #9

    你好,请问Secondary Database的概念是什么?在什么情况下需要使用到呢?

  10. chaohuang
    2009年9月3日10:53 | #10

    @天门冬
    Secondary Database实际上是索引(index)。比如,在Oracle 10g中,有个employee table {empid, empname, age, sex, address, ..},对照的在BDB的key/data定义时,empid可以定义为key,其余字段定义为data {empname, age, sex, address, ..}。于是,当你需要经常按empname查询时,你可以在data.empname上建立索引/Secondary Database。

  11. crab
    2009年9月16日17:20 | #11

    对BDB感兴趣,但是不知道BDB商业授权费用会不会很高?

  12. chaohuang
    2009年9月16日17:41 | #12

    @crab
    Berkeley DB (包括Java版和XML) 有很灵活的授权模式,它相对于好多其他商业产品来说是很便宜的了。个人觉得,你完全不用担心 – 你甚至可以在你的项目/产品销售以后再付费。

    你打算怎么用BDB呢?方便的话,给我一个email: chao.huang @ oracle.com (注意去掉空格).

本文的评论功能被关闭了.
Դ