数据库内核教学课程-数据库系统概述|学习笔记(一)

简介: 快速学习数据库内核教学课程-数据库系统概述

开发者学堂课程数据库开源校企合作“数据库内核从入门到精通 ”系列课数据库内核教学课程-数据库系统概述学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1239/detail/18418


数据库内核教学课程-数据库系统概述

 

内容介绍

一、数据库历史演进

二、数据库系统架构

三、系统表

四、存储引擎-概述

五、存储引擎-数据组织

六、SQL引擎-基础

七、SQL引擎-优化器

八、执行引擎

九、事务引擎-分布式事务的两阶段提交

十、事务引擎-分布式事务处理技术

十一、实战优化-资源解耦与池化

十二、实战优化-存储计算分离 ,Log AS DB

十三、实战优化-共享存储系统高可用与延迟优化

十四、实战优化-分布式MVCC事务

十五、实战优化-高可用

 

 

今天我给大家带来的是数据库内核教学课程,数据库的第一讲,数据库的系列概述。

今天的这门课程,这个跟之前的我们的PG的内核课程定位有所不同哈。那这之前,主要是做让大家了解这个数据库的,尤其是PG的,它的内核的原理,还有它的一个实现。

而这个课程,主要面向的对象,是高校的学生,希望跟这个武汉大学一些老师一起,还有就是我们阿里云内部的一些讲师一起打造一个国内高校通用的这样的数据库的一个内核课程,那这个内核课程,总共分为两部分,第一部分,就是讲理论,讲理论就是讲,各个部分的它的一些设计的一些原理。

有了原理之后,我们再根据这个,我们自己内部,对于这个pldb的一个改造的过程的一些实践,让大家做一些实践方面的一些学习和训练,就是希望打造一个国内通用的这样的一个课程啊,这个是我们的一个目标。

那今天我讲的,就是数据库,系统概述,就是这个第一节课主要就是给大家这个先整体的去介绍一下这个整个数据库系统的一个概要的一个情况,另外就是分别介绍一下各个模块,分别是要讲哪些内容,去把整个课程啊进行一个概要的一个介绍。

但它有一个基本的概念,后面,就是尤其是举内核部分的就是内核理论的部分,更多的是由这个武汉大学的各位老师来负责讲解,之后是这个内核实践,它里面内部的一些一些讲师会参与进来。

 

一、 数据库历史演进

image.png

出现过四位图灵奖的获得者,就是上面四位,整个数据库的发展和他们四位息息相关,接下来我们介绍四位在数据库发展过程中做出的贡献。

Bachman 在1973年利用网状数据库模型获得了图灵奖,网状数据库现在并不常见了,他的原理和现在的图数据库原理很像,他用的图论的方法,定义了节点的关系,主要用于美国军事领域,关于预测弹道相关的行业。在那个时代,数据库类型还是蛮多的,但还没有形成一统天下的局面。

Codd 提出关系型数据库的模型,对于现代数据库有了一个明确的定义,定义了数据库的表以及行和列之间的关系包括关系代数相关的应用,在当时已经能体现出来了。

在Codd关系模型出来之后IBM在1983年出了 AQL2 ,是 DB2 的前身,SML2定义了SQL的模型,包括他的优化器,包括存储相关的机制,跟现在的机制已经很像了,所以在这几十年变化是很小的,所以后来的云时代才会有这么大对的变化。SML之后IM DB2就产生了,包括Oracle它的产生,80、90年代是数据库的商业起步阶段。

Gray 在98年获得了图灵奖,主要特点在事物方面做了很多的工作,定义了数据库的模型包括日志怎么做和 Buffer各种模块给出了定义。

Stonebraker 提出了颠覆性的感念,他提出的MySQL也是当今经典的模型,他的许多言论至今仍受许多人追捧,是概念模型更加完整。

1990-2000年是分析性数据库,不得不提到我们的数仓之父Bill Inmon,他在93年出了《数据仓库》,之后出了Greenplum这样的系统,这种MPP系统的特点就是它的扩展性会很好,采用了Share Nothing的架构,包括 Teradata 它的很多的硬件包括操作系统都是他自己定义的,所以当时它是一个很封闭的一个系统,但是它的性能得到了很好地保证,近年来,国内对他的替换是很快的,主要是因为它的扩展能力,包括它每次扩容的时候,它的成本会非常高,包括成倍扩,有很多限制,会有一个停机的一个处理。

