自己写一个最简单的数据库

发表于:2014-9-29 09:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:韦悦涵    来源:51Testing软件测试网采编

  所有应用软件之中,数据库可能是最复杂的。
  MySQL的手册有3000多页,PostgreSQL的手册有2000多页,Oracle的手册更是比它们相加还要厚。
  但是,自己写一个最简单的数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理的内容。
  一、数据以文本形式保存
  第一步,就是将所要保存的数据,写入文本文件。这个文本文件就是你的数据库。
  为了方便读取,数据必须分成记录,每一条记录的长度规定为等长。比如,假定每条记录的长度是800字节,那么第5条记录的开始位置就在3200字节。
  大多数时候,我们不知道某一条记录在第几个位置,只知道主键(primary key)的值。这时为了读取数据,可以一条条比对记录。但是这样做效率太低,实际应用中,数据库往往采用B树(B-tree)格式储存数据。
  二、什么是B树?
  要理解B树,必须从二叉查找树(Binary search tree)讲起。
  二叉查找树是一种查找效率非常高的数据结构,它有三个特点。
  (1)每个节点最多只有两个子树。
  (2)左子树都为小于父节点的值,右子树都为大于父节点的值。
  (3)在n个节点中找到目标值,一般只需要log(n)次比较。
  二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。越处在下层的数据,就需要越多次比较。极端情况下,n个数据需要n次比较才能找到目标值。对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘的读取时间远远大于数据处理时间,数据库读取硬盘的次数越少越好。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号