面向文档的NoSQL数据库MongoDB(下)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 面向文档的NoSQL数据库MongoDB(下)

锁机制


悲观锁

悲观锁并发控制

  • 使用写锁来保护资源不被同时访问
  • 读写操作为互斥操作

image.png

image.png

1、sql解析
2、创建一个写命令
3、从磁盘中读文档 把数据读取到内存
4、针对内存数据执行写命令
5、对内存结构做修改(仅在这一步加锁)
6、返回结果


乐观锁

MongoDB 3.0 WT MVCC机制

乐观派 lock-free并发控制

image.png

image.png


压缩算法


Snappy

image.png


遇到的坑及解决方案


大量删除数据及解决方案

背景

image.png

image.png


大量数据碎片(空洞)及解决方案


背景


image.png


数据删除完之后 会留下很多空洞 不会马上回收

早期用的MMAP
空洞数据也会加载到内存中去
比如64G内存 大量空洞数据 有效数据仅占内存10G

解决方案

image.png

image.png

image.png

image.png

搜索前85G 压缩后34G 节省了51G内存 大大提升了性能

上述步骤大致流程

1、把从库 rm -rf *
2、重启从库
3、从主库重新同步一份 从库上面完全没有碎片
4、主库上执行stepDown 主库变成从库 从库变成主库
5、删掉从库 重启 再同步 同步完了 从库就变成新的了
(删除之后同步数据 碎片数据不会同步)
注:
a、一主二从 主库降权 数据最新的从库会提升为主
b、主从同步之间丢失的数据 业务系统通过补偿机制保存MongoDB
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
12天前
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
33 2
|
5天前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
23 2
|
5天前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
11 1
|
11天前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
12 1
|
12天前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
17 2
|
7天前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
11天前
|
NoSQL MongoDB
MongoDB 删除文档
10月更文挑战第15天
23 0
|
12天前
|
存储 JSON NoSQL
MongoDB 插入文档
10月更文挑战第14天
16 0
|
16天前
|
存储 SQL 分布式计算
NoSQL 简介
10月更文挑战第10天
26 0
|
17天前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~