接上一章内容,本章通过对作品中相应代码的示例进行部分讲解,来让大家更清晰的认知如何一步步的编写数据存储引擎。
原创作品引用(存储引擎设计C语言版本)
https://gitee.com/to246564184/storage_engine__c_version?_from=gitee_search
首先,我们需要定义一些数据结构与数据类型,其将相对于数据引擎本身作为基础数据结构。
//记录ID
typedef unsigned long long ID;
//记录数据大小
typedef unsigned long long SIZE;
//记录索引
typedef unsigned long long INDEX;
//字符串
typedef char * STRING;
//堆内存
typedef void * COMMON_MEM;
//双向链表(整个数据存储引擎的核心数据结构)
typedef struct LINKED_LIST {
struct LINKED_LIST * parent_point; //父节点指针
struct LINKED_LIST * child_head_point; //子链表中头节点的指针
struct LINKED_LIST * last_point; //上一条记录的指针
struct LINKED_LIST * next_point; //下一条记录的指针
ID id; //记录ID
STRING name; //记录KEY
COMMON_MEM data; //记录数据
SIZE size; //记录数据大小
} LINKED_LIST , * LINKED_LIST_POINT;
上面是一些比较重要的引擎设计代码,是整个数据存储引擎的核心结构部分内容。
相信细心的读者可以从代码中读出短小精悍的味道,四个相同的结构体指针构建了数据引擎的存储网络,实现了树结构与星状拓扑,可以向上向下、向左向右互相连接的特性决定了它足够灵活。
ID字段对应着数据表的主键ID,可用于索引;name字段对应着数据表的KEY键,具备唯一索引特性,data对应数据表的Value内容,可以直接存储正式数据,size字段维护着data字段所占用的空间大小。短短的10多行代码,实现了复杂的数据库表结构。
在下一章,将重点讲述“页”的概念,请关注:论数据引擎的核心设计思想(三)(原创)
最后
以上就是霸气黑猫最近收集整理的关于论数据引擎的核心设计思想(二)(原创)的全部内容,更多相关论数据引擎内容请搜索靠谱客的其他文章。
发表评论 取消回复