使用工具:VMware12,Centos6,Mongodb,robo3t(可视化连接工具)
MongoDB是什么
MongoDB 是由C++语言编写的,是一个基于分布式存储的数据库。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
所谓关系型数据库:就是指由二维表及其之间的联系组成的一个数据组织。
所谓分布式存储:是将数据分散存储在多台独立的设备上。
MongoDB更类似Mysql,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。
Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。
MongoDB使用BSON(Binary JSON)对象来存储,与JSON格式类型的键值对(key/value)类似,MongoDB数据库和关系型DB的存储模型对应关系:
关系型数据库 | MongoDB |
---|---|
Database | Database |
Table | Collection |
Row | Document |
Column | Key/value or Document |
MongoDB是面向文档的数据库。这是MongoDB的一个主要功能。它提供面向文档的存储。这很简单,可以很容易地编程。MongoDB将数据存储为文档,因此被称为面向文档的数据库。
MongoDB支持的数据类型
MongoDB支持许多数据类型。 其中一些是:
-
字符串String - 这是用于存储数据的最常用的数据类型。MongoDB中的字符串必须为UTF-8。
-
整型 Integer- 此类型用于存储数值。 整数可以是32位或64位,具体取决于服务器。
-
布尔类型 Boolean - 此类型用于存储布尔值(true / false)值。
-
双精度浮点数Double - 此类型用于存储浮点值。
-
最小/最大键Min/ Max keys - 此类型用于将值与最小和最大BSON元素进行比较。
-
数组Arrays - 此类型用于将数组或列表或多个值存储到一个键中。
-
时间戳**Timestamp - 当文档被修改或添加时,可以方便地进行录制。
-
对象Object - 此数据类型用于嵌入式文档。
-
Null - 此类型用于存储Null值。
-
符号**Symbol - 该数据类型与字符串相同; 但是,通常保留用于使用特定符号类型的语言。
-
日期 Date- 此数据类型用于以UNIX时间格式存储当前日期或时间。您可以通过创建日期对象并将日,月,年的日期进行指定自己需要的日期时间。
-
对象ID Object ID - 此数据类型用于存储文档的ID。
-
二进制数据Binary data - 此数据类型用于存储二进制数据。
-
代码 Code - 此数据类型用于将JavaScript代码存储到文档中。
-
正则表达式Regular expression - 此数据类型用于存储正则表达式。
MongoDB和Redis的区别
内存管理机制
Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。
MongoDB数据存在内存,由linux系统mmap实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。
支持的数据结构
Redis支持的数据结构丰富,包括String、hash、list、set、sorted set等。
MongoDB数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
性能
二者性能都比较高。
可靠性
二者均支持持久化。
集群
MongoDB集群技术比较成熟,Redis从3.0开始支持集群。
不适用场景
需要使用复杂sql的操作
事务性系统
MongoDB安装
可以通过yum安装