欢迎投稿

今日深度:

实现一个微型数据库,实现微型数据库

实现一个微型数据库,实现微型数据库


自己写一个简单的数据库,原理大概有以下几点:

一、数据以文本形式保存

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

为了方便读取,数据必须分为记录,每一条记录的长度规定为等长。

举例:假定每条记录的长度是800字节,那么第5条记录的开始位置就在3200字节。

大多数的时候我们不知道某一条记录在第几个位置,只知道主键的值。这时为了读取数据,可以一条条比对记录。但是这样做的效率太低。实际应用中,数据库往往采用B树格式存储数据

 

二、关于B树

要理解B树先需要理解二叉查找树

说二叉查找树是一种查找效率非常高的数据结构,它有三个特点:

(1)每个节点最多只有两个子树。

(2)左子树都为小于父节点的值,右子树都为大于父节点的值。

(3)在n个节点中找到目标值,一般只需要log(n)次比较。

 

二叉查找树的结构不适合数据库,因为他的查找效率与层数有关。越处在下层的数据,就需要越多次的比较。极端的情况下,n个数据需要n次比较才能找到目标值。对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘的读取时间远远大于数据处理时间,数据库读取硬盘的次数越少越好。

 

B树是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。

B树的特点:

(1)一个节点可以容纳多个值。

(2)除非数据已经填满,否则不会增加新的层,也就是说,B树追求“层”越少越好。

(3)子节点的值,与父节点中的值有严格的大小对应关系。一般来说,如果父节点有a个值,那么就有a+1个子节点。比如上图中,父节点有两个值(7和16),就应对应三个子节点,第一个子节点都是小于7的值,最后一个子节点都是大于16的值,中间的子节点就是7和16之间的值。

 

这种数据结构非常有利于减少读取硬盘的次数。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据,如果换成二叉查找树,则需要20层。假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在100万个数据中查找目标值,只需要读取两次硬盘。

 

三、索引

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

所谓索引,就是以某个字段为关键字的B树文件,假定一张“雇员表”,包含了员工号(主键)和姓名两个字段,可以对姓名建立索引文件,该文件以B树格式对姓名进行存储,每个姓名后面是其在数据库中的位置(即第几条记录)。查找姓名的时候,先从索引中找到对应的第几条记录,然后再从表格中读取。这种索引查找方法,叫做“索引顺序存取方法”,缩写为ISAM。它已经有多种实现,只要使用这些代码库,就能自己写一个最简单的数据库。

 

四、高级功能

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

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

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

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

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

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

 

 

部分内容来自点击打开链接,后续依然会不断更新完善。

 

 

 


如果自己要建立一个小型数据库,你有什建议?用sql,有什方面的数据库选择?

数据库设计方法、规范与技巧
一、数据库设计过程
数据库技术是信息资源管理最有效的手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计中需求分析阶段综合各个用户的应用需求(现实世界的需求),在概念设计阶段形成独立于机器特点、独立于各个DBMS产品的概念模式(信息世界模型),用E-R图来描述。在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
1. 需求分析阶段
需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。
需求分析的方法:调查组织机构情况、调查各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界。
常用的调查方法有: 跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录。
分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(Structured Analysis,简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。
数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。
数据字典是各类数据描述的集合,它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分(至少应该包含每个字段的数据类型和在每个表内的主外键)。
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,
取值范围,取值含义,与其他数据项的逻辑关系}
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
数据流描述={数据流名,说明,数据流来源,数据流去向,
组成:{数据结构},平均流量,高峰期流量}
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,
组成:{数据结构},数据量,存取方式}
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},
处理:{简要说明}}
2. 概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一DBMS支持的特定数据模型。
概念模型特点:
(1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。
(2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。
概念模型设计的一种常用方法为IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术,用于建立系统信息模型。
使用IDEF1X方法创建E-R模型的步骤如下所示:
2.1 第零步——初始化工程
这个阶段的任务是从目的描述和范围描述开始,确定建模目标,开发建模计划,组织建模......余下全文>>
 

如果要建一个小型数据库,同时做一个简单的界面实现对数据库的增删查改,需要一些什工具?

asp + sqlserver就行,编程简单,b/s结构的看作也舒服,不用安装
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2275.html NewsArticle 实现一个微型数据库,实现微型数据库 自己写一个简单的数据库, 原理 大概有以下几点: 一、数据以文本形式保存 将所要保存的数据写入文本文件,这个文本文件就是数据库。 为了...
评论暂时关闭