【DBA课程-笔记】第 3 章:MongoDB数据库核心知识

这篇具有很好参考价值的文章主要介绍了【DBA课程-笔记】第 3 章:MongoDB数据库核心知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内容

一、MongoDB 数据库架构

A. MongoDB数据库体系架构

1. 存储引擎(MongoDB Storage Engines):

2. MongoDB 数据逻辑架构

二、MongoDB 存储引擎

A. 查看mongodb服务器的状态

B. 查看引擎信息(4.2.1 没有这个命令)

C. 查看 - 集合状态(包含引擎信息)

三、集合 Collection

A. 创建集合

 B. 查看集合状态

 C. 查看集合所有文档 + 美化

四、文档模型 与 BSON

A. MongoDB 文档模型

B. MongoDB文档模型设计原则

1.数据模型两种方式

2. Mongodb文档结构分为

2-1:引用方式

2-2:嵌入式 (文档嵌套)

五、日志Log机制(数据安全问题)

A. Mongodb 日志Journa

B. Mongod.conf 控制日志

 C. 深入MongoDB日志模式底层原理

D. 控制WiredTiger日志持久化

E. 配置文件 mongod.conf 

1. 地址

2. 内容说明

3. windows带日志下--服务器启动(演示)

六、MongoDB 总结

A. Document 内嵌 VS 引用 优缺点

B. MongoDB存储引擎主要有哪些 ?C. 几种主流存储引擎的差异?优缺点?D. MongoDB日志结构 ?E. MongoDB恢复数据库数据的原理?F. BSON如何保证数据的序列化?G. MongoDB文档模型 ?H. MongoDB文档模型优缺点?I. 如何控制MongoDB日志写入时间?


一、MongoDB 数据库架构

A. MongoDB数据库体系架构

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

1. 存储引擎(MongoDB Storage Engines):

  • WiredTiger (对处理读写,并发更灵活)
  • MMAPv1
  • In-Memory (企业版使用)
  • Encrypted
  • 3rd Party Engine

2. MongoDB 数据逻辑架构

  • 二进制BSON文档
  • Journal 日志:性能优化
  • Index 索引:查询优化
  • Collection:
  • Capped:可以模拟数据排队的消息队列
  • 语言执行引擎:

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

二、MongoDB 存储引擎

  • 作用:解决数据存储和磁盘的交互,以及索引机制,大量IO操作
  • 存储引擎负责管理数据存储,包括内存和磁盘2个区域

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

引擎名 说明 描述
MMAPV1 【官方】3.0之前版本
WiredTiger 【官方】3.0之后版本(默认) 锁机制提升性能
Encrypted 【官方】企业版
In-Memory 【官方】企业版
RocksDB Facebook可以结合mongodb,以及mysql一起使用 写入性能优化
TerarkDB 字节跳动工程团队 存储空间 + 查询性能优化
其他引擎

如: 阿里云提供支持,RocksDB 和 TerarkDB,

WiredTiger默认

A. 查看mongodb服务器的状态

db.serverStatus()

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

B. 查看引擎信息(4.2.1 没有这个命令)

db.serverStatus().storgeEngine

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

C. 查看 - 集合状态(包含引擎信息)

db.users.stats()

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

三、集合 Collection

  • 类似于关系型数据库中的表 Table
  • MongoDB 数据库可以包含多个集合一个集合可以包含多个文档( Document)
  • 如果集合不存在,MongoDB会在保存第一条数据时自动创建集合(懒创建)
  • 可以使用 db.createCollection0 创建集合
  • 集合不限制文档Document的字段架构
  • MongoDB 3.2开始 可以启用 Schema Validation 强制验证文档结构
  • MongoDB还提供了Capped Collection固定容量大小的集合

A. 创建集合

  • 创建集合名为:log
  • 固定容量大小:5242880 ,单位字节
  • 文档个数: max:5000 ,表示最多5000个文档
db.createCollection("log",{ capped : true, size : 5242880, max : 5000 })

 B. 查看集合状态

db.users.stats()

 C. 查看集合所有文档 + 美化

db.users.find().pretty()

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

四、文档模型 与 BSON

