磁盘表 disk table 支持添加/删除索引功能

背景背景

目前磁盘表 disk table 不支持添加或者删除索引功能,需要添加上 AddIndex 和DeleteIndex 功能,以便用户对磁盘表也可以进行索引的添加和删除。

编程语言编程语言

C++

实现方案实现方案

目前磁盘表是基于 rocksdb 的实验,一个索引对应一个 rocksdb 的一个ColumnFamily。所以添加索引,相当于是增加一个 ColumnFamily;删除索引相当于是删除掉对应的 ColumnFamily。
需要实现的大致步骤为:

  1. 在 disk table 实现中(AddIndex/DeleteIndex 方法)https://github.com/4paradigm/OpenMLDB/blob/main/src/storage/disk_table.cc
    a. 增加/删除 ColumnFamily
    b. 更新 table index 相关元信息
  2. 在 tablet 实现中(AddIndex/DeleteIndex 方法)https://github.com/4paradigm/OpenMLDB/blob/main/src/tablet/tablet_impl.cc
    a. 添加对 disk table 添加/删除索引的逻辑
  3. 在 tablet_impl_test.cc 里添加单元测试,验证 AddIndex/DeleteIndex 正确性

可以参考:

  1. ColumnFamily 接口参考 https://github.com/facebook/rocksdb/wiki/Column-Families
  2. 内存表 AddIndex 和 DeleteIndex 实现逻辑 https://github.com/4paradigm/OpenMLDB/blob/main/src/storage/mem_table.cc

    Github IssueGithub Issue

    https://github.com/4paradigm/OpenMLDB/issues/2018