Source MongoDB 2.8存储引擎FAQ 2.8-rc0在光棍节的周二发布了,忙着血拼的童鞋们多半没有注意到哈。 2.8的最主要的新功能是支持两个存储引擎: MMAP 和 WiredTiger。其中WiredTiger 支持压缩和文档级锁, MMAP支持集合级锁。 其他更新请看http://docs.mongod
Source
2.8-rc0在光棍节的周二发布了,忙着血拼的童鞋们多半没有注意到哈。 2.8的最主要的新功能是支持两个存储引擎: MMAP 和 WiredTiger。其中WiredTiger 支持压缩和文档级锁, MMAP支持集合级锁。 其他更新请看http://docs.mongodb.org/manual/release-notes/2.8/
以下是关于存储引擎的一些FAQ
存储引擎是数据库管理系统的一个重要组成部分。它的主要职责就是负责把数据存储到硬盘和把数据从硬盘检索出来。MySQL和Riak均支持多个不同的存储引擎。不同的存储引擎对不同的应用需求有特别的优化。如某个存储引擎可以是专为高并发写设计的,而另一个则是为高压缩率设计从而达到节省磁盘空间的目标。
MongoDB 从最初版本一直到2.6都只支持一种基于内存映射技术的存储引擎,现在叫做MMAP v1。随着MongoDB的广泛普及,仅有一个存储引擎方案已经很难满足各种各样的场景需求,如压缩,高并发,文档级锁,内存数据库性能等等。引入API可以让MongoDB,技术合作伙伴,和MongoDB 用户根据性能,可用性,高效性,容量及扩展性等具体需求开发适合于这些场景的存储引擎,从而进一步增加MongoDB的适用性。
以下两个是2.8 支持的2个存储引擎
其他一些正在考虑支持的存储引擎(会在2.8之后的版本实现):
在2.8 MMAP v1 还仍会是默认的存储引擎。3.0以后WiredTiger很可能会成为默认存储引擎。
用户需要对既有的数据执行一个升级操作以使用新的WiredTiger存储引擎。详细的升级文档将随2.8一起发布。基本过程就是通过加一个新的采用新的存储引擎的复制集成员并让之完成initial sync,然后逐渐替换掉老的成员。2.8里对复制集的initial sync有不少性能改善,所以增加一个新成员会比之前速度会有较大提升。
对的。没有影响。
MongoDB
MongoDB 从WiredTiger Data Engine 获得了对源代码的永久授权。
可以的。用户可以在复制集里混用存储引擎。你需要注意一些额外事项,如Oplog的大小要根据各个存储引擎的特点而做不同的计划。另外,备份恢复可能会变得复杂一点因为备份数据可能是一个存储引擎的格式而在恢复的时候可能要求恢复到另一个存储引擎里去。
MMS 和即将发布的 OpsManager 会有以下功能增强:
WiredTiger 和目前的MMAP v1 存储引擎是100%兼容的。用户不需要对程序做任何的修改便可直接使用。有一些状态监控的命令会有一些调整,这些在2.8里会有具体的文档说明。此外,由于WiredTiger会对写性能有极大的提升,以及文档锁的实现,以前的微分片,分库分表及其他的为提高MMAPv1并发率而实现的变通方案将不再需要。我们强烈建议在选择一个存储引擎的时候要把性能测试作为一个必不可少的步骤包含在选型过程中。
一般来说,WiredTiger会对大部分应用场景提供更好的性能表现。在2.8中 MongoDB会支持复制集中存储引擎的混合部署,用户可以很容易地在两个存储引擎中切换。这样可以在测试过程中选择更加合适自己的方案。
目前这个还没有最终确定。2.8 rc0里已经支持Snappy和Zlib压缩并默认开启Snappy压缩。
这个取决于使用场景。我们会在2.8 发布时提供一些这方面的参考。
不一定所有的都会支持。有一些功能如压缩会比较容易实现并已经在2.8 里实现(2.8 已经支持 zlib 和Snappy 压缩),而其他的一些功能则还没有完全和MongoDB整合起来。然而WiredTiger的这些既有功能将大大帮助MongoDB将来版本里面实现这些功能。
如果使用 MMAP v1, 微分片技术在适当的场景下还可以继续使用。对于WiredTiger用户不再需要微分片。因为文档级锁的引入,一个MongoDB实例就可以充分利用所有系统资源。
目前计划是2014年12月。
本文出自:http://nosqldb.org, 原文地址:http://duoyun.org/topic/54643dd5cfc89d5560f1df59, 感谢原作者分享。