zoukankan      html  css  js  c++  java
  • 数据库的最简单实现

    一、数据以文本形式保存

    第一步,就是将所要保存的数据,写入文本文件。这个文本文件就是你的数据库。

    为了方便读取,数据必须分成记录,每一条记录的长度规定为等长。比如,假定每条记录的长度是800字节,那么第5条记录的开始位置就在3200字节。 大多数时候,我们不知道某一条记录在第几个位置,只知道主键(primary key)的值。这时为了读取数据,可以一条条比对记录。但是这样做效率太低,实际应用中,数据库往往采用B树(B-tree)格式储存数据。

    二、索引

    数据库以B树格式储存,只解决了按照"主键"查找数据的问题。如果想查找其他字段,就需要建立索引(index)。

    所谓索引,就是以某个字段为关键字的B树文件。假定有一张"雇员表",包含了员工号(主键)和姓名两个字段。可以对姓名建立索引文件,该文件以B树格式对姓名进行储存,每个姓名后面是其在数据库中的位置(即第几条记录)。查找姓名的时候,先从索引中找到对应第几条记录,然后再从表格中读取。

    这种索引查找方法,叫做"索引顺序存取方法"(Indexed Sequential Access Method),缩写为ISAM。它已经有多种实现(比如C-ISAM库和D-ISAM库),只要使用这些代码库,就能自己写一个最简单的数据库。

    三、高级功能

    部署了最基本的数据存取(包括索引)以后,还可以实现一些高级功能。

    (1)SQL语言是数据库通用操作语言,所以需要一个SQL解析器,将SQL命令解析为对应的ISAM操作。

    (2)数据库连接(join)是指数据库的两张表通过"外键",建立连接关系。你需要对这种操作进行优化。

    (3)数据库事务(transaction)是指批量进行一系列数据库操作,只要有一步不成功,整个操作都不成功。所以需要有一个"操作日志",以便失败时对操作进行回滚。

    (4)备份机制:保存数据库的副本。

    (5)远程操作:使得用户可以在不同的机器上,通过TCP/IP协议操作数据库。

    参考文献:

    1.how do you build a database

    2.阮一峰《数据库的最简单实现》

  • 相关阅读:
    Git 切换本地分支 切换远程分支
    ThreeJs 模型的缩放、移动、旋转 以及使用鼠标对三维物体的缩放
    ThreeJs 绘制点、线、面
    阿里云短信验证使用(PHP)
    Swoft 容器使用
    Swoft 缓存及Redis使用
    Swoft 图片上传与处理
    使用 webpack 搭建多入口项目
    使用 nodeJs 开发微信公众号(上传图片)
    使用 nodeJs 开发微信公众号(设置自动回复消息)
  • 原文地址:https://www.cnblogs.com/joeaaron007/p/4250212.html
Copyright © 2011-2022 走看看