BDB在大规模云计算等中的应用
2009年8月15日
大家好,
像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 中国开发团队
有道理啊。
个人觉得非常适合网络服务应用开发。原来顾虑用BDB开发商业服务需不需要买License. 仔细了解了BDB的双License。发现如果是自己使用应该是不需要的。如果程序发布/卖到第三方是需要的。
所以投资BDB还是很有前途的啊。
@Anderson Mao
Anderson, 谢谢你在OTN上的回答 – 关于Fincs的DPL问题。
现实是,很多公司在自己的内部项目用BDB,主动找到我们来购买服务 – 但按照BDB的双License授权模式,他们并不用付费。举例子来说,Amazon Dynamo完全是自己公司内部的项目,但是Amazon却是我们的付费客户。
打个比方,有公司选型跟着Oracle走,有公司选择跟Microsoft走; 有公司选择免费的BDB, 有公司选择买BDB服务… 孰优孰劣,看项目和需要了。
@chaohuang
Hi, 刚好前几天公司讲座OpenSource,看了相关Dual License。你说的没错,大公司是可以/需要购买服务(付费)。我的意思是说用户“可以”选择不为内部使用买License。因为使用一个产品,会产生依赖性,会有投资。
比如一个项目,一开始是非营利的,以后可能转成商业的,或向外服务,或发布。就需要在开始的时候研究第三方工具的License了。
@Anderson Mao
你的观点很好 – 内部项目本身也会有变化,当它变成一个商业项目,会涉及到其中开源产品的版权问题了。像你说的,这一点是需要决策者在项目前期要考虑好的。
另外,在一些关键性的项目上,比如实时交易系统、呼叫中心、大量数据归档系统等,很多时候会购买Oracle BDB – 很重要的考虑是买Oracle的服务支持。举个例子来说,美林证券是Berkeley DB Java版的客户,遇到栈溢出的异常,于是找到我们。结果发现是他们自己程序本身的错误。但是在那种关键应用上,如果不是买了服务,出了问题估计会很麻烦。
当然,购买与否考虑的因素还有很多。趁此机会,有兴趣的读者,不妨在此沟通一下对开源版权的看法。毕竟,对我们IT从业人员来说,版权保护太重要了 – 盗版伤害到绝大多数IT人,不是吗?
各位好,哪个地方能够看到关于bdb架构和物理存储机制的技术文档,最近分析一个关于bdb4.6.21(已经改过,因为需要运行于linux的全内核态)的故障,参考OTN上类似的bug单讨论,都不靠边。
Thanks
@edgar
Google或者上OTN找找看吧。我们的内部资料也不方便给你。
关于你的故障,如果你是付费客户,可以去Oracle metalink 发一个Service Request;如果是免费使用BDB的,欢迎去OTN论坛提问。
HI,有没有好的方式BDB扩展到多机情况下的好的解决方案?
BDB的SecondDatabase索引能和主Database分开存储吗?
谢谢!
@yuping322
有没有好的方式BDB扩展到多机情况下的好的解决方案?- 有,请参考上文提到的Amazon Dynamo的论文。涉及到的一些思想大概有: 分区、hash ring、cluster等。
BDB的SecondDatabase索引能和主Database分开存储吗?- 可以。在BDB里面Secondary Database索引,也是一个物理上的数据库,可以存储到任意指定目录 – 和主database是一样的。比方说,你可以建立主DB时候,指定存储到”/db1″目录;创建Secondary DB到”/db2″。
你好,请问Secondary Database的概念是什么?在什么情况下需要使用到呢?
@天门冬
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。
对BDB感兴趣,但是不知道BDB商业授权费用会不会很高?
@crab
Berkeley DB (包括Java版和XML) 有很灵活的授权模式,它相对于好多其他商业产品来说是很便宜的了。个人觉得,你完全不用担心 – 你甚至可以在你的项目/产品销售以后再付费。
你打算怎么用BDB呢?方便的话,给我一个email: chao.huang @ oracle.com (注意去掉空格).