【数据库内核】01——从0到1数据库内核实战,挑战数据库领域最强大脑 1

简介: 【数据库内核】01——从0到1数据库内核实战,挑战数据库领域最强大脑

1、数据库系统概述

1.1 给入门小白洗洗脑

1.1.1 为什么学习数据库内核

  • 了解底层
  • 出故障救火
  • 数据库开发不吃青春饭,越老越吃香
  • 未来趋势,国家要防止数据库被老美卡脖子

1.1.2 数据库开发入门难吗

不难。可以从简单的MiniOB的开始,

MiniOB只有几万行,

SQLLite只有二十多万行源码,

还有大神早就写了经典教材

《数据库系统实践》

《数据库系统概念》

而且你们还有我帮你们踩坑。

1.1.3 这篇文章教你什么内容

课程分为两部分。入门与进阶。这篇先带大家入门,该专栏后续还有很多文章带大家深入。


bb2fc5276719436a938cec4ae1d9d313.png

进阶超级超级硬核的~


da19a12e9aad4a4f9799d36461c50a43.png

点击关注不迷路。

1.2 数据库的那些事儿

1.2.1 没有数据库真的让开发头大


6515537b37f44b3a8914f191b5f7d28e.png


a3f460e0b2ee4f4e8f64b202ea94c6aa.png


1.2.2 数据库要解决什么问题

最大的问题归根结是没有进行抽象。

7bee9e6c2f55495fbec2724bfc3f67ab.png

1.2.3 早期的数据库系统


3c641b7a640d4b29946dc5f5839dba30.png

淘汰原因:描述的世界,结构太死板,不灵活。不够简单,无法提供抽象简单数据库语言,根本原因!

1.2.4 现代主流数据库系统

关系型数据库


2f9d6ca5b592467280e351e5ab121c31.png

关系间可以相互转化,不会丢失语义。

逻辑层关系代数,物理层用关系存储清晰。

NoSQL

解决存储容量不能线性扩展的痛点:提出分布式支持数据库无限线性

底层数据模型:K-V,不需要预定义结构


4b7113731dd54b0b9658013e0ee412cf.png

1.2.5 数据库简史

数据库是图灵奖最多的领域,膜拜数据库之神

e043af3dde4647318cd50da4f0f6b403.png

数据库简史

e67ca36ae1fc45288d13f27ac03f5ac7.png

MongoDB:在文档上解决特别好

OceanBase:NewSql + HTAP

Amazon Aurora:云上数据库系统

1.2.6 数据库架构


edfc3352679a47b493b0ff05bf7b4e5f.png

parser:词法分析、语法分析(生成语法树)。

Query result cache:直接对SQL进行硬解析。

resolver:对部分变量进行替换,生成语法树。

plan chache:命中plan chache成功则将其丢到物理执行器Executor中,否则扔到优化器里去

Transformer:进行逻辑优化,比如索引下推。

Optimizer:进行代价优化,从众多物理执行计划选出最优。工业中与transformer进行混杂,选择相对优的执行计划(为了节约时间、不一定会选最优)。

code generator:将多个算子merge,生成更加高效的算子。

日志恢复分为物理日志和逻辑日志。

8698f45f807d4f9eb320a2b8e4ab0c10.png

6f8f9f8e0f754da0974535b81f4b0bfa.png

B+树,平衡二叉树,读写性能均衡算法


adba2a693df94fcd97287e574d3c2429.png


e4936918209943ebb848de436d0a8c57.png

2 MiniOB——从底层深入了解数据库实现

2.1 MiniOB介绍

2.1.1 数据库系统学习的难点

image.png

2.1.2 MiniOB架构


7ba078fcc028418f9ecf9f69e4cb945f.png


相关文章
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
56 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
7天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
25 4
|
1月前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
18 1
Cassandra数据库与Cql实战笔记
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
81 1
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
1月前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引