整个数据库在2000年之前,都是一个很稳定的一个状态,到了2000年即2010年的时候,出现了NoSQL的一些数据库,最典型的就是Hadoop以及谷歌的三驾马车,三驾马车在当时影响非常大。在当时人们都想装一套Hadoop的系统来进行测试,在最早的年代搭建一个环境都非常费劲,需要许多依赖来解决,并且它也不稳定,但是整套系统也得到了极大的的认可,因为确实是一个比较颠覆性的,产生了一个大数据的一个概念,数据量变得非常大。之后SPA Hana做了内存的系统,包括 Ridis内存库,包括Mongo DB 数据库,这个时期数据库百花齐放。

2010-2020年在这个阶段,最早出现颠覆性的就是 Spanner,他是2015年出现的,出来之后,大家都在效仿它的一个技术,之后出了Analytic DB 由此国内发展出来 DBMS 这样的一个系统,另一方面,亚马逊的 AWS Aurora 采用了云上得存储计算分离的架构,之后延伸出Polar DB 这样一套系统,它包含了 PG 版本,跟它都有一个很相似的技术。

之后ADB的数仓,它对标了亚马逊的Red Shift ,这个就是所谓的云延伸的一个引擎,包括分布式,多模就是在原来的 nothing 基础上把各种数据类型持续,比如说搜索、宽表,把这些能力聚合到一起,由上层统一的 SQL 引擎来操纵它,来实现多模的系统,包括 HTAP。

 

二、数据库系统架构

image.png

可以看到最顶层是连接的协议,比方说有 Local 的连接和远程连接的一个协议,之后进入到 SQL 的引擎,他会经过 Paraing,经过一些重写,经过优化器的优化形成一个 Plan Execulor,之后用 Plan 开始执行,这是执行器的一个工作,最后会调用到底层,各种表的提取方法,包括Buffer 的一个管理,包括锁和日志的一个管理,这些模块都会依赖事物模块,Catalog 之类的模块,来做相关的调动。

可以看到查询的编译、执行,之后调动索引和文件的相关接口,包括缓冲区,任务管理器。这里面有它的一个元数据,大家在各个阶段都会用到,大家在事物管理器、日志跟事物有关的在过程中都有涉及到。

 

三、系统表

image.png

每个模块都依赖系统表,我们在做系统设计的时候,最先考虑的就是系统表,如果这个位置出错,那么后面每个模块都需要修改。包括系统表是用户感知的东西,如果你发布出去想变更的话也是非常难的,我们之前也讲过 Catalog,都是存储系统的一些公共信息或者元数据的基本信息的,我们在做 Polar DB-X 设计的时候,我们从单机扩展到分布式的时候,这里面涉及到了很多的节点,包括很多CN、DN节点,GMS、CDC节点,这些节点要在元数据里面管理起来,否则的话,这些节点是怎么存在的呢,所以首先要有一个元数据来进行管理,我们需要创建一些新的系统表,来管理这些节点,包括它的IP地址的一些信息,从数据来说,你要把数据分散到各个节点,去做分片、分部、分区的处理,这样你的分片、分区信息也要在系统表里面管理起来,所以你在系统设计的时候的第一步要做很多这样的设计。

 

四、存储引擎-概述

image.png

引擎就是去读取数据,首先要去读取数据页,数据页是从文件里读取到Buffer Pool里面进行定位配置,看配置里面有哪些数据来进行应用。在存储引擎里面除了Buffer Pool和配置,还有淘汰算法,Interpret都是可以放在存储引擎里面进行一个算法。

 

五、存储引擎-数据组织

 

image.png

存储引擎运用段页式管理,一个文件里分为很多个 segment, segment里面又分为很多个 extent, extent里面又分为很多个 page,我们每次先扩 page 来使用,使用完再去扩展,它的好处就是文件数量比较少,但其实是多了一层管理,使其复杂程度变高, PG 它的特点就是一个表对应一个或多个文件,每一个表里面又分为一个又一个8K的数据页,数据页里面再去存数据,每个数据页有一个头,里面有很多的 Tuple 用来存数据。

 

