如何实现一个数据库
版本1 无事务 单线程 内存数据库
首先,我们需要实现一个 SQL
语法分析器:
Insert into student value (tony, 22, 123);
语法分析器分析后,确认是 insert
操作,要存的数据是 tony, 22, 123
。
那么接下来就是存储的问题了,首先想到的就是通过一个结构体数组(如下),顺序存储。
struct student {
int id;
char[128] name;
int age;
int level;
}
但是,这样的存储方式,要查询具体某个数据时,就只能顺序遍历,速度非常慢了。所以,我们需要选择别的数据结构去存储,比如 B+
树,实现下面两个接口:
Bt.Insert( key, value );
Bt.Search( key );
那么 key
该怎么获取呢?
可以通过自增唯一ID
可以是
hash(value)
作为key
该版本数据库完成。