Database

  • 应届生如何半年找到一份数据库内核开发的工作

    这篇文章结合作者自己的春招经历,整理了一条面向应届生的数据库内核方向学习与求职路线。正文先交代自身背景和时间投入方式,再按顺序分析 6.824、CS144、CMU 15-445、TinyKV 等项目各自的价值、收益和推荐程度,同时补充简历栏目的组织思路,以及数据库、分布式系统、事务并发控制、Raft、算法和设计题等高频面试知识点。最后文章还汇总了个人的面试结果,用实际经历说明这条学习路径的可行性和取舍。

    2022年3月22日
    19.2K106
  • 分布式原子提交协议大全

    这篇文章围绕分布式系统中的原子提交问题,梳理了 2PC、3PC、TCC 和 SAGA 等常见协议的定位、流程与局限。正文先说明为什么 2PC、3PC 更适合被称为 atomic commitment protocol,而不是广义共识算法,再分析 2PC 在协调者和参与者不同故障场景下的恢复行为,以及它在阻塞和数据不一致上的问题;随后介绍 3PC 如何通过超时机制缓解阻塞但仍无法避免不一致,最后再用业务视角解释 TCC 的重试式确认/取消流程,以及 SAGA 通过补偿事务拆分大事务的设计思路。

    2022年2月2日
    2.2K1
  • 2021 CMU 15-445 实验笔记

    这篇文章记录了作者完成 2021 CMU 15-445 数据库课程各个项目时的实现思路与踩坑经验,内容覆盖 Buffer Pool、Extendible Hash Table、查询执行器和事务并发控制。正文先概述课程价值和各个 Project 的难度排序,再分别总结 LRU Replacement Policy、Buffer Pool Manager、并行 Buffer Pool、可扩展哈希表的桶与目录设计、Volcano 模型下的执行器实现,以及事务相关模块的关键注意点。文章除了复盘代码层面的实现细节,也强调了配合课程 PPT 和数据库教材理解查询处理、事务与并发控制的重要性。

    2022年2月2日
    15.2K204
  • Talent Plan TinyKV 白皮书

    这篇文章记录了作者参加 PingCAP Talent Plan TinyKV 学习营、完成 TinyKV 项目后的整体复盘,并汇总了配套白皮书、经验和踩坑总结。正文先说明比赛结果、性能评分异常的猜测以及白皮书各章节入口,随后从硬件准备、测试方式和心态管理谈起,分析 TinyKV 在文档完整性、测试覆盖度和事务实现理解上的几个难点,并给出各个 Project 的难度排序与推荐完成顺序。文章最后补充了参考资料、批量跑测试脚本,以及对整个 TinyKV 学习过程的个人反思。

    2022年1月9日
    10.1K49
  • 2021 MIT 6.824 札记

    这篇文章总结了作者完成 2021 MIT 6.824 四个实验过程中的设计思路和踩坑经验,内容覆盖 MapReduce、Raft、KV Raft 和 Sharded KV。正文先说明 Lab 1 中 task 分发与超时重试的实现方式,再重点展开 Lab 2 里 Raft 的后台线程、超时控制、日志同步、持久化和 snapshot 处理,以及常见的死锁、过期回复和 Figure 8 等关键问题;后半部分继续介绍基于 Raft 的 KV 服务如何做请求去重、日志压缩,以及在分片 KV 场景下如何处理 shard controller、配置变更和 shard 迁移。

    2021年8月9日
    8.1K0