2.MongoDB简介
1. MongoDB简介
1.1. 什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

1.2. 主要特点
- MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
- 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
- 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
- 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
- Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
- Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
- Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
- Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
- GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
- MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
- MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
- MongoDB安装简单。
1.3. 历史
2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。
2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。
2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。
2013年08月20日,MongoDB 2.4.6 发布。
2013年11月01日,MongoDB 2.4.8 发布。
1.4. MongoDB 下载
你可以在mongodb官网下载该安装包,地址为:https://www.mongodb.com/download-center#community。MonggoDB支持以下平台:
OS X 32-bit
OS X 64-bit
Linux 32-bit
Linux 64-bit
Windows 32-bit
Windows 64-bit
Solaris i86pc
Solaris 64
1.5. 语言支持
MongoDB有官方的驱动如下:
C
C++
C# / .NET
Erlang
Haskell
Java
JavaScript
Lisp
node.JS
Perl
PHP
Python
Ruby
Scala
Go
1.6. MongoDB 工具
有几种可用于MongoDB的管理工具。
1.6.1. 监控
MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。
Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。
基于图形界面的开源工具 Cacti, 用于查看CPU负载, 网络带宽利用率,它也提供了一个应用于监控 MongoDB 的插件
1.6.2. GUI
- Fang of Mongo – 网页式,由Django和jQuery所构成。
- Futon4Mongo – 一个CouchDB Futon web的mongodb山寨版。
- Mongo3 – Ruby写成。
- MongoHub – 适用于OSX的应用程序。
- Opricot – 一个基于浏览器的MongoDB控制台, 由PHP撰写而成。
- Database Master — Windows的mongodb管理工具
- RockMongo — 最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言.
1.7. MongoDB 应用案例
下面列举一些公司MongoDB的实际应用:
Craiglist上使用MongoDB的存档数十亿条记录。
FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
MongoDB的历史
MongoDB历史可以追溯到2007年,那时由10gen公司(现为MongoDB公司)的创始人Eliot Horowitz和Dwight Merriman共同创建了这个开源项目。最初的版本是基于C++编写的,被称为MongoDB,意为“humongous”,即“庞大的”。
2009年,MongoDB发布了第一个稳定版本1.0,并且在社区中获得了广泛的认可和使用。之后,MongoDB不断发展壮大,逐步成为最受欢迎的NoSQL数据库之一。
2010年,MongoDB公司成立,开始专注于开发和推广MongoDB,同时为企业提供商业支持和服务。2013年,MongoDB公司推出了MongoDB 2.4版本,其中包括全文搜索和定时器等新功能,进一步提升了MongoDB的性能和功能。
2014年,MongoDB公司发布了MongoDB 2.6,引入了文档级别的锁定机制和聚合管道等新特性。同年,MongoDB公司推出了MongoDB Management Service(MMS)和MongoDB Cloud,为企业提供云上托管和高级管理工具。
2015年,MongoDB公司发布了MongoDB 3.0,其中最引人注目的特性是支持原子操作和新的存储引擎WiredTiger。这些新的特性极大地提高了MongoDB的性能和可用性。
2017年,MongoDB公司发布了MongoDB 3.4,其中包括Graph存储引擎和强化的聚合功能等新特性。这些新特性使得MongoDB得以更好地应对企业的数据需求。
随着数据增长和企业对大数据的需求的不断增加,MongoDB公司不断推出新的版本和功能,以满足不同场景下的数据需求。现在,MongoDB已经成为最为流行的NoSQL数据库之一,被广泛应用于许多领域,例如互联网应用、大数据分析、物联网等。
1.8. MongoDB简介
MongoDB是一款高性能、高可用性、动态可扩展的开源NoSQL数据库,它使用文档型数据模型,是最流行的NoSQL数据库之一。它能够处理大数据量、高并发、快速存取、高扩展性等特点,被广泛应用在互联网、移动应用等领域。
1.9. MongoDB的特点
以下是MongoDB的几个特点:
面向文档的数据模型:MongoDB使用BSON格式存储数据,也就是类JSON格式的一种二进制标记文档格式。MongoDB支持嵌套的文档和集合,可以非常方便地存储和处理复杂的数据结构。
高性能:MongoDB使用内存映射存储引擎,能够充分利用操作系统的缓存机制,提高数据操作速度。同时,MongoDB使用了多种索引和聚合操作等技术来优化查询性能。
高可用性:MongoDB可以搭建主从复制和分片集群等高可用性架构,能够保证数据的持久性和数据的高可用性。此外,还提供副本集和自动故障转移等机制,能够在节点故障时自动进行切换,保证服务的连续性。
灵活可扩展:MongoDB支持水平扩展,可以通过添加更多的节点来扩展数据库的存储容量和性能。同时,MongoDB还支持动态schema,能够提高开发的灵活性和快速迭代开发的效率。
方便的API和工具:MongoDB提供了可直接使用的API和命令行工具,方便开发人员进行数据操作和管理。同时,它还有多种语言的驱动程序和ORM框架,能够方便地与开发语言进行集成。
MongoDB是一款性能优异、可扩展性强、易用性高的NoSQL数据库,适用于需要处理大数据量和需要高可用性的场景。
1.10. MongoDB的应用场景
MongoDB是一种文档型数据库,它非常适合于存储和处理大量的半结构化数据。MongoDB的应用场景包括以下几个方面:
Web应用程序的存储:MongoDB对于存储半结构化的数据非常有优势,因此在Web应用程序中,MongoDB适合存储用户的配置文件、日志、评论、博客文章、新闻、商品信息等数据。
大数据和物联网:MongoDB的分布式存储和易于水平扩展的特点使其非常适合于处理大量数据和物联网数据。例如,MongoDB被广泛应用于处理运营商的大数据、智能家居数据、手机位置数据等。
实时数据分析:MongoDB的查询速度非常快,可以实现实时数据分析和实时数据可视化。例如,企业可以通过MongoDB存储销售数据并迅速查询和分析数据。
电子商务和人工智能:MongoDB的能够支持高并发读写操作,因此非常适合于电子商务平台。同时,MongoDB的查询优化、索引和文本搜索等特点也适合用于人工智能应用中。
游戏行业:游戏行业是一个高并发的行业,MongoDB的高并发读写和快速查询特点非常适合于游戏的数据处理和存储。
MongoDB适合处理半结构化数据、处理大量数据、快速查询和分析数据,非常适合于Web应用程序、大数据和物联网、实时数据分析、电子商务和人工智能、游戏等多个领域。
1.11. 注意事项
使用MongoDB需要注意以下几个地方:
设计Schema:在MongoDB中,数据被存储为文档,没有固定的模式。因此,在使用MongoDB时,需要仔细设计Schema,并考虑如何优化查询。设计Schema时需要考虑数据的结构、可扩展性和查询性能。
索引的使用:MongoDB使用索引来优化查询,可大大提高查询效率。需要注意的是,索引会消耗磁盘空间,因此需要根据实际情况选择索引类型,并合理使用索引。
分布式架构的部署:MongoDB支持分布式架构,并且可以非常方便地扩展。但是,在部署分布式架构时需要注意数据的备份和恢复、负载均衡、数据迁移等问题。
安全性:MongoDB提供了多种安全性措施,包括身份验证、加密传输、授权访问等。在使用MongoDB时,需要注意数据的安全性,并采取相应的安全措施。
编程语言的支持:MongoDB支持多种编程语言,如Java、Python、Node.js等。在使用MongoDB时,需要注意编程语言的支持和相应的驱动程序。
在使用MongoDB时,需要仔细设计Schema,合理使用索引,注意分布式架构的部署和数据安全性,同时也需要考虑编程语言的支持。

浙公网安备 33010602011771号