初识MongoDB

一、前言

1、为什么学习 MongoDB

在做商品详情开发中,会使用MongoDB来进行数据聚合缓存。

 

2、Redis和 MongoDB的区别
(1)内存管理机制

Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。

MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

 

(2)支持的数据结构

Redis支持的数据结构类型较多,比如string、set、zset、list、hash、hyperloglog、geo等。

MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

 

(3)数据量和性能

当物理内存够用的时候,redis>mongodb>mysql

当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。

注:实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。

但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。mongodb还是能够保证性能。

注:Redis虚拟内存介绍

 

(4)性能

mongodb依赖内存,TPS较高;Redis依赖内存,TPS非常高。性能上Redis优于MongoDB。

 

(5)可靠性

mongodb从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性;

Redis依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能。

可靠性上MongoDB优于Redis。

 

(6)数据分析

mongodb内置数据分析功能(mapreduce),而Redis不支持。

 

(7)事务支持情况

Redis 事务支持比较弱,只能保证事务中的每个操作连续执行;mongodb不支持事务。

 

(8)集群

MongoDB 集群技术比较成熟,Redis从3.0开始支持集群。

 

二、Linux下安装 MongoDB

注:这里采用Docker方式安装MongoDB

  1. # 从DockerHub上拉取MongoDB镜像
  2. docker pull mongo
  3. # 创建容器
  4. docker run -itd --name MongoDB-test --privileged -p 27017:27017 -v /Users/chiyongfu/MongoDB:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=haveyb mongo

注:创建容器的同时,通过-v参数指定了共享目录,通过-p参数指定了端口映射,通过-e参数指定了MongoDB的用户名和密码

 

三、MongoDB的使用

1、进入创建好的容器
  1. # 进入容器
  2. docker exec -it MongoDB-test mongo

 

2、通过Navicat 连接我们的MongoDB

用户名填写我们创建容器指定的用户名admin,密码填写我们创建容器时指定的密码haveyb

保存之后,就可以看到,已经连接成功了。

剩下的操作和Navicat操作MySQL类似,比如创建数据库…



Top