待学习--中间件

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

相关推荐
阿蒙Amon7 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
AI绘画哇哒哒7 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
戌中横8 小时前
JavaScript——预解析
前端·javascript·学习
●VON9 小时前
React Native for OpenHarmony:2048 小游戏的开发与跨平台适配实践
javascript·学习·react native·react.js·von
ZH15455891319 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
xcLeigh9 小时前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh9 小时前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics
GHL28427109010 小时前
分析式AI学习
人工智能·学习·ai编程
lpruoyu10 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
野犬寒鸦10 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法