mongoDB入门必读

一、概述

  MongoDB是一个基于分布式文件存储的数据库开源项目。

  由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。

  MongoDB是一个介于关系数据库和非关系数据库之间的产品。

  它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。

  Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

  MongoDB主要解决的是海量数据的访问效率问题。

  根据官方的文档,当数据量达到50GB以上的时候,Mongo的数据库访问速度是MySQL的10倍以上。Mongo的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万-1.5次读写请求。

  因为MongoDB主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储,但我也看到有些评论认为GridFS性能不佳,有待验证。

  最后由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎,很多项目都考虑用MongoDB来替代MySQL来实现不是特别复杂的Web应用,比方说why we migrated from MySQL to MongoDB就是一个真实的从MySQL迁移到MongoDB的案例,由于数据量实在太大,所以迁移到了Mongo上面,数据查询的速度得到了非常显著的提升。

  总结起来,monggDB的特点是高性能、易部署、易使用、存储数据非常方便。

二、MongoDB的优点

  (1) 高性能、速度非常快(如果你的内存足够的话)

  (2) 没有固定的表结构,不用为了修改表结构而进行数据迁移

  (3) 查询语言简单,容易上手

  (4) 使用Sharding实现水平扩展

  (5) 部署方便

 

三、使用MongoDB,你得记住以下几点:

  MongoDB 假设你有大磁盘空间

  MongoDB 假设你的内存也足够大于放下你的热数据

  MongoDB 假设你是部署在64位系统上的(32位有2G的限制,试用还可以)

  MongoDB 假设你的系统是little-endian的

  MongoDB 假设你有多台机器(并不专注于单机可靠性)

  MongoDB 假设你希望用安全换性能,同时允许你用性能换安全

MongoDB在下面领域不太擅长

  不太稳定,特别是auto-sharding目前还有很多问题

  不支持SQL,这意味着你很多通过SQL接口的工具不再适用

  持久化,MongoDB单机可靠性不太好,宕机可能丢失一段时间的数据

  相关文档比较少,新功能都有这个问题

  相关人才比较难找,这也是新功能的问题之一

时间: 2024-10-14 06:02:58

mongoDB入门必读的相关文章

MongoDB入门必读(概念与实战并重)

MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝

Python爬虫小白入门必读,成为大牛必须经历的三个阶段

学习任何一门技术,都应该带着目标去学习,目标就像一座灯塔,指引你前进,很多人学着学着就学放弃了,很大部分原因是没有明确目标,所以,一定要明确学习目的,在你准备学爬虫前,先问问自己为什么要学习爬虫.有些人是为了一份工作,有些人是为了好玩,也有些人是为了实现某个黑科技功能.不过可以肯定的是,学会了爬虫能给你的工作提供很多便利. 大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自

什么是RDF, 为什么要RDF? RDF跟XML有何不同? 语义从何而来? [入门必读]

答:什么是RDF, 为什么要RDF? RDF跟XML有何不同? 语义从何而来?  [入门必读] 经常有站友问及此问题,于是把回答这几个问题的帖子整理了出来: orangebench的推荐(详见http://bbs.w3china.org/dispbbs.asp?BoardID=2&replyID=19683&id=9008&star=1&skin=0): [1]新手:请问syntax 和semantics之间的区别  http://bbs.xml.org.cn/dispbb

MongoDB入门学习(三):MongoDB的增删查改

对于我们这种菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 因为MongoDB存储数据都是以文档的模式,所以在操作它的数据时,也是以文档为单位的.那么我们实现增删查改也是以文档为基础,不知道文档是什么的同学可以看看上篇介绍的基本概念. 1.插入文档 向MongoDB集合中插入文档的基本方法是insert: 单个插入 > document = {key : value} > db.collecti

linux 入门必读文章

你从来只用过Windows,从来没接触过UNIX,只知道把一个文件拽来拽去,只知道硬盘就是C: D: E:却从来没有研究过分区表,也许会用VC编个程序,很习惯它的集成环境....    有一天,不管什么原因了,也许是看报纸上那些把内存和硬盘都分不清楚的记者的吹嘘,或者是老板要求你用它作个项目,或者是同学们都有了你没有觉得很土,或者你听说找工作有这个的经验就有更大希望....不管怎样,你想在自己的机器上安装一个Linux.OK,这个文章就是给你写的,因为从现在开始,你会有成堆的问题你会觉得从前在w

MongoDB入门学习(四):MongoDB的索引

上一篇讲到了MongoDB的基本操作增删查改,对于查询来说,必须按照我们的查询要求去集合中,并将查找到的结果返回,在这个过程中其实是对整个集合中每个文档进行了扫描,如果满足我们的要求就添加到结果集中最后返回.对于小集合来说,这个过程没什么,但是集合中数据很大的时候,进行表扫描是一个非常恐怖的事情,于是有了索引一说,索引是用来加速查询的,相当于书籍的目录,有了目录可以很精准的定位要查找内容的位置,从而减少无谓的查找. 1.索引的类型 创建索引可以是在单个字段上,也可以是在多个字段上,这个根据自己的

MongoDB入门学习(二):MongoDB的基本概念和数据类型

上一篇讲了MongoDB的安装和管理,其中涉及到了一些概念,数据结构还有一些API的调用,不知道的没关系,其实很简单,这篇会简单介绍一下. 1.文档 文档是MongoDB的核心概念,多个键值对有序的放在一起就是一个文档,文档是MongoDB存储数据最基本的数据结构.对MongoDB都是以文档的形式来操作的,使用了一种类似JSON的二进制BSON数据格式,对API的调用都是传的文档参数.每种编程语言都有标示文档的数据结构,比如java的map,lua的table,python的dict等等,但是都

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)-先期准备&数据库连接创建

最近在学习MongoDB的相应知识,涉及到使用Ruby操作MongoDB数据库,因为参考数据中使用的Ruby Mongo驱动版本不是2.3.3,所以在操作方面会有所不同,因此撰写了这篇Ruby2.3.3操作MongoDB入门,学习方式是参考网址https://docs.mongodb.com/ruby-driver/v2.3/quick-start/ 快速学习主要分为以下几个部分: 先期准备 1.1 本地启动MongoDB数据库,端口号27017 Windows环境下启动方式如下:首先CMD命令

MongoDb 入门教程

MongoDb 入门教程 目录 MongoDb的基本数据结构 安装MongoDb服务器 连接MongoDb服务器 MongoDb创建数据库 MongoDb创建表 MongoDb插入数据 MongoDb查询数据 范围操作符 AND操作符 OR操作符 排序 聚合 MongoDb更新数据 MongoDb删除数据 常用的DDL命令 MongoDb图形化工具 总结 参考资料 MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数