待学习--中间件

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

相关推荐
y = xⁿ4 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
HugoStudio_SWAN7 小时前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_8 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
__zRainy__10 小时前
Node系列 · Express:常用的中间件
中间件·node.js·express
存在morning10 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶11 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
2601_9621819612 小时前
【ROS2 中间件RMW】基于FastDDS共享内存实现ROS2跨进程零拷贝通讯
中间件
未若君雅裁12 小时前
上下文压缩双刃剑-Summarization与ContextEditing中间件实战
python·中间件·langchain
凯尔萨厮13 小时前
Java学习笔记十(注解)
java·笔记·学习
JoannaJuanCV13 小时前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器