Doris的Light Schema Change是如何实现的?

提问者:帅平 问题分类:面试刷题
Doris的Light Schema Change是如何实现的?
1 个回答
深海少女心
深海少女心
Light Schema Change只需要在加减 Value 列的时候,对 FE 中表的元数据进行修改并持久化,并不需要同步给BE,BE 对读写操作依赖于自身的 Schema。不过这会带来Schema不一致的问题,因此通过修改BE的读写流程来解决:
1、读取数据的时候下发 Schema 。Schema 每一列都有相应的 Unique ID,该 Unique ID 由 BE 的每个 Tablet 负责产生和赋值,但对于所有的 Tablet,其 Schema 列的 Unique ID 都是一致的,因此将此过程移在 FE 上去实现。FE 在生成查询计划时,会把最新的 Schema 附在其中,并一起发给 BE,BE 会拿最新的 Schema 读取数据。
2、将 Schema 持久化到 Rowset 的元数据中。FE 在发起导入任务的时候,会把最新的 Schema 一起下发给 BE,BE 会根据最新的 Schema 对数据进行写入并与 Rowset 绑定,将该 Schema 持久化到 Rowset 的元数据之中,实现了 Rowset 数据的自解析
3、在进行 Compaction 的时候,选取需要进行 Compaction 的 Rowset 中最新的 Schema,作为Compaction 之后 Rowset 所对应的 Schema
4、此外,实现了一个全局的 Schema Cache 管理相同的 Schema,这样就算有成千上万个 Rowset,只要 Schema 相同,内存中只会存在一份 Schema。
发布于:1个月前 (02-08) IP属地:四川省
我来回答