六、SQL引擎-基础

 

image.png

在我们讲到的四位图灵奖获得者里面,斯坦福已经定义了整个表的定义,关于关系代数的一些运算符号以及一些关系。包括交叉并、选择投影这些,这个是关系型数据库的一个基础。SQL 引擎会涉及各种各样的算子,它的入口都是 SELECT、INSERT 之类,之后它会根据不同的表之间的关系,选择不同的 Joins 方式。

相关文章
|
5月前
|
分布式计算 数据可视化 数据挖掘
有哪些好用的BI产品?国内外BI工具推荐
在数字化转型浪潮下,企业亟需高效BI工具赋能决策。本文精选5款主流BI产品,涵盖瓴羊Quick BI、Tableau、Power BI、永洪BI与Smartbi,从功能、优势到应用案例全面解析,助力企业精准选型,实现数据驱动增长。
|
6月前
|
机器学习/深度学习 数据采集 自然语言处理
29_序列标注技术详解:从HMM到深度学习
序列标注(Sequence Labeling)是自然语言处理(NLP)中的一项基础任务,其目标是为序列中的每个元素分配一个标签。在NLP领域,序列标注技术广泛应用于分词、词性标注、命名实体识别、情感分析等任务。
577 0
|
小程序 JavaScript 关系型数据库
weixin118电影院订票选座系统设计及实现+ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的电影院订票选座系统。该系统采用WXML、WXS、JS小程序语言开发,结合微信开发者工具和MYSQL数据库,实现了便捷的订票选座功能。用户无需下载安装,通过微信即可快速访问,操作简单高效。系统分为用户与管理员两大模块,支持电影信息查询、在线选座、订单管理等功能,同时确保数据安全与用户体验。经过可行性分析、功能设计、测试等环节,系统表现出良好的稳定性、实用性和可扩展性,为用户提供了一个全面、便捷的订票平台。
|
存储 人工智能 自然语言处理
阿里云Elasticsearch AI场景语义搜索最佳实践
本文介绍了如何使用阿里云Elasticsearch结合搜索开发工作台搭建AI语义搜索。
18196 68
|
安全 编译器 C语言
C语言常量的定义与使用的注意点
在 C 语言中,常量是在程序运行期间值不变的量,通过字面值、`#define` 或 `const` 关键字定义。字面常量直接在代码中表示固定值,如整数 `100`、浮点数 `3.14`、字符 `'A'` 和字符串 `"Hello, World!"`;`#define` 用于定义宏,如 `#define PI 3.14159`;`const` 则定义不可变变量,如 `const int daysInWeek = 7`。常量可用于数组大小、循环边界等场景,并能提升代码的可读性和可维护性。使用时需注意作用域、类型安全和命名,避免直接使用数字(魔法数字)。
1014 8
|
JavaScript Python
Python量化择时的技术指标函数
Python量化择时的技术指标函数
683 0
|
安全 JavaScript 前端开发
Wasmer 3.0 发布,可在浏览器外运行 WebAssembly
Wasmer 3.0 发布,可在浏览器外运行 WebAssembly
348 2
|
开发者
Markdown:解放排版,简洁高效的文字创作神器!
Markdown 是一种轻量级标记语言,以易读易写著称,常用于生成 HTML 页面。其简洁的语法加速了排版,尤其在写作、博客和文档领域广泛应用。虽然不擅长复杂排版,但能轻松实现字体大小调整、插入表格、图片和超链接等。Markdown 通过键盘快捷操作,避免了 Word 等软件的繁琐设置。本文将深入讲解 Markdown 语法,助你提升效率。Markdown 适合快速学习,兼容各种文本编辑器,支持导出多种格式,广泛应用于 GitHub 和多个在线平台。
788 0
|
Unix Shell Linux
在 Linux 上把 Vim 配置为默认编辑器
在 Linux 上把 Vim 配置为默认编辑器
336 0
|
JSON 小程序 JavaScript
微信小程序性能优化
微信小程序性能优化
603 0