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

一、概要

1.1 数据库管理系统/数据库

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

1.2 架构设计

简易数据库管理系统设计与实现_第1张图片

1.3 设计思路

  1. 数据存取:使用XML(可拓展标记语言)文件作为微型数据仓库,开发功能模块实现存取操作;
  2. SQL解析: 使用正则表达式解析;
  3. B+树索引:设计索引结构,增加B+树索引;
    实现1、2两步,基本上就能完成一个简陋的数据库系统了,因为可以使用SQL语句对存储在XML的数据进行CRUD(增删改查)操作。

1.4 规划

这里编程语言使用的是Java

  1. v1.0版本:支持单句SQL解析、以XML作为微型数据仓库,在控制台启动和操作
  2. v2.0版本:增加索引
  3. v3.0版本:前后端分离,云数据库

二、细节

2.1 XML作为微型数据仓库

简易数据库管理系统设计与实现_第2张图片
1)逻辑表在物理层上是一个文件夹
2)一个XML文件作为一张物理子表,多个物理子表构成一张逻辑表
3)每张逻辑表都有一个配置文件,用来存储数据类型、逻辑子表数量、可插入逻辑子表下标、是否建有索引等信息
4)所有对数据表的操作都是基于DOM4j解析对XML的读写操作

2.2 正则表达式解析SQL语句

1)SQL语句预处理(去重多余空格、统一转化为小写等)
2)根据SQL语句关键字→对预处理后的SQL语句分块
3)根据SQL语句关键字→调用相应的方法(SQL语句分块后的body部分处理后作为参数传递)

2.3 B+树索引结构

1)B+树key值存主键,value存主键对应的逻辑子表名称
2)每张表索引建立后,List>会更新每张表的索引
3) 每次进入系统,程序会把外存的索引文件加载到内存中,构成List>

三、总结

最终在控制台启动,可以实现一些基础的SQL语句增删改查。

  1. 由于SQL解析使用的正则表达式,因此对于复杂的SQL语句(多句复合、嵌套等)处理起来非常麻烦,因此没有继续拓展。改进思路是SQL解析部分使用词法、语法分析器替换,可以实现更多、更复杂的SQL语句解析;
  2. 由于微型数据仓库使用的是XML文件,而索引设计在XML文件名上,因此在数据安全、存取效率上都很低。改进思路是自定义文件格式并编写处理代码,数据使用二进制(并加密)存储,索引部分可将B+树持久化到磁盘上。
  3. 之前使用jsp+servlet将控制台的启动改成了云端访问,但不算是前后端分离,后续可以考虑使用html实现真正的前后端分离,这样可以将数据库系统在服务器上部署,然后可以从浏览器端通过地址远程访问。

源码

只是简单的实现,后续会考虑改进思路的做法
github
gitee

你可能感兴趣的:(简易数据库管理系统设计与实现)