简易数据库管理系统(DBMS)设计与实现

您所在的位置:网站首页 文件管理器的设计与实现方法有哪些 简易数据库管理系统(DBMS)设计与实现

简易数据库管理系统(DBMS)设计与实现

2024-07-05 09:33| 来源: 网络整理| 查看: 265

一、概要 1.1 数据库管理系统/数据库

下图展示了DBMS(数据库管理系统)的地位,数据库(系统)其实包含了DBMS和数据两部分。 在这里插入图片描述

1.2 架构设计

在这里插入图片描述

1.3 设计思路 数据仓库:使用XML(可拓展标记语言)文件作为微型数据仓库,对XML文件的读写操作相当于对数据的读写操作;SQL解析: 使用正则表达式解析SQL语句;索引:设计索引结构,使用B+树算法;

实现1、2两步,基本上就能完成一个简陋的数据库管理系统了,因为可以使用SQL语句对存储在XML文件的数据进行增删改查(CRUD)操作。

1.4 规划

编程语言:Java

v1.0版本:支持简单、单句SQL解析、以XML文件作为微型数据仓库,在控制台启动和操作v2.0版本:增加索引 二、细节 2.1 XML文件作为数据仓库

在这里插入图片描述 1)逻辑上的一张表在物理上是一个文件夹,里面包含多个XML文件 2)一个XML文件作为一张物理子表(如上图所示),多个物理子表构成一张逻辑表 3)每张表都有一个配置文件,用来存储数据类型、物理子表数量、是否建有索引等信息 4)所有对数据表的操作都是基于DOM4j解析对XML的读写操作

2.2 正则表达式解析SQL语句

1)SQL语句预处理(去重多余空格、统一转化为小写等) 2)正则匹配关键字(如select xx from xx 等) 3)根据SQL语句关键字和关键字后的内容,调用相应的方法

2.3 B+树索引结构

1)B+树的key存的要索引的字段,value存索引字段对应的逻辑子表名称 2)在查询时,根据key对应的value(即逻辑子表名称)直接打开对应的XML文件,然后遍历其中的数据找到符合条件的记录(由于每张物理子表/XML文件设计的容量较小,因此遍历的时间较短,但缺点是物理子表/XML文件过多) 3) 每张表索引建立后,会把索引持久化到磁盘上(XML文件里),每次启动系统都会加载索引文件到内存中的数据结构中

三、总结

实现的是非常简单的一种DBMS,在控制台启动,可以实现一些基础的SQL语句增删改查,对字段建立索引后可大幅提高查询效率。 缺点及改进如下:

由于SQL解析使用的正则表达式,因此对于复杂的SQL语句(多句复合、嵌套等)处理起来非常麻烦,因此没有继续拓展。改进思路是SQL解析部分使用词法和语法分析器,可以实现更多、更复杂的SQL语句解析;由于数据仓库使用的是XML文件,而索引设计在XML文件名上,因此在数据安全、存取效率上都很低。改进思路是自定义文件格式并编写处理代码,数据使用二进制格式(并加密)存储,而索引部分可将B+树持久化到磁盘上(MySQL InnoDB B+树的叶子节点存的就是磁盘上的数据);可以考虑做成前后端分离的系统,这样可以将系统部署在服务器上,然后通过浏览器端访问进行增删改查;考虑到并发安全,可以对整张表进行加锁(代价最低,实现最简单,用一个字段/变量指示是否加锁即可),如果学习了MySQL之后的话,可以只到对一行记录进行加锁或使用MVCC进行无锁控制。 源码

只是简单的实现,还没有往改进的方向上去做。 github gitee



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3