Skip to content

Latest commit

 

History

History
94 lines (66 loc) · 2.18 KB

Support.md

File metadata and controls

94 lines (66 loc) · 2.18 KB

存储层

磁盘管理

待改进

  • 启动时高效收集已分配和未分配page id的信息,使用bitmap管理页面号信息
  • 使用bitmap做管理后就没有必要使用max_ava_pgid_、max_alloced_pgid_、alloced_pgid_和free_pgid_对page id做管理,这会占用大量空间,拿一个缓冲池(不是bpm)存放bitmap直接做管理更方便高效
  • 相同表内的数据没有做到连续存储,磁盘I/O开销会非常大!(当然这是后话,如果以实现基本功能为目标,它的优先级不高)

存储模型:行存储

页面的物理排列:所有数据都是存放在一个文件中的,依靠页面的page id得到其存储的偏移值

启动模式:创建文件启动和读文件启动,前者是在没有任何已有文件下,自行创建文件启动,后者依靠读取已有文件启动

缓冲池

和15-445实现的差不多,暂时没有什么特别的

索引层

为降低复杂度,不支持联合索引

聚簇索引

索引为立即更新模式

哈希索引

查询计划与执行

设计实现

功能支持情况

  • 不支持子查询
  • 不支持查询下推,不做任何优化

目前支持的关系代数:

  • 选择(σ)
  • 投影(π)
  • 笛卡尔积(×)
  • 聚集(γ)

目前支持的聚集函数:

  • MAX()
  • MIN()
  • COUNT()
  • SUM()

支持的SQL语句

  • DDL
    • 创建表
    • 删除表
    • 重命名表(暂不实现)
    • 查看表(暂不实现)
  • DML
    • 插入数据
    • 删除数据
    • 更新数据(暂不实现)
  • DQL
    • SELECT后面只支持聚集函数和列名,不支持其它功能
    • FROM后面最多只支持两张表的联结
    • where后面支持"<" "<=" ">" ">=" "=" "!=",不支持and、or等
  • DCL
    • 目前不准备支持任何DCL

DDL

  • CREATE
    • 有且只有一个key
    • 全部not null
    • 目前支持的类型:Bool、Integer、Decimal和Char
  • DROP

DML

  • INSERT
    • 只支持如下形式:
    • INSERT INTO table_name VALUES('123', 1);
  • DELETE
  • SELECT

系统数据与管理

目前只实现下面四种类型,暂时没必要实现更多的类型

  • Bool
  • Integer(只支持正数)
  • Decimal(只支持正数)
  • Char
  • BigInt(TODO) 在计算sum的时候可能会需要用到