Earyant的技术博客

欢迎来到Earyant的技术博客,在这里我将与你分享新技术。

自己写一个数据库

godb

本项目中,数据库就是本地一个文件夹,表也是数据库下的目录,里面的数据就是表文件夹下的文件,
表目录下的scheme.json保存着表结构
表目录下data0.json data1.json分别存储着数据,每个文件里的数据不超过1000行。

设计逻辑

  • 代码分为client端和server端
  • server端开启端口,接收指令,并执行指令
  • client端连接端口,发送指令
  • server端分层执行
    • 解析语句,判断类型,建库、建表、插入数据等等
    • 不同类型语句进入不同service执行,互不干扰
    • 验证语句,返回数据

建库

暂时建表只支持这种格式,实际实现是在项目tmp目录下新建一个db1的文件夹

1
create database db1

建表

暂时只支持 ‘id’ 列名, varchar(255) 类型长度,以及默认值
以及主键
实际实现是在数据库目录下新建一个表名的文件夹,并有一个scheme.json文件记录各列属性

1
2
3
create table  table1 (`id` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);

插入数据

支持语句格式,value 只支持一个括号,values支持多个括号多行数据插入
实际实现是在表文件夹下,新建data(i).json文件,里面存储具体数据,i是预留数据量大的情况下的分文件存储,每个文件暂时最多支持存储1000行。

1
INSERT INTO feature_conf values(1)

// TODO

  • [ ] 增加索引文件,指向data(i).json并指明多少列
  • [ ] 索引文件分层,类似B+树存储

欢迎关注我的其它发布渠道