一、基本概念

MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前NoSQL 数据库产品中最热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,MongoDB 使用C++开发。MongoDB 的官方网站地址是:http://www.mongodb.org/,大家可以在此获得更详细的信息。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json 的bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立 索引。它是一个面向集合的,模式自由的文档型数据库。

二、对比

MongoDB

关系型数据库

数据存储

面向集合

面向关系表

数据结构

模式自由

二维表关系模式

事务

不支持

支持

大型数据(视频)

很好

一般

大数据量查询(千万条以上)

很好

较差

数据库维护

相对简单

相对复杂

数据及表关系、结构浏览

困难

简单

数据安全性

较差

很好

分布式

很好

一般

查询

非常灵活

非常强大

主外键关联

不支持

支持

索引

支持

支持

存储过程

支持

支持

三、对比说明

1. 数据存储

MongoDB是面向集合(collection)的,集合中又包含多个文档 (document),并支持对象型数据的存储。其中集合和文档的概念,在关系型数据库中类似于表(table)和元组(row:也就是所谓的一行数 据)。另外MongoDB是以bson形式存储,而关系型数据库是以二维关系形式存储。

2. 数据结构

MongoDB对数据结构的支持非常灵活,从横向到纵向的支持都很好,比如下面的数据都能存储在同一个集合中:

① {“name”: “wangwu”, “age”: 25}

② {“name”: “lisi”}

③ {“state”: “激活”, “remark”: “无”}

④ {“name”: 6, “age”: “你猜”}

从上面的例子我们能看出,横向方面,支持字段的动态增减(如①和②),从纵向方面,支持字段数据类型混合存储(如①和④)。而在关系型数据库中这种方式的存储是绝对达不到的。

3. 事务

MongoDB本身不支持事务处理,只能通过程序代码来保证。

4. 大型数据

MongoDB不仅支持结构化数据,还支持非结构化数据存储(音频、视频、文档、XML、HTML等),而关系型数据库虽然支持大型数据(如视频)的存储,但是不管从存储效率上还是从获取速度上都不及MongoDB,MongoDB可采用高效的二进制来存储大型数据。

5. 大型数据量查询

MongoDB对于上千万条以上的数据,在查询速度上非常快。而这点却是关系型数据库中的一大痛处。

6. 数据库维护

MongoDB在数据库备份和还原以及数据的导入导出的操作上是非常简单的,通过简单的命令即可完成,还支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移,而关系型数据库在操作上相对复杂一些,上手难一些。

7. 数据及表关系、结构浏览

MongoDB因为没什么特别好的GUI客户端,所以在数据浏览和表关系、结构浏览上是非常困难和笨拙的,关系型数据库在这方面上优势明显。

8. 数据安全性

MongoDB在数据安全方面比较差,如果稍有不慎或操作不当,很容易造成数据丢失或数据错误,因此在数据维护和操作上,要非常小心。而关系型数据库在这方面上的担心却要少很多。

9. 分布式

MongoDB非常适合由数十或数百台服务器组成的数据库。支持自动分片以支持云级别的伸缩性。其中自动分片功能支持水平的数据库集群,可动态添加额外的机器。关系型数据库在分布式的支持和操作上都要困难些、发杂些。

10. 查询

MongoDB的查询语句与关系型的sql语句有着很大的不同,或者说是两种风格,二者表现都很不错,MongoDB主要体现在灵活易用上,而sql则体现在功能全面强大上。

11. 主外键关联

MongoDB不支持主外键关联,也没有“约束”的概念。

12. 索引

MongoDB同样支持索引

13. 存储过程

MongoDB同样也支持存储过程

四、总结

通过以上对比,我们可以看出MongoDB是以牺牲安全、事务、结构来换取简单、高效、灵活的, 所以关系型也好非关系型也好都有他们适用的场合,非关系型数据库的出现,为我们多提供了一条选择的道路,从而在数据维护和存储上给予了我们很大的帮助,让 我们在软件开发上能更加得心应手,因此传统保守关系型数据库观念的人们,可以试试体验下非关系型数据库,也许你一下就会迷上他,在关系型数据库大行其道今 天,掌握好一门非关系型数据库对你未来的发展也是非常有利的。

那么关于MongoDB的入门简介就先到这里,笔者今后会对MongoDB具体的内容进行较为系统的总结和介绍,希望能帮助需要用到的朋友。

MongDB简介的更多相关文章

  1. Redis、MPP、kafka 、MongDB简介

    Redis :间值数据库,适合缓存用户Session会话与经常需要查的数据1.Redis集群,为什么在项目中使用集群  1.持久化,持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要左右 ...

  2. mongdb 简介以及安装

    1.什么是MongoDB?  MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供 ...

  3. MongoDB【快速入门】

    1.MongDB 简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大")是可以应用于各种规模的企业.各个行业以及各类应用程序的开源数据 ...

  4. 1 Mongodb安装

    1.NoSQL简介 NoSQL,全名Not Only SQL,指的是非关系型的数据库 随着访问量的上升,网站的数据库性能出现了问题,于是NoSQL被设计出来了 优点.缺点 优点 高扩展性 分布式计算 ...

  5. MongoDB用户权限管理配置

    MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...

  6. MongoDB环境搭建

    MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...

  7. MongoDB数据库、集合、文档的操作

    MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...

  8. Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解

    一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...

  9. 简介 - MongoDB

    1- NoSQL简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL": NoSQL是指非关系型的数据库,有时也称作Not Only SQL的缩写, ...

随机推荐

  1. VC 设置 Stack Overflow

    C/C++ stack overflow, 怎样设置stack大小?解决方案 (1) vc6.0: project->setting->link->project options-& ...

  2. many-to-one和one-to-many的配置比较

    many-to-one配置: <many-to-one name="dailyCatalog" column="daily_catalog_id" cla ...

  3. bzoj2906

    显然分块,由于颜色也有区间,我们的ans[l,r,k]表示块l和块r颜色1~k的权值和所以我们块的大小要设为n^(2/3),其它没什么说的,比较水 ..,..,..] of int64; g:..,. ...

  4. [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)

    在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...

  5. Flash挡住DIV的解决方法

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://down ...

  6. JQuery向ashx提交中文参数方案

    客户端://异步获取数据var tpAction=action+'getSearch.ashx?key='+encodeURIComponent('中国'); $.getJSON(tpAction,f ...

  7. Js计算-当月每周有多少天

    查看Demo: 源代码如下: <script> //计算当月总天数 function getCountDays() { var curDate = new Date(); /* 获取当前月 ...

  8. 表格的一些原生js操作(隔行变色,高亮显示,添加删除,搜索)

    看着网上的视频教程,虽说还是有点简单,但还是不免想记录下.这些操作包括(隔行变色,高亮显示,添加删除,搜索功能),而这儿就是涉及table的原有属性“tBodies” “rows” “cells”等几 ...

  9. c#中单元测试

    从走进.net后发现每天有写不完的代码,有做不完的测试...人感觉都已经机械,我们需要认清自己调整好心态,问下自己是否真的喜欢编程.我的答案当然也就是我爱编码,编码给我带来了许多欢乐,每天都给我体验小 ...

  10. ASP.NET MVC 开篇

    MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller) ...