- core.cc : 包括了基本的库,还有一些常量的定义
- log: 日志的文件夹,其中 log.cfg 是日志的配置文件
- DB: 存放数据的文件夹,每个数据文件的命名方式为dbfile_xxx.db
- config.cc: 加载 config.json 的配置文件,暂时还没有用到
- json.hpp: nlohmann.json,一个解析 json 的 c++库,只需要 include 该文件即可
- logging.hpp: boost 日志库
- fileHandle.cc: 对文件的操作进行了封装
- dbFile.cc: 以组合的方式包括了 filehandle.cc,进一步封装以适用于数据库对文件的操作
- DMS.cc : 核心文件,定义了对数据库的查询、插入、删除、合并与加载数据文件的操作。
- testxxx.cc: 一些自己定义的测试文件
- 插入操作:分为活跃文件空间足够和不足够时两种情况。插入与插入操作之间互斥。第二种插入操作与所有操作互斥,且该操作优先
- 查询操作:查询与插入互斥,查询与查询之间不互斥。
- 删除操作:删除操作本质上是插入操作,所以同插入操作。
- 合并操作:如果要查数据在活跃文件,合并与查询不互斥;在旧文件则合并与查询互斥。合并与插入第一种情况不互斥。
- 加载数据操作:当数据库文件的大小和当前定义的 db 文件最大大小一致时可以加载。可以分多种情况实现当大小不一致时的加载问题。
RecordHeader
key
value
0x20
key 以 ‘\0’结尾 value 以'\0'结尾 0x20 是 record 结束符
record
record
...
record
0x20
0x20 是文件末尾结束符标志