MongoDB 新版本特性和未来规划

  • Roopesh Shenoy
  • 孙镜涛

2013 年 4 月 1 日

话题:安全语言 & 开发架构

MongoDB 2.4 已经发布,该版本增加了一些新特性,如文本搜索、基于哈希的分片、更好的地理空间功能、支持 GeoJSON 以及一些性能和工具方面的提升。我们还和 10gen 讨论了 MongoDB 接下来的路线图。

一些关键的提升如下:

  • 引入了文本搜索,现在是一个测试功能,支持 15 种语言的词干和断词
  • 基于哈希的分片,用于数据交叉传播时不能轻易预测任何自然分片键的情况
  • 地理空间索引和 GeoJSON 支持
  • 安全提升——新的模块化身份认证系统、与 Kerberos 集成以及基于角色的访问控制
  • 一些性能提升,最重要的一项是针对计数和聚合等专门场景的提升
  • 使用 V8 作为 Mongo Shell 内部默认的 JavaScript 引擎(代替了 SpiderMonkey),进而提升了基于 JavaScript 的操作的性能和并发性
  • 用于监控集群状态的其他指标

10gen 还介绍了同 2.4 版一起发布的一款企业版 MongoDB

为了了解新特性和将来规划的更多信息,我们联系了 10gen 的产品市场总监Kelly Stirman

Kelly 解释了为什么集合级别的锁可能对 MongoDB 没有意义:

版本 2.2 对锁做了改进,通过降低锁竞争为写吞吐量带来了实质性的好处。David Mytton 写了一篇非常好的与该主题相关的文章

除了 2.0 和 2.2 版本中所提供的改进,MongoDB 2.4 并没有包含任何额外粒度的锁。我们正在考虑在 2.6 版本中引入文档级别的锁。锁产生的提升已经足够了,集合级别的锁可能不会再带来其他重要的提升了,因此文档级别的锁可能是下一个方向。

关于何时使用基于范围的分片而不是新的基于哈希的分片,Kelly 说:

什么时候使用基于范围的分片呢?如果你的应用程序基于一个分片键范围请求数据,那么这些查询会被路由到合适的分片,通常只有一个分片,特殊情况下可能有一些分片。在一个使用了基于哈希分片的系统中,同样的查询会将请求路由到更多的分片,可能是所有的分片。理想情况下,我们希望查询会被路由到一个单独的分片或者尽可能少的分片,因为这样的扩展能力要比将所有的查询路由到所有的分片好。因此,如果你非常理解自己的数据和查询,那么基于范围的分片可能是最好的选择。

在 MongoDB 2.4 中计数速度最高可以提升 20 倍,同时聚合框架平均要快 3 到 5 倍。Kelly 解释说计数性能的提升受益于 MongoDB 中 B 树遍历性能的一些提升——基于索引的低基数计数是最大的提升。聚合框架性能的提升实际上是对 MongoDB 内部实现做的很多小变动引起的,它们一起带来了具大的好处。

接下来将会增加哪些企业特性:

MongoDB 2.4 在安全和监控领域实现了一些重大举措,但是对于将来的版本我们还有很多计划。我们将沿着认证、授权和审计三个维度进行安全控制。将来版本的 MongoDB 将继续关注这些领域,同时我们还会继续增强我们为 MongoDB 提供的工具。MongoDB 监控服务(MMS)在 MongoDB 社区已经非常流行,有超过 15,000 位用户并在持续增长。我们将继续对 MMS 进行投资,为用户提供免费的云工具,同时提供本地产品作为我们企业订阅服务的一部分。

如果你想了解更多与 MongoDB 2.4 新特性相关的信息,可以阅读发行说明概述

查看英文原文:MongoDB Gets Better Security, Text Search, Performance Improvements – What’s Next?

安全语言 & 开发架构