待学习--中间件

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

相关推荐
优雅的潮叭1 小时前
c++ 学习笔记之 volatile与atomic
c++·笔记·学习
啊阿狸不会拉杆2 小时前
《机器学习》第四章-无监督学习
人工智能·学习·算法·机器学习·计算机视觉
Duang007_2 小时前
【万字学习总结】API设计与接口开发实战指南
开发语言·javascript·人工智能·python·学习
啊阿狸不会拉杆2 小时前
《机器学习》第三章 - 监督学习
人工智能·深度学习·学习·机器学习·计算机视觉
sjg200104142 小时前
GoFrame学习随便记3(待续)
学习
千里马学框架3 小时前
跟着google官方文档学习车载音频Car audio configuration
学习·configuration·音视频·aaos·安卓framework开发·audio·车机
代码游侠3 小时前
ARM嵌入式开发代码实践——LED灯闪烁(C语言版)
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习
好奇龙猫3 小时前
【人工智能学习-AI入试相关题目练习-第八次 】
人工智能·学习
saoys3 小时前
Opencv 学习笔记:手动绘制彩色图像的 RGB 通道直方图
笔记·opencv·学习
薛不痒3 小时前
项目:矿物分类(训练模型)
开发语言·人工智能·python·学习·算法·机器学习·分类