数据库开发手册

了解数据库的内部工作原理对于专业人员和软件工程师至关重要。深入了解数据库系统的架构和工作原理,能够帮助优化性能、解决问题,并提高系统的稳定性和安全性。这篇文章将帮助您了解为什么深入学习数据库内部工作原理对于专业发展和软件工程技能提升至关重要。
clickgpt_line.png_noView
介绍
目录

数据库在现代计算系统中扮演着至关重要的角色,为数据的高效存储、检索和管理提供了基础。深入了解数据库的内部工作原理对于数据库专业人员和任何希望提升软件工程技能的个人来说都是宝贵的资产。

数据库的关键作用

数据库是信息系统的核心,承担了多项关键职责:

  • 数据存储: 提供了结构化和持久化的数据存储方式,确保数据安全和可靠性。
  • 数据检索与处理: 能够快速、高效地检索和处理大量数据,支持复杂的查询和分析操作。
  • 数据管理: 提供了对数据的管理和维护功能,包括数据备份、恢复、安全性和权限管理等。

内部工作原理的重要性

了解数据库的内部工作原理对专业人士和软件工程师至关重要:

  • 优化性能: 了解数据库引擎的工作原理有助于优化查询和操作,提高系统性能。
  • 故障排除: 理解数据库内部结构有助于快速发现和解决问题,提高系统稳定性。
  • 安全性和优化设计: 知晓数据库内部原理可以帮助设计更安全、更高效的数据库架构。

为什么值得学习?

对于数据库专业人士:

  • 深入专业领域: 了解数据库内部工作原理是进一步精进专业技能的必要步骤。
  • 解决复杂问题: 能够更好地解决复杂的数据库性能和设计问题。

对于其他软件工程师:

  • 全面性技能: 了解数据库的内部工作原理可以增加全面性技能,提高工程能力。
  • 更好的团队合作: 能够更好地与数据库团队合作,理解数据库需求和优化建议。

了解数据库内部工作原理不仅是一项重要技能,更是通往高效数据管理和卓越软件工程的关键一步。

推荐课程、书籍和讲座

推荐课程

  1. CMU 数据库系统 (15-445/645): 由Andy Pavlo教授提供,涵盖数据库系统的基础和高级主题
  2. CMU 高级数据库系统 (15-721): 同样由Andy Pavlo教授提供,专注于数据库系统的更深入内容
  3. UC Berkeley 数据库系统简介: 提供数据库系统的基础知识
  4. Stanford 数据库系统实现: 深入探讨数据库系统的实现细节
  5. Cornell 数据库系统简介: 由Prof. Trummer提供,介绍数据库系统基础
  6. 构建一个简单的数据库: 一步步指导如何构建基础数据库

推荐书籍

  1. Stanford 数据库系统:全面介绍数据库系统理论和实践
  2. 设计数据密集型应用: 详细讨论构建和维护数据密集型应用的挑战和解决方案
  3. 数据库内部: 探索数据库系统内部结构和算法
  4. 数据库基础: 深入理解数据库的基本理论
  5. 数据库系统阅读,第5版: 汇集了数据库领域的关键论文和文章
  6. 分布式数据库系统原理,第4版: 讨论分布式数据库系统的设计和实现

推荐讲座

  1. 大型数据库的数据结构和算法: 探讨用于处理大型数据库的高级数据结构和算法
  2. 从快速原型到高可靠性数据库引擎的旅程: 讲述SQLite数据库从简单原型到成熟产品的发展历程

推荐博客

  1. 关系数据库是如何工作的: 描述关系数据库的工作原理和基本概念
  2. PostgreSQL内部机制: 深入分析PostgreSQL数据库的内部结构和工作原理
  3. 数据库书籍推荐: 推荐阅读的数据库相关书籍
  4. 数据库及其类型: 讲述数据库的基本类型和概念

SQL & 关系代数

  1. CMU 数据库系统 (15-445/645): 同样由Andy Pavlo教授提供,专注于查询规划和优化。
  2. UC Berkeley 数据库系统简介: 提供SQL和关系代数的基础和进阶知识

