引言
在历经版本号修改(2.8版本直接跳到3.0版本)和11个rc版本之后,MongoDB 3.0于2015年3月3日正式发布。可以毫不夸张的说,该版本的新增特性标志着MongoDB这款典型的NoSQL数据库已经进入了一个全新的发展阶段。本文以下内容会逐个盘点3.0版本的新增特性。
插件式存储引擎API
MongoDB
3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MySQL的设计理念。目前除了早期的MMAP存储引擎外,WiredTiger和RocksDB均已完成了对MongoDB的支持,前者更是在被MongoDB公司收购后更是直接引入到了MongoDB
3.0版本中。插件式存储引擎API的引入为MongoDB丰富自己武器库以处理更多不同类型的业务提供了无限可能,内存存储引擎、事务存储引擎甚至Hadoop在未来都有可能接入进来。
WiredTiger存储引擎
如果说插件式存储引擎API为MongoDB 3.0打造了一个武器库,那么WiredTiger绝对是武器库中第一枚也是最重要的一枚重磅炸弹。因为MMAP存储引擎自身的天然缺陷(耗费磁盘空间和内存空间且难以清理,库级别锁),MongoDB为数据库运维人员带来了极大痛苦,甚至一部分人已经开始转向TokuMX,尽管后者目前也不甚稳定。意识到这一问题的MongoDB,做出了有钱任性的决定,直接收购存储引擎厂商WiredTiger,将WiredTiger存储引擎集成进3.0版本(仅在64位版本中提供)。那么这款走到聚光灯下的存储引擎究竟具备哪些值得期待的特性呢?
1、文档级别并发控制
WiredTiger通过MVCC实现文档级别的并发控制,即文档级别锁。这就允许多个客户端请求同时更新一个集合内存的多个文档,再也不需要在排队等待库级别的写锁。这在提升数据库读写性能的同时,大大提高了系统的并发处理能力。关于这一点的效果从监控工具mongostat就可以直接体现出来,旧版本的监控指标会有locked
db这一项(该项指标过高是mongo使用人员的一大痛点啊),而新版的mongostat已经看不到了。
MongoDB 2.4.12版本
- $ /home/mongodb/mongodb-linux-x86_64-2.4.12/bin/mongostat –port 55060
- insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn time
- *0 *0 *0 *0 0 1|0 0 18g 18.3g 16.1g 0 ycsb:0.0% 0 0|0 0|0 62b 2k 1 13:04:01
- *0 *0 *0 *0 0 1|0 0 18g 18.3g 16.1g 0 ycsb:0.0% 0 0|0 0|0 62b 2k 1 13:04:02
- *0 *0 *0 *0 0 1|0 0 18g 18.3g 16.1g 0 ycsb:0.0% 0 0|0 0|0 62b 2k 1 13:04:03
新闻名称:MongoDB3.0新增特性-创新互联
当前链接:http://scyingshan.cn/article/djedss.html