磁盘表 disk table 支持添加/删除索引功能
背景背景
目前磁盘表 disk table 不支持添加或者删除索引功能,需要添加上 AddIndex 和DeleteIndex 功能,以便用户对磁盘表也可以进行索引的添加和删除。
编程语言编程语言
C++
实现方案实现方案
目前磁盘表是基于 rocksdb 的实验,一个索引对应一个 rocksdb 的一个ColumnFamily。所以添加索引,相当于是增加一个 ColumnFamily;删除索引相当于是删除掉对应的 ColumnFamily。 需要实现的大致步骤为:
- 在 disk table 实现中(AddIndex/DeleteIndex 方法)https://github.com/4paradigm/OpenMLDB/blob/main/src/storage/disk_table.cc a. 增加/删除 ColumnFamily b. 更新 table index 相关元信息
- 在 tablet 实现中(AddIndex/DeleteIndex 方法)https://github.com/4paradigm/OpenMLDB/blob/main/src/tablet/tablet_impl.cc a. 添加对 disk table 添加/删除索引的逻辑
- 在 tablet_impl_test.cc 里添加单元测试,验证 AddIndex/DeleteIndex 正确性
可以参考:
- ColumnFamily 接口参考 https://github.com/facebook/rocksdb/wiki/Column-Families
- 内存表 AddIndex 和 DeleteIndex 实现逻辑 https://github.com/4paradigm/OpenMLDB/blob/main/src/storage/mem_table.cc
Github IssueGithub Issue