数据湖是反对多种表格局的,好比 CopyOnWrite(简称COW)表、MergeOnRead(简称MOR)表。COW 表的劣势在于读机能对比好,然而会致使写缩小,MOR 表正好相同,写的机能对比好的,会致使读缩小。详细选择哪一种表格局,更多要按照大家的业务场景来抉择。
咱们的业务场景是为理解决 CDC 数据的近实时同步,CDC 数据有个显著的特征,是存在少量的随机更新。这个场景下选择 COW,会致使写缩小的问题对比重大,所以咱们选择了 MOR 表。上图就是一个 MOR 表查问和写入的流程。第一个是列存储的根底镜像文件,咱们称之为 Base 文件,第二个是行存储的增量日志,咱们称之为 Log 文件。
每次查问时,需求将 Log 文件和 Base 文件合并,为理解决 MOR 表读缩小的问题,通常咱们会建一个 Compaction 的办事,经过周期性的调度,将 Log 文件和 Base 文件合并,生成一个新的 Base 文件。 Hudi 实时写入痛点