December 1, 2022
AmDB 为本人独立研发的一款单机版关系型数据库管理系统,旨在更加深入的学习数据库的相关知识,所涉及到的功能点会逐渐向 MySQL 对齐,后续应该会考虑完全兼容 MySQL 相关协议。
此外本数据库管理系统存储层提供了较好的 KV 存储接口,理论上可以接入任何 KV 存储系统(比如 Redis,LevelDB 等)。
1. 基本信息
#
2. 架构介绍
#
条目 |
说明 |
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 的事务操作 |