【数据库内核】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


相关文章
|
6天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
37 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
24天前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
15 1
Cassandra数据库与Cql实战笔记
|
4天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
20 0
|
5天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
26 0
|
30天前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
28天前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
|
30天前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
21天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
55 3
Mysql(4)—数据库索引
|
6天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
41 2
|
9天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
43 4

热门文章

最新文章