本文最后更新于 488 天前,其中的信息可能已经有所发展或是发生改变。
MongoDB快速入门小杂记
前因
起因是一台MongoDB虚拟机磁盘95%了,联系系统技术负责人安排删除数据,因数据为生产数据,如果运维的我私下删除会坐牢
,我也不想走OA,于是直接反馈到技术负责人
和我们这边的DB管理员。可能都不想闯这浑水也顺便给讽刺了一波,那我就顺便再复习一下吧。就当这个笔记做个起因我去复习了。
mongodb是什么
MongoDB是一个NoSQL的非关系型数据库 ,支持海量数据存储,高性能的读写。
基本概念
数据库(Database)
是集合的容器,相当于关系型DB(SQL)中的数据库。
集合(Collection)
数据库中的⼀组⽂档,相当于SQL中的表。
⽂档(Document)
集合中的⼀条记录,相当于SQL的表中的⼀⾏。不同的⽂档之间不必有相同的结构,这⼀点是和SQL不同的。
字段(Field)
⽂档中的键值对,相当于SQL中的列。⽐较重要的区别是MongoDB中的⼀个field可以是⼀个JSON对象或者数组。
mongo的体系结构
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
mongoDB存储原理
- mongoDb采用内存加磁盘的方式存储数据
- mongoDb支持数据分片,当单一的服务器中磁盘不够用的时候,还可以串联其他服务器;
- 客户端的请求到达内存时,先在日志中记录下操作记录,然后再去操作内存;
- 内存中的日志每10ms向磁盘中的日志进行同步一次,数据则每分钟同步一次;
- 客户端先去内存中查询数据,内存中没有再去查询磁盘;
- 当客户端写入的时候,会先写入到内存中,内存中写入后请求直接返回,内存中的数据会根据同步策略同步到磁盘;
- 如果机器宕机,在重启服务的时候会解析磁盘中的日志和磁盘中的数据进行对比,将未入到磁盘中的数据写入磁盘,但可能会丢失10ms的数据;
使用docker快速部署mongo
安装
拉取mongo镜像:
docker pull mongo:4.4
创建mongo数据持久化目录
mkdir -p /data/docker/mongodb/data
运行容器
docker run -itd --name mongo -v /data/docker/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
–auth:需要密码才能访问容器服务
创建用户
以 admin用户身份进入mongo
docker exec -it mongodb mongo admin
创建一个用户,mongo 默认没有用户
简单测试
使用mongodb
常用命令
基本命令
创建/插⼊
查找
更新
删除
聚合
聚合主要⽤于处理数据,并返回计算后的结果,⽐如求和、平均值等。
参考
快速引起记忆视频:https://www.bilibili.com/video/BV16u4y1y7Fm
文章:https://blog.csdn.net/ManGooo0/article/details/123803323
我记得你之前做Java来着,转运维了吗
技术太拉了
他的java水平已经到了天花板了,挑战运维了.
太专业了
gpt写的,哈哈哈哈
学他老母,工资不见分你一半.
到时候运维这样和你说你会不会打他