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的缩写, ...
随机推荐
- 14条建议,使你的IT职业生涯更上一层楼
摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...
- WPF中映射clr namspace
1. xaml中直接映射为prefix xmlns:prefix="clr-namespace:MyApplication.Modules.Entity;assembly=MyAssembl ...
- 【MooTools】
MooTools a compact javascript frameworkhttp://mootools.net/docs/core 30天学会 MooTools 教学(1): 认识MooTool ...
- apache开源项目--PDFBox
PDFBox是Java实现的PDF文档协作类库,提供PDF文档的创建.处理以及文档内容提取功能,也包含了一些命令行实用工具. 主要特性包括: 从PDF提取文本 合并PDF文档 PDF 文档加密与解密 ...
- tomcat+dbcp+jndi 配置
1)添加jar包 tomcat6中 TOMCAT_HOME/lib 下是公用jar包 dbcp需要3个jar包:Jakarta-Commons DBCP,Jakarta-Commons Collect ...
- (转载)内联函数inline和宏定义
(转载)http://blog.csdn.net/chdhust/article/details/8036233 内联函数inline和宏定义 内联函数的优越性: 一:inline定义的类的内联函 ...
- HDU 5313 Bipartite Graph
题意:给一个二分图,问想让二分图变成完全二分图最多能加多少条边. 解法:图染色+dp+bitset优化.设最终的完全二分图两部分点集为A和B,A中点个数为x,B中点个数为y,边数则为x × y,答案即 ...
- HDU 4565 So Easy!
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
- Java Script 正则表达式的使用示例
一.语法 1.1 在JS中的使用代码 var myregex = new RegExp("^[-]?[0-9][0-9]{0,2}\\.[0-9]{5,15}\\,\s*[-]?[0-9][ ...