查询优化器

  1. CMU 数据库系统 (15-445/645): 同样由Andy Pavlo教授提供,专注于查询规划和优化。

  2. 数据库内核杂谈: 由顾仲贤提供,深入探讨数据库优化器的内部工作原理

  3. SQL优化器原理 - 查询优化器综述: 探讨查询优化器的基础原理

规划模型

  1. 数据库内核杂谈:由顾仲贤提供,包括对开源优化器ORCA的深入分析

  2. SQL查询优化原理与 Volcano Optimizer 介绍:由张茄子提供,讨论Volcano优化器的原理

  3. Cascades Optimizer:由hellocode提供,介绍Cascades优化器的概念

  4. 1979,关系数据库管理系统中的访问路径选择, SIGMOD

  5. 1979,主存储器数据库管理系统中的查询处理, VLDB

  6. 1987,模拟退火在查询优化中的应用, SIGMOD

  7. 1988,类语法的功能规则用于表示查询优化替代方案, SIGMOD

  8. 1993,Volcano优化器生成器-可扩展性和高效搜索, ICDE

  9. 1995,用于查询优化的Cascades框架, IEEE数据工程通报

  10. 1998,关系系统中查询优化概述, PODS

  11. 2001,LEO – DB2的学习优化器, VLDB

  12. 2004,通过渐进优化实现鲁棒的查询处理, SIGMOD

  13. 2014,Orca: 用于大数据的模块化查询优化器架构, SIGMOD

  14. 2016,在共享无内容架构上并行化查询优化, VLDB

  15. 2016,MemSQL查询优化器: 分布式数据库中实时分析的现代优化器, VLDB

子查询优化

  1. SQL子查询的优化:由Eric Fu提供,讨论SQL子查询的优化策略

  2. Calcite子查询处理:由一只无情的小猫咪提供,分为两部分,分别讨论Calcite处理子查询的不同方法。

  3. 2001,子查询和聚合的正交优化, SIGMOD

  4. 2009,Oracle中增强的子查询优化, VLDB

  5. 2015,非嵌套任意查询的优化, BTW

连接顺序优化

  1. 2006, 不涉及交叉乘积的最佳bushy连接树的两种现有及一种新的动态规划算法分析, VLDB
  2. 2015, 查询优化器有多好?VLDB
  3. 2018, 非常大的连接查询的自适应优化, SIGMOD

函数依赖与物理属性

  1. 1996, 用于排序优化的基本技术, SIGMOD
  2. 2000, 利用函数依赖进行查询优化, 毕业论文
  3. 2004, 排序优化的高效框架, ICDE
  4. 2010, 将分区和并行计划纳入SCOPE优化器, ICDE

Cost Model

  1. 1996, 在实时数据库中建模MM-DBMS的成本, Real-Time Databases
  2. 2014, 多目标查询优化的近似方案, SIGMOD
  3. 2015, 多目标参数化查询优化, VLDB

统计

  1. 1984,在关系数据库管理系统中准确估计满足条件的元组数量, SIGMOD
  2. 1993,限制最坏情况错误在连接结果大小中传播的最佳直方图, ACM Transactions on Database Systems
  3. 1993,串行直方图的普遍性, VLDB
  4. 1993,平衡直方图的最佳性和实用性以估算查询结果大小, SIGMOD
  5. 1993,改进的直方图用于范围谓词的选择性估计, SIGMOD
  6. 1997,SEEKing真相:关于临时连接成本的真相, VLDB
  7. 2000,用于不同值的估计误差保证, SIGMOD/PODS
  8. 2001,用于不同值查询和事件报告的高度准确答案的独特抽样, VLDB
  9. 2003,直方图的历史, VLDB
  10. 2005,改进的数据流摘要:Count-Min Sketch及其应用, Journal of Algorithms
  11. 2007,用于流数据的新估计算法:Count-min可以做更多
  12. 2009,通过限制基数估计错误的影响来防止糟糕的计划, VLDB
  13. 2010,重新加载直方图:桶多样性的优点, SIGMOD
  14. 2014,利用有序字典在SAP HANA中高效构建具有Q-Error保证的直方图, SIGMOD
  15. 2017,Oracle 12c中的自适应统计信息, VLDB
  16. 2019,悲观的基数估计:中间连接基数的更严格上界, SIGMOD
  17. 2019,深度无监督基数估计, VLDB
  18. 2020,NeuroCard:所有表的一个基数估计器, VLDB
  19. 大数据的摘要:样本、直方图、小波、草图

