MongDB简介
一、基本概念
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简介的更多相关文章
- Redis、MPP、kafka 、MongDB简介
Redis :间值数据库,适合缓存用户Session会话与经常需要查的数据1.Redis集群,为什么在项目中使用集群 1.持久化,持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要左右 ...
- mongdb 简介以及安装
1.什么是MongoDB? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供 ...
- MongoDB【快速入门】
1.MongDB 简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大")是可以应用于各种规模的企业.各个行业以及各类应用程序的开源数据 ...
- 1 Mongodb安装
1.NoSQL简介 NoSQL,全名Not Only SQL,指的是非关系型的数据库 随着访问量的上升,网站的数据库性能出现了问题,于是NoSQL被设计出来了 优点.缺点 优点 高扩展性 分布式计算 ...
- MongoDB用户权限管理配置
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- MongoDB环境搭建
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- MongoDB数据库、集合、文档的操作
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- Spring Data Redis简介以及项目Demo,RedisTemplate和 Serializer详解
一.概念简介: Redis: Redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写,详细的信息在Redis官网上面有,因为我自己通过google等各种渠道去学习Redis, ...
- 简介 - MongoDB
1- NoSQL简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL": NoSQL是指非关系型的数据库,有时也称作Not Only SQL的缩写, ...
随机推荐
- XSLT 处理程序是如何工作的
与 JSP.PHP 和其他 Web 开发语言的比较 在本文中,Benoit Marchal 考察了 XSLT 处理程序的工作原理.为了说明他的观点,他编写了专门的样式表把处理中的某些方面凸显出来.他特 ...
- 实用的eclipse adt 快捷键
Ctrl + Shift + T: 打开类型:显示"打开类型"对话框来在编辑器中打开类型."打开类型"选择对话框显示工作空间中存在的所有类型如类.接口等. ...
- 1701. Ostap and Partners(并查集-关系)
1701 又是类似食物链的这一类题 这题是找与根节点的和差关系 因为0节点是已知的 为0 那么所有的都可以转换为与0的和差关系 可以规定合并的两节点 由大的指向小的 然后再更新和差关系 有可能最后有 ...
- IPC:Sockets
Please refer to http://www.cs.cf.ac.uk/Dave/C/node28.html.
- 解决iframe缓存
网上能搜到很多此类的资料,但都是互相转载,不太起作用.这几天写个用到,用了不少的iframe效果.结果发现iframe有缓存的问题.网上提供了思路,即对iframe的href后添加随即get值,来逃避 ...
- (转载)C++lambda表达式
(转载)http://www.cnblogs.com/L-hq815/archive/2012/08/23/2653002.html lambda表达式 C++ 语言中的lambda表达式在很多情况下 ...
- 在ubuntu on windows 上安装jekyll
已知问题 安装ruby之后,重新启动ubuntu on windows,输入ruby命令,提示找不到. 发现的解决办法 执行下面命令 source /home/xxxx/.rvm/scripts/rv ...
- HDU 3711 Binary Number
Binary Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- lightoj 1019
裸的最短路 dijkstra #include<cstdio> #include<string> #include<cstring> #include<ios ...
- FZU 2127 养鸡场
Problem Description Jason买来了n米长的竹篱笆,打算将n米长的竹篱笆全部用来围成一个三角形的养鸡场.为方便起见,养鸡场三条边的长度都为正整数.同时,他想让自己的养鸡场看起来更 ...