schema文件,模式文件,或者称为数据字典文件,存放表或视图的定义。常驻内存。
初步决定schema文件的格式如下:
首先是一个数字表示该数据库有多少表(视图),1个字节,这意味着一个数据库最多有256个表。
接下来是第表的信息,格式如下:
其中表名,列名是以'\0'结束的字符串,最长不超过31个字符。
数据类型是1个字节的整数,在java中对应byte。
约束包括两个部分:
基本约束描述主键,唯一键,NULL约束等信息,一个字节表示;
比较约束信描述> =等比较信息,这个暂时没有特别好的想法,先给他分配60字节吧,现在唯一的想法是把约束转换成析取范式,比较麻烦,等我研究研究别人的实现方法再说。
列数表示一个表列的数量,如果列数==-1,则说明这是一个view,在schema中我们直接存储view的创建字符串,等到查询的时候再进行视图消解。
索引由一个字节表示,其含义是索引文件的ID号。
schema文件采用这种比较死的结构,有两个原因,首先是因为schema更改很少,其次是schema常驻内存。
如果对schema有修改,直接重写schema文件就可以了。