Mongo 问题汇总

Posted by lichao modified on October 14, 2022

最基础功能的引擎

  1. 如何在内存通过B+Tree保存KV数据并快速检索
  2. 如何在磁盘通过B+Tree保存KV数据并快速检索
  3. 数据集很大,如何统一内存和磁盘B+Tree
  4. 如何在B+Tree上查找一个Key
  5. Key数量增加,如何在内存和磁盘分裂B+Tree
  6. Key数量减少,如何在内存和磁盘合并B+Tree
  7. 如何管理B+Tree的内存Page,以及如何管理空闲内存
  8. 如何管理B+Tree的磁盘Page(Extend),以及如何管理空闲磁盘(Extend)
  9. 如何管理数据库里的多个B+Tree,每个B+Tree的元信息是什么,数据库的元信息是什么

带日志功能的引擎

  1. 如何保证修改不会丢失
  2. 为什么不直接将修改的数据直接落盘
  3. 如何在持续有写入的情况下做全量数据落盘(checkpoint)
  4. 如何从全量数据及日志中恢复完整的数据
  5. WriteConcern参数里j的作用是什么

MVCC

  1. MVCC(Multi-Version Concurrency Control )是什么,为什么需要引入MVCC
  2. MVCC里面的Version是什么,在WT引擎里,用什么表示Version
  3. MVCC里面的每个Version的Value,是如何保存在内存中的,磁盘上是否有多版本
  4. MVCC里面的snapshot是什么,WT是如何实现snapshot的,以及它是如何控制可见性和写写冲突的

MVCC对引擎的影响

  1. MVCC如何影响B+Tree上查找Key
  2. MVCC如何影响B+Tree上插入Key
  3. MVCC如何影响B+Tree上修改Key
  4. MVCC如何影响B+Tree上删除Key
  5. MVCC如何影响B+Tree的分裂和合并
  6. MVCC如何影响B+Tree的落盘(checkpoint)
  7. WT引擎里面如何提高B+Tree的并发度

MongoDB分布式

  1. MongoDB复制集是什么
  2. Raft协议是什么
  3. Oplog是什么
  4. MongoDB的Raft跟论文Raft有什么区别
  5. WriteConcern参数是为了解决什么问题
  6. ReadConcern参数是为了解决什么问题
  7. HLC时钟是什么
  8. 因果一致性Session是什么
  9. ChangeStream实现机制

MongoDB分布式对引擎的影响

  1. MongoDB分布式对WT引擎的MVCC模块的影响是什么
  2. MongoDB分布式对全量数据落盘(checkpoint)的影响是什么
  3. MongoDB分布式里的Oplog与WT引擎的WAL日志的关系和区别是什么

事务

  1. 常见的4种事务隔离级别是什么
  2. Snapshot隔离是什么
  3. Snapshot与串行化的区别
  4. 如何保证数据+索引+Oplog的完整性
  5. uncommit/commit/abort事务对MVCC引擎的影响是什么
  6. MongoDB分布式对事务的影响

Evict & Reconcile

  1. 为什么需要evict
  2. evict是3种方式?
  3. dirty page evict后会怎么样?
  4. evict对checkpoint的影响?
  5. evict与 分布式+MVCC 的影响?(事务可见性)
  6. 为什么需要Reconcile
  7. 一个内存page会对应多个磁盘page吗

锁与并发

  1. 引擎层提高并发的机制有哪些(至少3点)
  2. HP是如何工作的,WT引擎哪些地方用到HP
  3. CAS是如何工作的,WT引擎哪些地方用到CAS
  4. COW/ROW是如何工作的,WT引擎哪些地方用到COW/ROW
  5. gen是如何工作的

多Shard

  1. 分布式事务实现方式有哪些
  2. chunk分裂流程
  3. chunk搬迁流程
  4. 多Shard对备份的影响
  5. 多Shard对分布式Oplog/WAL的影响

LST/PST

  1. 为什么要做计算存储分离
  2. LST实现方式是什么
  3. PST实现方式是什么
  4. API接口是什么
  5. Log shipping流程是什么
  6. Page merge delta的场景,什么时候调用apply接口