数据库原理的简单解释

大学期间我觉得我学的最差的有两门课,一门是数据库,还有一门是高数。现在回想起来数据库主要是当时因为根本就没有实践,几乎都没动手操作过,所以感觉极其陌生,现在来补一补。这次主要是从原理出发,对几乎每个数据库都有的内容进行简单的模拟。

数据结构

首先,数据库的数据载体是什么呢?很自然想到了文本文档,既然只是简单了解下原理,那完全够用了。也就是说,你要往数据库里写数据,其实就是写文件;而要从数据库里读取数据,就是从文件中读取内容,相当好理解。

其次需要解决的一个问题是,怎么从数据库查询指定的数据呢?为了方便,我们可以指定数据库的每一条数据长度是1000字节,这样如果你要查id是5的数据,直接把文本的4000-5000字节的部分读出来就好了。那如果是指定的内容而不是id呢,那也简单,把文件从头到尾读一遍,找到要查询的数据即可!emmmm这个方法虽然简单暴力,但是效率有点太低了,不能忍,于是就用到了一种叫B树的数据。

B树理解起来也很简单,首先是一种很基础的数据结构,二叉搜索树,这个搜索只需要log(n)就能找到你想要的数据。但是如果直接使用二叉搜索树,层数会比较多,不是非常适合,于是就有了它的变种——B树。二叉树每个节点只能放一个节点,B树则可以放多个,而且如果父节点有n个值,那么就有n+1个子节点,所以能够在使用极少的层数的前提下存放非常多的节点。

数据库索引

有了上面的B树,索引就很简单了。比如有一张表,记录了每个人的ID和姓名,那么根据ID来找很容易了,我们只需要为名字建立一棵B树,然后把这个树里面的节点中的每一个值都是名字以及该名字对应的ID值。而找名字因为有B树非常简单,找到之后就有了ID,有了ID就能非常迅速的找到对应的记录。

更多的内容

现在,最简单的数据库其实已经有了,你能够对它写入数据,读取数据,修改数据,删除数据,以及因为有了B树这种数据结构,可以快速查找数据和建立索引了。当然还可以附加上更多的“插件”来让这个数据库更加智能:

  • 备份。最简单就是每小时备份一次你的文件,就完成了最简单的备份操作。
  • 数据库之间的连接。这部分我不太了解。
  • 利用SQL语句。这部分需要一个SQL语句的解释器。