`
gong1208
  • 浏览: 557131 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MongoDB 2.2版本发布

阅读更多

MongoDB 2.2版本发布

 

摘要:经过近一年开发,MongoDB最新的稳定版2.2发布。重要的新特性包括:聚集框架、多数据中心支持、并发改进、TL集合和Shell改进等。

MongoDB开发团队10gen的CTO Eliot Horowitz刚刚发表博客,宣布最新的稳定版(可以用于生产环境)MongoDB 2.2已经可以下载。距离上一个稳定版本2.0发布的2011年9月,将近一年。

MongoDB是高性能开源文档数据库,也是目前最受关注的NoSQL技术之一,以敏捷、可扩展和对企业应用友好(支持事务,一致性和数据完整性保证,有大企业应用案例)而著称。有人甚至认为LAMP中的M应该用MongoDB取代MySQL,其火热程度可见一斑。使用MongoDB的公司包括Foursquare, Craiglist, 迪士尼,SAP,Intuit,EA等。国内淘宝、大众点评、视觉中国等公司有应用。

MongoDB 2007年由DoubleClick的两位前员工Dwight Merriman和Eliot Horowitz开发。据Merriman回忆,当时他们的计划本来是要建立一个与GAE和Windows Azure类似但完全由开源技术支撑的云平台,但发现找不到合适的开源数据库技术,于是自己动手。没想到最后这个数据库技术反而成了公司的主营业务。有意思的是,10gen这个公司实际上隶属于Dwight Merriman和DoubleClick原CEO Kevin Ryan一起创办的AlleyCorp,旗下还有Business Insider和Gilt Groupe两家知名公司,而且业务完全不同。

 

8月29号,MongoDB发布了其2.2版本,2.2 版本可以看作是2.0 版本的功能增强版,本次改进最大的亮点在于其并发性能的提升,我们能够看到,广受诟病的全局锁已经在这一版中被拿掉,取而代之的是DB级别的锁,而且collection 级别的锁也不远了。

 

下面就看看2.2 版本的几个新功能吧:

1.并发性能增强

如上面所说,MongoDB 2.2版本中不再有凌驾于整个daemon上的全局锁,而是将锁的粒度减小到了DB级别。并且按MongoDB 的CEO Dwight Merriman所说,这次虽然没有一步到位的将锁粒度改到collection级别,但是从全局锁到DB 锁这一步,已经完成了锁粒度细化的最艰难部分工作,相信collection级别的读写锁会很快到来。

除了减小锁粒度外,MongoDB对2.0 版本中的锁抑制功能也进行了一些增强,引入了PageFaultException 架构来进行锁抑制的判定。

感兴趣的朋友可以看看这个演讲及PPT:http://www.10gen.com/presentations/concurrency-internals-mongodb-2-2

2.新的统计框架

统计操作一直不是MongoDB 的强项,这次版本MongoDB 对统计工作的易用性又进行了提升。在新的统计框架中,用户不需要再使用mapreduce方法去进行数据统计,而是使用统计框架提供和各种方便易用的函数来实现。这个在NoSQLFan之前的文章中也有介绍,见:http://blog.nosqlfan.com/html/3648.html

3.Tag Aware Sharding

在2.2版本中,可以人为的对数据的分片方式进行一些控制,从而使得数据能放到合适的分片节点上(这里所谓的合适,通常来说就是数据离要使用它的应用层更近)。具体的做法是通过对分片节点打tag标识,再将sharding key 按范围对应到这些标识上。比如我们设定sharding key在范围 [a, b]之间时,数据需要放到tag为BeiJing的节点。在[b, c]之前,数据放到tag为TianJin的节点。然后我们再对不同的分片节点打上不同的tag。这样对应sharding key在某个范围内的数据就会在我们的控制下存储到指定的分片节点上了。

详见:http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding

4.TTL的collection

我们知道,MongoDB的capped collection,它保持数据在一定大小和条数范围内,在collection大小超量后,采用移除老数据的方式对空间进行循环利用。capped collection被大量使用在日志及队列系统中,具有很高的性能,但是其灵活性一直不高。

在2.2版本中,MongoDB又引入了TTL collection(TTL == time to live),你可以在给某个字段建立索引的时候指定多长时间后删除掉对应的记录。建立索引的字段必须是date类型的。这样我们就可以灵活的控制数据的过期,可以更方便的存储和管理临时数据。

详见:http://docs.mongodb.org/manual/tutorial/expire-data/

更多介绍:http://docs.mongodb.org/manual/release-notes/2.2/

下载地址:http://www.mongodb.org/downloads

 5.Shell改进

包括Unicode支持、多行命令支持、bash风格编辑支持等。

 

原文参考:http://www.csdn.net/article/2012-08-29/2809353-MongoDB-2.2-Released

                 http://blog.nosqlfan.com/html/4111.html

0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics