待学习--中间件

MongoDB

MySQL与MongoDB对比:

MySQL的行列、表结构;MongoDB的文档Document、collection集合结构。

MongoDB的一个文档中,也存在主键ID构建的索引。

MySQL是一个读写数据表行列的服务进程,MongoDB是用于读写集合文档的服务进程。

MongoDB可以看作是一个数据结构灵活的MySQL。

  • database:数据库,与MySQL的database类似;
  • collection:数据集合,相当于 MySQL 的 table;
  • document:数据记录行,相当于 MySQL 的 row,但与mysql等关系型数据库表不同,MongoDB是以key,value形式存储的;
  • field:数据域,相当于 MySQL 的 column;
  • _id:MongoDB中存储的文档必须有一个_id键,默认创建一个ObjectId对象。ObjectId类似于唯一主键,占用12bytes【Unix时间戳(四个字节)、机器识别码(三个字节)、进程pid(两个字节)、随机数(三个字节)】,可以很快生成和排序。

MongoDB是什么?

MongoDB是一个高性能、开源且无模式的分布式NoSQL数据库,在很多场景下可以代替传统的关系型数据库。MongoDB使用C++编写,不支持SQL,但自己有着强大的语法功能。

它使用BSON(Binary Serialized Document Format)作为自己的数据存储和传输格式,该格式是一种类似于JSON的二进制序列化文档,支持嵌套对象和数组。

BSON 编码是什么?

JSON + Binary ==> BSON

将一个个BSON文档组成的集合写入磁盘中***.wt文件中。

变种B+树索引

COW写时复制技术,保证高并发读写性能。

缓存策略(Cache + LRU淘汰)

持久化保障:Journal写前日志 + Checkpoint机制

WiredTiger 是什么?和Server层架构的关系

存储引擎的定位与核心功能接口

单机MongoDB的本质,对比MySQL架构的相似性

高扩展性设计:分片集群

分片(Shard)数据切分逻辑

路由服务(mongos)与配置中心(Config Server)是什么

副本集Replica Set是什么?

分布式MongoDB集群是什么

命令 释义
show dbs 查看所有数据库
use 数据库名称 切换数据库,如果数据库不存在则创建
db 查看当前所在数据库
db.stats() 查看当前数据库详情
show collections 查看数据库下的所有集合
db.createCollection("user") 创建一个名为user的集合
db.集合名称.insert({"name":"张三","age":20})) 向集合中插入一条key:value格式的数据
db.集合名称.remove({删除条件}) 从集合中删除符合条件的数据
db.集合名称.find({条件}) 条件查询数据
db.集合名称.findOne() 返回第一条数据
db.集合名称.count() 统计集合中的总数
db.集合名称.find().count() 根据条件统计集合中的总数
db.集合名称.find().sort({age:1}) 根据字段排序,1:升序,-1:降序
db.集合名称.find().skip(2).limit(3) 分页查询,skip跳过第几条,limit查询多少条
db.集合名称.find({'age':{$gt:25}})、db.集合名称.find({'age':{$gte:25}}) 集合 age > 25、集合 age >= 25
db.集合名称.find({'age':{$lt:25}})、db.集合名称.find({'age':{$lte:25}}) 集合 age < 25、集合 age <= 25
db.集合名称.find({'age':{$ne:25}}) 集合 age != 25
db.集合名称.find({'age':{$eq:25}}) 集合 age = 25
db.集合名称.find({'age':{$in:[23,27]}})、db.集合名称.find({'age':{$nin:[23,27]}}) 集合 age in (23,27) 、集合 age not in (25,27,23)
db.集合名称.stats() 查看索引相关情况
db.集合名称.ensureIndex({key:1}) 创建普通索引,key就是要加索引的字段
db.集合名称.find({key:value}).explain() 查看查询计划
db.集合名称.dropIndex({key:1}) 删除索引
db.集合名称.ensureIndex({key:1},{unique:true}) 创建唯一索引

RabbitMQ

ES

Hadoop

Nignx

Redis

相关推荐
wdfk_prog20 分钟前
[Linux]学习笔记系列 -- [fs]mbcache
linux·笔记·学习
心前阳光20 分钟前
Unity通过ScriptableObject学习访问者模式
学习·unity·访问者模式
Freshman小白30 分钟前
《现代电力电子技术及应用》2025网课答案
学习·答案·网课答案
上天_去_做颗惺星 EVE_BLUE1 小时前
C++学习:学生成绩管理系统
c语言·开发语言·数据结构·c++·学习
Hcoco_me2 小时前
大模型面试题23:对比学习原理-从通俗理解到核心逻辑(通用AI视角)
人工智能·rnn·深度学习·学习·自然语言处理·word2vec
知识分享小能手2 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04中的过滤器知识点详解(13)
linux·学习·ubuntu
stars-he3 小时前
FPGA学习笔记(8)以太网UDP数据报文发送电路设计(二)
网络·笔记·学习·fpga开发
xiaoxiaoxiaolll3 小时前
金属材料多尺度计算模拟
人工智能·学习
麻雀无能为力3 小时前
Diffusion Model(DDPM)学习笔记
笔记·学习
Chloeis Syntax3 小时前
MySQL初阶学习日记(7)--- 事务
java·数据库·笔记·学习·mysql