(资料图片仅供参考)
新年期间我实在想不出做什么,就想写简易的数据库程序,支持百亿数据随机高性能增删改查,预计数据达到几个GB、TB也能轻松增删改。本来我想画设计图来认真设计程序,但奔着无聊才写,全用文字描述来设计简易的数据库。下面是文字描述设计:
一个目录一个数据库,目录为数据库名文件1为数据库信息,文件名赞定为 数据库名开头4字节是文件头标识:1字节全为0,2字节全为0,3全为0,4最后为00...1然后8字节关联文件所有文件,用时间戳标记接着4字节是无符号的整数类型,表示数据库版本接着4字节,表示表的数量之后的后面为扩展表信息数据 文件1要有回收池文件,暂不做处理8字节表示表的标识信息,一般用时间戳标识16字节表名的地址信息1字节表示数据类型,方便识别数据类型接着8字节表示字段占用多少空间,如果数字为0则表示是指针类型字段设计总结表字段存储结构为:开始位置字段名开始(8字节)字段名长度(8字节)1字节表示这字段类型 0表示基本数据类型,1表示字符串,2表示其它进制类型字段占用空间(8字节) 如果为0则表示为地址类型结束位置,可计算字段存到文件2的长度:(8+8+1+8)*字段数量以此类推增加表的信息数据文件2为地址文件:文件名暂定"数据库名.内存"前面4字节表示文件类型4资字节,最后两个比特为10然后8字节关联文件接着8字节表示数据的有效长度,用于减少回收池文件3为文件2的回收池文件,赞定“数据库名.内存.标记内存”,把文件2的区域数据删除后放到这里标记删除,或者查找匹配哪段可以重复使用前面4字节文件标记,最后两个比特为11,然后8字节关联文件然后后面都是16字节一组,前面8字节表示位置,后面表示大小文件4为表数据,文件名为“数据库名.表名”,每个表数据4位为文件标记信息,最后二进制比特为1008字节时间戳的标记信息8字节为表的标识信息,一般用时间戳标识接着按照文件1的结构依次存储,可大量数据增删改查文件5则为文件4的回收标记,文件名为“数据库名.表名.标记内存”4位为文件标记信息,最后二进制比特为1018字节时间戳的标记信息
然后每个标记位置都是16字节的文件回收标记
上面的程序文件结构设计就算会写代码的人也难看懂,根据上面的设计我已经写了4百行代码,越写越怀疑人生,觉得写这些纯浪费时间,但又觉得不做点什么也照样在浪费时间。
关键词:
数据类型
结构设计
浪费时间
以此类推
数据删除
怀疑人生