很不幸,大多数自学成才的软件工程师对数据库系统的基础知识掌握不足。虽然越来越多的工程师知道SQL或者可以使用PostgreSQL,但很少有人能够很好地理解底层系统,能用到里面的知识避免中断和调试复杂查询,或者选择并正确配置正确的数据库管理系统。

你绝对有可能在大学环境之外学习这些基础知识,但在这之前你可能还存在两个障碍:(i)必备知识; (ii)缺乏良好的资源。我希望这篇简短的文章可以帮助你克服两者。

先决条件

在不知情的情况下很难理解数据库系统:

  1. C和C ++
  2. 本科级计算机体系结构
  3. 本科水平的操作系统

对于1和2,我写了简短的指南如何学习C了解计算机的工作原理。我还没有对操作系统进行类似的处理; 在那之前,我建议使用操作系统:三个简单件作为一个易于访问的免费资源。

熟悉编译器也很有价值,尽管它不是那么强大的先决条件。

C / C ++很重要,因为大多数开源数据库系统广泛使用其中一个或两个,因此无法读取源可能是一个障碍。此外,当您开始编写自己的数据库系统时,您会发现自己可以使用类似的低级语言。

计算机体系结构和操作系统非常重要,因为您需要充分了解内存层次结构,I / O模型,内存虚拟化以及进程和线程等概念。

无论如何,所有这些领域都很重要,所以不要担心它们优先于数据库。