A. MongoDB 文档模型

  • Document 文档类似于关系型数据库中的行Row数据基本单元
  • 文档结构类似于JSON文档存储键值对Key-Value数据
  • MongoDB保存数据的基本格式是BSON Document
  • BSON是二进制JSON,目的节约存储空间
  • MongoDB的文档支持更丰富的数据类型
  • _id 是默认的主键,使用的是ObjectId类型保证唯一,也可以自定义
  • 字段存储有特定的顺序允许嵌套复杂类型,如文档类型的数据
  • 除了数据使用文档、查询、过滤、索引管理等功能也全部使用文档(以文档为操作单位
  • BSON 文档大小有 16M的限制
  • 超出16M 限制的数据可以使用GridFS存储

B. MongoDB文档模型设计原则

1.数据模型两种方式

  • Normalized 范式 (设计标准,为了节省磁盘空间
  • Denormalized 反范式(随着磁盘价格大幅度下降,为了追求性能,不计成本累加硬件


2. Mongodb文档结构分为

  • 范式】引用方式 : 也就是RDBMS中的外键关联
  • 反范式】嵌入式 : 也就是Ducoment文档中的内嵌节点 
2-1:引用方式

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

2-2:嵌入式 (文档嵌套

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

五、日志Log机制(数据安全问题)

A. Mongodb 日志Journa

  • 为了防止突发故障导致的数据丢失,MongoDB提供了日志机制
  • WiredTiger使用写前日志 write-ahead transaction log 和Checkpoint检查点 一起来确保数据正确持久性
  • 如果MongoDB日志存在检查点,就使用日志重放修改直到上一个检查点
  • 日志使用了snappy压缩库
  • 最小日志大小128字节,小于此大小不启用压缩
  • 单节点,不启用日志,可能导致数据修改丢失
  • WiredTiger引擎日志默认100M毫秒刷一次磁盘日志文件最大100M,超过会自动创建新文件
  • WiredTiger引擎会自动删除直到上一个CheckPoint的日志文件

B. Mongod.conf 控制日志

  • 启动日志
  • 日志路径:/data/db/journal

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志

 C. 深入MongoDB日志模式底层原理

  • Shared View:共享内存数据视图
  • 数据写入周期是60S

【DBA课程-笔记】第 3 章:MongoDB数据库核心知识,架构师之路-java,笔记,mongodb,mongo日志文章来源地址https://www.toymoban.com/news/detail-591628.html

D. 控制WiredTiger日志持久化

  1. MongoDB的日志在DbPath目录下的Journal目录下
  2. 启动参数 --journal 开启,使用 --nojournal 关闭,也可以配置文件关闭
  3. WiredTiger默认提交日志时间是间隔100毫秒
  4. 3.2 版本WiredTiger写入日志间隔默认50毫秒
  5. 3.6 版本以后WiredTiger设置检查点间隔是60秒
  6. 如果 写入操作设置了 j: true,引擎会立即写磁盘
  7. 日志大小是100MB,写满以后,重新创建日志文件
  8. 如果强制关闭Mongod进程可能会导致日志丢失
  9. 使用storage.journal.commitIntervalMs控制间隔
  10. In-Memory引擎不支持此参数 (控制持久化参数)
  11. MMAPv1引擎默认提交日志时间是间隔30毫秒
  12. WiredTiger引擎自动删除直到上一个CheckPoint的日志文件

E. 配置文件 mongod.conf 

1. 地址

  • linux下:/etc/mongod.conf
  • docker中:/data/configdb/ ,一般默认没有,可以通过部署时映射到该目录下

2. 内容说明

  • dbpath :数据库文件存放目录
  • path:日志存放目录
  • port:端口号
  • bindip : 0.0.0.0 允许外部容器访问 ,注:不要写127.0.0.1
  • auth : 不使用密码账户登录
# Where and how to store data.
storage:
  dbPath: /mnt/mongodb/data
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path:  /mnt/mongodb/logs/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

#auth 

auth:false

3. windows带日志下--服务器启动(演示)

  • linux/docker 默认自动启动服务器
# 服务器启动(默认开启日志)
mongod.exe --dbpath "c:\\MongoDB\data\db" --logpath "C:\\MongoDB\data\log\mongo.log"

# 服务器启动(开启日志)
mongod.exe --dbpath "c:\\MongoDB\data\db" --journal --logpath "C:\\MongoDB\data\log\mongo.log"

# 服务器启动(关闭日志)
mongod.exe --dbpath "c:\\MongoDB\data\db" --nojournal --logpath "C:\\MongoDB\data\log\mongo.log"

# 客户端启动
mongo.exe --port 27017

六、MongoDB 总结

A. Document 内嵌 VS 引用 优缺点

内嵌 引用
优点 快速读取 节约空间
关系灵活
数据更新时候比较简单
缺点 数据冗余
数据更新时候比较复杂
需要从多个表读数据

B. MongoDB存储引擎主要有哪些 ? C. 几种主流存储引擎的差异?优缺点? D. MongoDB日志结构 ? E. MongoDB恢复数据库数据的原理? F. BSON如何保证数据的序列化? G. MongoDB文档模型 ? H. MongoDB文档模型优缺点? I. 如何控制MongoDB日志写入时间?

到了这里,关于【DBA课程-笔记】第 3 章:MongoDB数据库核心知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle数据库给用户授权DBA权限&Oracle查看哪些用户具有DBA权限

    步骤一:以sysdba身份登录到Oracle数据库 在授予DBA权限之前,我们首先要以sysdba身份登录到Oracle数据库。使用以下命令登录: 步骤二:创建用户(如有用户跳过) 要授予DBA权限,首先需要创建一个新用户。使用以下命令创建一个新用户: 步骤三:授予DBA权限 一旦用户创建成

    2024年02月09日
    浏览(53)
  • VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

    这个是B站Up主:程序员程子青的视频  C++封装Mysql增删改查操作_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1m24y1a79o/?p=6spm_id_from=pageDrivervd_source=a934d7fc6f47698a29dac90a922ba5a3 安装mysql :mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径-CSDN博客 创建数据库和表: 参考这篇文章:w

    2024年01月19日
    浏览(49)
  • 开源数据库MYSQL DBA运维实战 第一章 部署

    数据库管理系统  DBMS    SQL(RDS关系型数据库) DBA  工程师 DDL  数据库定义语言:数据库,表,视图,索引,存储过程,函数 DML  数据库操纵语言:插入数据insert,删除数据delete,更新数据update DQL  数据库查询语言:查询数据selete DCL  数据库控制语言:例如控制用户的访

    2024年02月21日
    浏览(59)
  • PG-DBA培训04:PostgreSQL数据类型与数据库设计规范

    一、风哥PG-DBA培训04:PostgreSQL数据类型与数据库设计规范 本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL数据库SQL开发与应用实战阶段之PostgreSQL数据类型与数据库设计规范,学完本课程可以掌握PostgreSQL SQL语句基础讲解,PostgreSQL SQL语言基础知识,安

    2024年02月11日
    浏览(58)
  • 开源数据库MYSQL DBA运维实战 第四章 集群

    mysql复制技术 集群目的 负载均衡:解决高并发 高可用HA:服务可用性 远程灾害:数据有效性 图示 类型 M M-S M-S-S... M-M M-M-S-S 原理图示 图示 概念 1.在主库上把数据更改 (DDL DML DCL) 记录到二进制日志 (BinaryLog) 中。 2.备库/0线程将主库上的日志复制到自己的中继日志 ( Relay Log) 中

    2024年02月21日
    浏览(64)
  • 开源数据库MYSQL DBA运维实战 第三章 备份

    丢/删 1.数据的一致性 2.服务的可用性 3.1物理备份/冷备份 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的mysql tar,cp,scp 拷贝数据,有点快,缺点服务停止 3.2逻辑备份/热备份 备份的是建表,建库,插入等操作所执行SQL语句(DDL,DML,D

    2024年02月21日
    浏览(102)
  • 高级DBA带你处理Mysql数据库10亿大数据条件下迁移实战

    在实际工作中,有些特殊的场景需要进行生产数据迁移,并且生产环境的数据量非常大,比如上10亿数据,并且迁移实施的时间并有所限制,比如9小时内、48小时内,必须恢复生产。 并且在这么庞大的数据量条件下,还要进行数据过滤调整! 此种情况下,传统Java jdbc多线程的

    2024年04月26日
    浏览(49)
  • 开源数据库Mysql_DBA运维实战 (备份与还原)

    备份对于数据库而言是至关重要的。当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时,使用一种有效的数据备份方案,就可以快速解决以上所有的问题。MySQL提供了多种备份方案,包括: 逻辑备份、物理备份、全备份以及增

    2024年02月12日
    浏览(73)
  • 开源数据库Mysql_DBA运维实战 (部署服务篇)

             1.数据库能做什么 2.数据库的由来 数据库的系统结构❀ 1.数据库系统DBS 2.SQL语言(结构化查询语言) 3.数据访问技术 部署Mysql❀ 1.通过rpm安装部署Mysql 2.通过源码包安装部署Mysql 1.数据库能做什么 a.不论是淘宝,吃鸡,爱奇艺,抖音,快手,知乎,百度贴吧等,众所周

    2024年02月14日
    浏览(46)
  • 开源数据库MYSQL DBA运维实战 第二章 SQL

    1.1定义库 创建业务数据库         语法:CREATE  DATABASE   数据库名;         数据库命名要求:                 区分大小写                 唯一性                 不能使用如create  select                 不能单独使用数字和特殊符号如-                

    2024年02月20日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包