「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
最近本人在学习云函数, 云函数里面的云数据库,不管是腾讯云还是阿里云使用的数据库都是monggoDB.
阿里云使用的mongoDB数据库版本为3.4,腾讯云使用的版本是4.0。 (来源)
安装
MongoDB官网:www.mongodb.com/zh
windows下安装mongodb
下载msi安装程序
一步一步安装即可
配置环境变量
mongo 默认是会安装到C盘的位置,如果你不改。那么就是和我的一样。在系统环境变量中加入:C:\Program Files\MongoDB\Server\5.0\bin
此时就可以在终端启动mongo了,如下:
如果出现上面的内容,那就证明你的windows的mongo就安装成功啦
MacOS下安装mongodb
安装流程:docs.mongodb.com/manual/tuto…
首先安装homebrew
注意事项:
在安装过程中如果出现权限不足的问题,输入命令:
sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig
复制代码
添加开启自启动服务时需要使用sudo
安装robo 3T
类似于mysql的navicat
下载地址:robomongo.org/
基础概念
- db:和mysql的概念一致
- collection:集合,类似于mysql中的表
- document:每个集合中的文档,类似于mysql中的记录 Primary Key:和mysql中的主键含义一致,每个document都有一个主键 field:文档中的字段
mongodb属于nosql中的文档型数据库,每个文档相当于是一个对象,它没有列的概念,也没有表关系
由于它是一个nosql数据库:
- 无sql语句
- 使用极其简单,学习成本非常低
- 由于没有集合之间的关联,难以表达复杂的数据关系
- 存取速度极快
由于它是一个文档型数据库:
- 数据内容非常丰富和灵活
- 对数据结构难以进行有效的限制
对比 Redis
大家可能会觉得,mongo 和 redis 都是nosql 的数据库,并且存取的速度也是非常快,那么两者对比的情况是怎样的呢?来一个经典的对比表格:
比较指标 | MongoDB(v2.4.9) | Redis(v2.4.17) | 比较说明 |
实现语言 | c++ | c/c++ | - |
协议 | BSON,自定义二进制 | 类telnet | - |
性能 | 依赖内存,TPS较高 | 依赖内存,TPS非常高 | Redis优于MongoDB |
可操作性 | 丰富的数据表达,索引;最类似于关系型数据库,支持丰富的查询语句 | 数据丰富,较少的IO | MongoDB优于Redis |
内存及存储 | 适合大数据量存储,依赖系统虚拟内存,采用镜像文件存储;内存占用率比较高,官方建议独立部署在64位系统 | Redis2.0后支持虚拟内存特性(VM) 突破物理内存限制;数据可以设置时效性,类似于memcache | 不同的应用场景,各有千秋 |
可用性 | 支持master-slave,replicatset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切片机制 | 依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制;不支持auto sharding,需要依赖程序设定一致性hash机制 | MongoDB优于Redis;单点问题上,MongoDB应用简单,相对用户透明,Redis比较复杂,需要客户端主动解决.(MongoDB一般使用replicasets和sharding相结合,replicasets侧重高可用性以及高可靠,sharding侧重性能,水平扩展) |
可靠性 | 从1.8版本后,采用binlog方式(类似Mysql) 支持持久化 | 依赖快照进行持久化;AOF增强可靠性;增强性的同时,影响访问性能 | |
一致性 | 不支持事务,靠客户端保证 | 支持事务,比较脆,仅能保证事务中的操作按顺序执行 | Redis优于MongoDB |
数据分析 | 内置数据分析功能(mapreduce) | 不支持 | MongoDB优于Redis |
应用场景 | 海量数据的访问效率提升 | 较小数据量的性能和运算 | MongoDB优于Redis |
本文暂时没有评论,来添加一个吧(●'◡'●)