我现在想自己实现这么一个小型的数据库,能够实现简单的insert update delete select就行,语法不用太复杂
是基于文件的,就像foxpro那样就行
我刚开始的时候思路如下:首先要建立表结构,比如这个表有 3个字段,每个字段要占用 3个字节,那么每一行记录就是 9个字节,为了便于计算,不满4个的我们按照4个计算,那么一行记录需要12个字节,但是我们还需要一个特定的标识来标定这一行记录的结束,所以这个表每行记录需要16个字节
这样我们只要知道要查找第几条记录,就可以很容易的计算出他的偏移从而获取数据,但是为了知道某一条记录的位置,我们需要另外一个文件:索引文件来建立这个表的索引,这样查询的时候应该可以提高速度,但是随之问题就出来了 比如,我们按照主码第一个字母递增排序,那么我们的标的结构应该是这样的 
若干个a,若干个b 。。如果我们要插入一条记录到G的部分,那么G以后所有的记录都要向后移动一行记录长度的位置,删除的时候也有同样的麻烦,这样效率就太低了另一种思路,如果我们利用链表来存放,那么要便利一个表示非常困难的,也是不必要的所以我的思路这样:
一个索引文件 index.dat,这个索引文件不直接记录某个字母在数据库文件data.dat中的位置,而是指向另外一个表格 pointer.dat,记录pointer中对应字母在pointer自己中的位置,我们事先在pointer中分配一定的空间,比如给a 分配5000个位置,b分配2000个位置以此类推,data。dat中的记录顺序存放,而且不排序,但是插入任何一条数据,就要像pointer对应位置写入之条记录的位置,删除时直接删除这条记录和pointer中的记录,但是整个数据库的数据记录不移动,数据库维护的时候删除空行并更新pointer.dat大家看我这个想法可行么?
谁有好的建议也好,顶者有分