查询执行

  1. CMU Database Systems (15-445/645)

执行框架

  1. 1994,Volcano-一个可扩展和并行的查询评估系统, IEEE Transactions on Knowledge and Data EngineeringFebruary
  2. 2014,Morsel-驱动的并行性:适应多核时代的NUMA感知查询评估框架, SIGMOD

向量化与编译化

  1. 通用查询执行引擎的开销
  2. 2005,MonetDB/X100:超级流水线化的查询执行, CIDR
  3. 2011,为现代硬件高效编译查询计划, VLDB
  4. 2017,放松操作符融合用于内存数据库:最终使编译、向量化和预取一起工作, VLDB
  5. 2018,关于编译和向量化查询你想知道的一切但不敢问, VLDB
  6. 2018,编译查询的自适应执行, ICDE

连接操作

  1. 2013,多核、主存储连接:排序与哈希再探, VLDB
  2. 2017,展望未来使查询计划更健壮, VLDB

哈希表

  1. CMU Database Systems (15-445/645)
  2. 斐波那契散列:世界忘记的优化(或:整数取模的更好选择)
  3. 你将会用到的所有哈希表大小

Bloom Filter

  1. 2018,SuRF: 快速简洁Trie的实用范围查询过滤, SIGMOD

DDL

  1. 2013,F1中在线异步模式变更, VLDB

关系模型与数据库

  1. 关系数据库是什么?
  2. 关系数据库是什么?

Codd's 规则

  1. Codd的关系数据库系统规则

关系数据模型

  1. 关系模型

关系代数

  1. 在数据库管理系统中介绍关系代数

ER到关系模型

  1. ER模型到关系模型

SQL - 概述

  1. SQL文本函数概述

事务

隔离级别

  1. 一致性模型
  2. 1995,对ANSI SQL隔离级别的批判, SIGMOD
  3. 2000,广义隔离级别定义, 第16届国际数据工程会议论文集

