Ch01-AmDB 介绍

Ch01-AmDB 介绍

December 1, 2022
AmDB
amdb

AmDB 为本人独立研发的一款单机版关系型数据库管理系统,旨在更加深入的学习数据库的相关知识,所涉及到的功能点会逐渐向 MySQL 对齐,后续应该会考虑完全兼容 MySQL 相关协议。

此外本数据库管理系统存储层提供了较好的 KV 存储接口,理论上可以接入任何 KV 存储系统(比如 Redis,LevelDB 等)。

1. 基本信息 #

条目 说明
地址 https://github.com/acronymor/AmDB
版本 none

2. 架构介绍 #

amdb-arch

条目 说明
parser 用于解析 SQL 形成 parser::Node 构成的 AST。
analyzer 对 AST 进行分析,转成 LogicalNode 构成的 AST。
resolver 对 AST 的细节进行解析,补全需要的数据。
planner 对 LogicalNode 构成的 AST 进行分析(RBO/CBO)形成最佳的 PhysicalNode 组成的 AST。
scheduler 将 PhysicalNode 组成的 AST 构建成 DAG,然后采用 DFS 算法调用对应的 executor 去执行
executor 具体的执行器,比如扫描表的操作会调用 TableScanExecutor,过滤数据的操作会调用 FilterExecutor。
storage 提供各种 iterator 来遍历 table 以及 index;提供 api 完成对底层存储的增删改查操作。
metadata 提供元数据管理功能,比如读取表结构等
idallocator 提供全局唯一的 id。

3. 开发计划 #

条目 说明
SQL 基本语义支持已完成,后续需要支持复杂语义(join 等)
RPC
Transaction
RBO/CBO
Source/Replica
JDBC Driver

4. 优化计划 #

条目 说明
codec codec 相关的接口参数从 std::string 改成 absl::string_view 避免字符串拷贝
scheduler 提供多线程调度 executor 的能力,进而提升查询性能
storage 改为 leveldb 的事务操作