下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

MongoDB的应用与发展

作者:课课家教育     来源: http://www.kokojia.com点击数:1062发布时间: 2017-08-09 09:00:19

标签: 数据库MongoDB数据库基础

  随着互联网web2.0网站的兴起,NoSQL在国内掀起一阵热潮,其中风头最劲的莫过于mongoDB,越来越多的互联网公司都将MongoDB作为自己的首选数据库。MongoDB有自由灵活的文档模型,具备处理从百万到十亿级别数据量的能力,对于大数据量、高并发、弱事务的互联网应用都可以应对自如。鉴于mongoDB操作简单,免费开源,大大降低了运维成本,ebay,github,淘宝、京东、360、百度等互联网公司都将MongoDB作为自己的数据库。

mongoDB

  1.MongoDB介绍

  MongoDB(名称来自"humongous")是一个可扩展的高性能,开源,模式自由,面向文档的数据库。它使用C++编写。MongoDB特点:

  a.面向集合的存储:适合存储对象及JSON形式的数据。

  b.动态查询:MongoDB支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组。

  c.完整的索引支持:包括文档内嵌对象及数组。mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

  d.查询监视:MongoDB包含一个监视工具用于分析数据库操作性能。

  e.复制及自动故障转移:MongoDB数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移。

  f.高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。

  g.自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器。

  2.MongoDB使用场合

  mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:

  a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

  b.缓存:由于性能很高,MongoDB也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。

  c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。

  d.高伸缩性的场景:MongoDB非常适合由数十或者数百台服务器组成的数据库。

  e.用于对象及JSON数据的存储:MongoDB的BSON数据格式非常适合文档格式化的存储及查询。

  不适合的场景:

  a.高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

  b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

  c.需要SQL的问题。

  MongoDB是当前非常流行的文档型NoSQL数据库。自从MongoDB3.0正式版本发布,该版本在性能和扩展性方面都有非常巨大的提升,还提供了一个强大、灵活且易于操作的管理系统,这一切标志着MongoDB将进入一个全新的发展阶段。

  MongoDB3.0最重要的改进是在存储层进行的改进,刚收购的WiredTiger存储引擎已成为MongoDB的内建数据库。WiredTiger不仅为MongoDB带了文档级锁的并发控制和高效的文档压缩功能,且自身性能也有了重大的提升,从而使得MongoDB提升了7-10倍的写操作性能、降低了80%的存储占用空间、降低了高达95%操作开销、支持高达50个副本集。

 MongoDB3.0最重要的改进是在存储层进行的改进,刚收购的WiredTiger存储引擎已成为MongoDB的内建数据库。WiredTiger不仅为MongoDB带了文档级锁的并发控制和高效的文档压缩功能,且自身性能也有了重大的提升,从而使得MongoDB提升了7-10倍的写操作性能、降低了80%的存储占用空间、降低了高达95%操作开销、支持高达50个副本集。

  WiredTiger是一个高性能、可扩展性、支持压缩和文档级锁的NoSQL存储引擎,其设计充分利用了现代硬件发展的趋势,如高缓存、多线程的体系架构,还利用了技术研究成果和丰富的商业经验。此外,WiredTiger完全兼容原先的存储引擎MMAP(当前为MMAPv1)。同时,MMAP在集合级别的并发控制以及日志服务等方面也得到了增强。

  MongoDB的工程部总监MichaelCahill曾针对收购WiredTiger的事件评论到:

  创建WiredTiger旨在提供新思路下的数据管理平台和创建高性能的软件,以应对来自世界上要求最苛刻的各种应用的挑战。MongoDB一直影响着他们,WiredTiger能够加入MongoDB庞大的社区是一个发展的好机会,从而使得WiredTiger能够很好地帮助世界各地的各行各业和各种规模的组织。

  MongoDB3.0带来了可扩展性的新存储架构,并同时使用了MMAPv1和WiredTiger两种存储引擎。MongoDB3.0提供了可插入式存储引擎API,使得MongoDB能够非常简单地集成其它存储引擎和运行在内存、可信数据库环境、HDFS、特殊的优化硬件环境等各种环境中。

  此外,该版本还带来了企业级的OpsManager管理工具,该工具简化了MongoDB的管理。同时,还提供了OpsManagerAPI,开发者使用该API能够非常容易地将OpsManager集成到现有的监控、备份、管理等工具中。

  MongoDB3.0是一个里程碑意义的版本,它带来了多方面的改进,包括性能、灵活性、易用性、管理的简单性、运行成本等。MongoDB3.0消除了性能瓶颈,使得MongoDB能够适应更广泛的应用,其将成为其他众多数据库的强大竞争者。但是,这只是一个开始,MongoDB团队仍将继续加强MongoDB的相关功能,如WiredTiger的高级功能日志结构的合并树(LogStructuredMergeTrees)、为分布式文档模型实现一个事务系统、继续加强OpsManager的功能、增强查询语言和工具。

  小编结语:

  DB-Engines的2014年度数据库排名显示,MongoDB已成为世界上第五个著名的数据库。今年2月份的数据库排名显示,MongoDB已超越PostgreSQL且排名第四。当前,从初创公司至世界500强,有众多组织、公司在使用MongoDB来构建自己的核心应用,如ADP、Forbes、Expedia、Bosch、Metlife、Foursquare、eBay等。已有众多公司与MongoDB进行了合作,如Informatica、IBM、Rackspace、亚马逊、红帽以及英特尔等。

赞(28)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程