zoukankan      html  css  js  c++  java
  • 新年新技术:MongoDB 3.0

    前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0。

    What’s new in MongoDB 3.0?

    新的存储引擎WiredTiger

    MongoDB 3.0的存储引擎是插件式的,默认为新增的WiredTiger。WiredTiger相比原来的MMAPv1引擎的优点:

    • 文档级别的锁

    这个改进真是盼望已久啊,一直以来MongoDB的锁粒度都被人诟病,根据我们实际的经验MongoDB在高并发的读写混合场景下性能很差。

    • 更高的压缩比

    新的MongoDB使用了前缀压缩 (Prefix Compression),大大提高了索引数据的压缩比。从我们运维同事的简单的测试结果来看很客观:

    mongodb3.0-compress.png

    • 写性能提高

    官方的说是提高了7-10倍,从我们简单的测试结果看虽然没有那么夸张但确实有不小提升:

    mongodb3.0-write.png

    我们2.x版本测试结果大概2w不到。

    注意:WiredTiger只能用于64位的机器。

    MMAPv1引擎的改进

    虽然新增了WiredTiger,但是对原来的MMAPv1引擎也做了改进。

    • 新的记录分配策略

    MongoDB 3.0使用power of 2 allocation代替原来的动态记录分配,且弃用了paddingFactor

    原来的分配策略在文档变大超过初始分配的大小的时候,MongoDB要分配一个新的记录,并要移动数据和更新索引,导致存储碎片。 power of 2 allocation的策略是分配的记录的大小都是2的次方(32, 64, 128, 256, 512 … 2MB),每个记录包括文档本身和额外的空间——padding,这个机制减少了文档增长的时候记录重新分配和数据移动的操作。

    显然新的策略在处理大文档和文档增长频繁的场景下效率更高,但如果只有插入操纵和所谓的in-place更新操作(不会增长文档大小)那么使用这种策略会很浪费空间,因此MongoDB 3.0允许你关闭这种策略。

    • 集合级别的锁

    虽然没有WiredTiger的锁粒度小,但是相比之前MMAPv1还是挺重要的一个改进。

    Explain

    新增Explain,类似MySQL的查询计划,做性能调优的时候很有用处。

    查询API的改进

    • aggregate()新增$dateToString 操作符,支持将日志转换为指定的格式

    • 查询新增 $eq 操作符支持相等判断

    索引

    • 后台创建索引时不会被dropDatabase,drop和dropIndexes操作中断。

    工具

    主要是mongodump和mongorestore功能的改进。

    新的Java驱动

    简单的看了下源码,原来的API仍然兼容,但重写了很多主要类(MongoCollection,MongoDatabase),新的MongoIterable接口风格很像Java8的Stream,而且都是泛型的。 提供了异步的MongoClient,新的编码框架,提高了性能。

    官方文档

    MongoDB 3.0

  • 相关阅读:
    DecimalPercentageConverter
    Asp.Net 性能 ViewState 压缩的2种方法
    Listbox template
    Datagrid template for listbox and textbox
    ToPercentConverter : IValueConverter
    繁體中文
    Silverlight ComboBox 设置选中项
    鲁迅:纪念刘和珍君
    ASP.NET系统整合DiscuzNT3.6之注意事项
    [转]js动态创建json类型
  • 原文地址:https://www.cnblogs.com/zhanjindong/p/new-technique-in-new-year-mongodb3.html
Copyright © 2011-2022 走看看