MongoDB介绍

MongoDB是一个C++语言编写的开源NoSQL数据库,目的是为Web应用程序提供高性能、高可用性且易于扩展的数据存储解决方案。MongoDB是NoSQL数据库中最热门的一种,是一种文档型数据库,MongoDB易于扩展,表结构自由,高性能。

官网:https://www.mongodb.com/

MongoDB历史

关系型数据库在很长时间里一直是数据库领域当之无愧的王者,例如MySQL,SQL Server和Oracle等,但在信息时代数据量的增大和Web2.0的数据结构复杂化情况下,关系数据库的缺陷也渐渐显露出来:

  • 大数据处理能力差,关系型数据库被设计为单机运行,在海量数据处理方面代价高昂
  • 程序产出效率低,程序开发时总是需要先设计数据库表结构
  • 数据结构变动困难,互联网项目时刻都在发展和改变,但数据库改变一个字段往往牵一发而动全身

为了解决以上问题,NoSQL数据库出现了,这类数据库的主要特点是菲关系型,水平可扩展,分布式与开源,另外他们还具有模式自由,最终一致性等特点,区别于关系型数据库,这类数据库更容易存储海量数据。NoSQL常用的存储模式有key-value形式,文档形式,列形式,图形式,XML形式等,而MongoDB则是这类数据库中的一个代表。

MongoDB数据库是10gen团队于2007年10月开始开发,并与2009年2月首度推出,目的是成为一个灵活,高效,易于扩展,功能完备的数据库。经过这几年的发展,MongoDB已经趋于稳定,更多的公司开始使用MongoDB。

MongoDB特点

  • 数据存储形式为BSON格式,一种类似JSON的形式
  • 面向集合存储,易于存储JSON和对象类型数据
  • 模式自由,一个集合可以存储不同类型的文档
  • 支持动态查询,MongoDB支持以JSON形式的丰富动态查询
  • 完整的索引支持
  • 支持复制和故障恢复
  • 二进制数据存储,MongoDB使用传统的高效二进制存储数据,可以将图片视频等转为二进制存储
  • 自动分片,MongoDB支持自动分片,水平扩展
  • 支持多种语言,C,C++,Python,Java,JS等

MongoDB应用

由于MongoDB可水平扩展和最终一致性的特性,因此适合以下场景:

  • 海量,低价值的数据(允许一定丢失,例如日志等)
  • 高伸缩性场景
  • 用于对象和JSON数据的存储