ElementDB the Book
150122c
2024-03-07
第 1 章 序言
构建一个数据库是一项庞大、复杂的工作,我也并不是专业有过数据库构建经验的人,所以,我想在文章的开篇就说明白,接下来这些文章的目的、受众以及我将如何展开。
首先,这并不是一份专业性的数据库材料。我会尽可能将我的想法描述清楚,但我描述的内容中可能有不专业、不准确的地方,欢迎指正。这份资料本身的受众是对这些话题有兴趣但没有专业背景的业余爱好者。
再次,这份资料的目的是记录我个人学习数据库相关知识时学习到的知识,以及我自己在实现数据库时自己的思考。我通过将这些知识整理成系统性资料的方式来提高我自身对知识的理解,也能帮助需要的朋友更好地学习。
最后,来介绍一下这份资料的组织形式。
首先聊一聊接下来这些资料的逻辑: 我会先讨论一些关于数据库系统的通用知识,例如什么是事务、什么是 SQL 、什么样的系统是一个数据库系统。在这一过程中,我会尽可能展示这些问题的复杂性,通过展示问题的复杂性,可以让读者对之后解决问题的过程产生兴趣,同时,也有利于激发新的思考。
随后,我会介绍一个数据库系统大致应该有哪些组成部分,各个部分的作用,以及建立一个数据库的模型。在之后,我会详细展开每个部分的理论基础和系统设计,辅以部分实践和杂谈。
我接下来写的资料会大概属于四个分类:
理论,这部分文章会相对严肃一些,阐述一些关于数据库系统的基础理论。例如,要阐述 B+ 树的设计、并发控制机制等,这部分内容会相对干一点,但这是后续所有工作的理论基础,保证我们系统的正确性。
系统设计,这部分在理论的基础上,会讨论在工程上实际实现系统的取舍。同一种理论上的系统模型,有多种实现方式,而不同的实现方式,会产生系统实际性能表现等方面的不同,这就涉及到取舍,是需要重点讨论的。
实践,这部分并不全部是要介绍我写的代码,甚至介绍代码的工作可能只占一小部分,也想设计一些小实验来测试、证实我在文章中所说的观点。我推荐读者也做一下这些实践,可能是自己写一份测试性能的代码,也可能是自己写一个 mmap 的 demo ,通过做这些事情能提高读者的编程能力,这是最基础的能力。
杂谈,杂谈这一块我会发散地讨论一些和数据库系统本身无关,但可能有借鉴价值,或者属于基本素质的内容。
ar8327
2023 年 10 月