并发控制

  1. CMU 数据库系统 (15-445/645)

  2. CMU 高级数据库系统 (15-721)

  3. [1976,在数据库系统中的一致性和谓词锁概念, Communications of the ACM](http://jimgray.azurewebsites.net/papers/on the notions of consistency and predicate locks in a database system cacm.pdf)

  4. 1981,分布式数据库系统中的并发控制, ACM Computing Surveys

  5. 1981,关于并发控制的乐观方法, ACM Transactions on Database Systems

  6. 1983,多版本并发控制 - 理论和算法, ACM Transactions on Database Systems

  7. 2012,PostgreSQL中的可串行化快照隔离, VLDB

  8. 2012,Calvin:分区数据库系统的快速分布式事务, SIGMOD

  9. 2014,MaaT:云中分布式事务的有效可扩展协调, VLDB

  10. 2014,直面深渊:一千核心的并发控制评估, VLDB

  11. 2014,确定性数据库系统优缺点的评估, VLDB

  12. 2015,用于主内存数据库系统的快速可串行化多版本并发控制, SIGMOD

  13. 2017,内存中多版本并发控制的实证评估, VLDB

  14. 2017,分布式并发控制的评估, VLDB

  15. 2019,用于内存中多版本并发控制的可扩展垃圾收集, VLDB

网络

  1. CMU 高级数据库系统 (15-721)
  2. 2016,慢网络的终结:是时候重新设计了, VLDB
  3. 2016,利用远程内存和RDMA加速关系数据库, SIGMOD
  4. 2017,不要挟我的数据:客户端协议重新设计的案例, VLDB

存储

NoSQL系统

  1. 2006,Bigtable:结构化数据的分布式存储系统, OSDI
  2. 2007,Dynamo:亚马逊高可用的键值存储, SOSP
  3. 2008,PNUTS:雅虎的托管数据服务平台, VLDB
  4. 2010,Cassandra - 分布式结构化存储系统, SOSP
  5. 2019,PNUTS到Sherpa:从雅虎的云数据库中汲取的教训, VLDB

缓冲管理

  1. CMU 数据库系统 (15-445/645)
  2. 1987,关于用内存交换磁盘访问和用内存交换CPU时间的5分钟和5字节规则, SIGMOD
  3. 2008,五分钟规则20年后,以及闪存如何改变规则, ACM Queue
  4. 2018,管理数据库系统中的非易失性内存, SIGMOD
  5. 2018,LeanStore:超越主内存的内存数据管理, ICDE
  6. 2020,Umbra:具有内存性能的基于磁盘的系统, CIDR

磁盘I/O

  1. 关于磁盘I/O,第1部分:I/O的各种形式
  2. 关于磁盘I/O,第2部分:更多I/O形式
  3. 关于磁盘I/O,第3部分:LSM树
  4. 关于磁盘I/O,第4部分:B-Trees和RUM猜想
  5. 关于磁盘I/O,第5部分:LSM树中的访问模式
  6. 确保数据到达磁盘(LWN)
  7. 读、写和空间放大 - 选择2个
  8. 2016,数据访问方法的设计权衡, SIGMOD
  9. 2016,设计访问方法:RUM猜想, EDBT

B-Tree

  1. B树、B+树索引算法原理(上)

  2. B树、B+树索引算法原理(下)

  3. CMU 数据库系统 (15-445/645)

  4. CMU 高级数据库系统 (15-721)

  5. 1979,普遍存在的 B-Tree

LSM-Tree

  1. 1996,Log-Structured Merge-Tree(LSM-Tree)
  2. 2014,分形树与Log-Structured Merge(LSM)树的比较
  3. 2017,WiscKey:SSD意识存储中的键与值分离, TOS
  4. 2019,基于LSM的存储技术:一份调查

学习型索引结构

  1. 2018,学习型索引结构的案例
  2. 2019,学习多维索引
  3. 2020,XIndex:多核数据存储的可扩展学习型索引
  4. 2020,RadixSpline:单遍学习索引,aiDM@SIGMOD
  5. 2020,PGM-index:具有可证明最坏情况下界限的全动态压缩学习型索引,VLDB
  6. 2020,从WiscKey到Bourbon:Log-Structured Merge Trees的学习型索引

序列化和远程过程调用 (RPC)

  1. Protocol Buffers开发者指南
  2. gRPC文档

数据分区

  1. TiDB 内部(I)- 数据存储
  2. DynamoDB的分区行为
  3. 2007,Dynamo: Amazon’s Highly Available Key-value Store

复制与一致性

  1. Tick or Tock? Keeping Time and Order in Distributed Databases
  2. 2012,Consistency Tradeoffs in Modern Distributed Database System Design
  3. 2020,Strong and Efficient Consistency with Consistency-Aware Durability,FAST 2020

共识

  1. University of Cambridge Distributed consensus revised,一篇关于共识,特别是 Paxos 和 Paxos 相关算法的精彩论文
  2. 2014,Ark: A Real-World Consensus Implementation,CoRR

调度

  1. 基于Raft构建大规模分布式存储系统
  2. 2016,在关系数据库即服务中进行自动化的需求驱动资源扩展,SIGMOD
  3. 2019,Anna 中的自动缩放分层云存储,VLDB
  4. 2020,通过弹性资源调度实现自适应 HTAP,SIGMOD
  5. 2020,MorphoSys:面向分布式数据库系统的自动物理设计变形,VLDB

基准测试与测试

  1. 使用go-ycsb对不同数据库进行基准测试(1)
  2. 用于测试 TiDB 分布式 NewSQL 数据库的混沌工具和技术
  3. 创建自定义 Sysbench 脚本
  4. 2010,使用 YCSB 对云服务系统进行基准测试,SOCC

混合事务/分析处理

  1. 2020, TiDB: 基于Raft的HTAP数据库, VLDB
  2. 2020, F1 Lightning: HTAP作为服务, VLDB

TLA+

  1. TLA+视频课程
编程学习
编程学习 免费领取编程学习资料 进编程学习交流群
订阅号
视频号
公众号 关注公众号,回复关键字java领取大厂最新面试题
×
编程学习
免费领取编程学习资料 进编程学习交流群