MongoDB 简介

Posted yltrcc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 简介相关的知识,希望对你有一定的参考价值。

每日一句

Failure will never overtake me if my determination to succeed is strong enough.
只要我成功的决心足够强,失败就永远不会打倒我。

概述

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点

  • 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安装简单。

发展历史

  • 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 发布,是目前最新的稳定版。

应用场景

传统的关系型数据库(如MySQL),在数据操作的‘三高’需求以及应对web2.0的网站需求时,显得力不从心。

关于三高的解释:

  • High performance - 对数据库高并发读写的需求
  • Huge Storage - 对海量数据的高效率存储和访问的需求。
  • High Scalability && High Availability - 对数据库的高可扩展性和高可用性的需求。

使用MongoDB可以应对三高需求。

具体应用场景

  1. 社交场景:使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
  2. 游戏场景:使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储。
  3. 物流场景:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
  4. 物联网场景:使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
  5. 视频直播:使用MongoDB存储用户信息、点赞互动的信息等。

什么时候选择MongoDB

在架构选型上,关于是否要选择它,可以考虑以下的几个特征:

  1. 数据量大
  2. 读写频繁
  3. 价值较低的数据,对事务性要求不高,不需要复杂join 支持
  4. 新应用、新业务、需求会变、数据模型无法确定,想快速迭代开发
  5. 应用需要2000 - 3000 以上的读写QPS(更高也可以)
  6. 应用需要TB甚至PB级别的数据存储
  7. 应用发展迅速,需要能够快速水平扩展
  8. 应用要求存储的数据不丢失
  9. 应用需要99.999%高可用
  10. 应用需要大量的地址位置查询、文本查询

如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。

美文佳句

每当秋风骤起,那柿树上的一片片叶子,就纷纷落下来了,给人一种岁月易逝、时不我待的感觉。而这时候的柿子,个个都裸露了出来,它们站在高高的树枝上,在深秋阳光的照耀下,呈现出晶莹剔透的光泽,给人一种岁月静美的印象、果实甜蜜的诱惑。

你好,我是yltrcc,日常分享技术点滴,欢迎关注我:ylcoder

以上是关于MongoDB 简介的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB阅读目录

mongodb简介

MongoDB 简介

MongoDB简介

MongoDB简介

MongoDB 简介