copy on write
hudi中数据存储有两种文件,parquet为历史存储数据,log为刚写入的日志数据,表进行分区(partition)后,再划分不同的文件组(filegroup)的概念,每个文件组中有多个文件片(fileslice)结合索引就可以实现多版本并发控制。
cow表在写数据时,会将parquet中的数据进行拷贝一份,与新写入的数据做compact,形成新的parquet,之后形成新的文件片,可见cow表存储目录下只会有parquet文件,没有log文件。cow表适合读多写少的场景
read on merge
在向mor表写数据时,每次写入都会产生增量文件,新写入的数据存入log文件中, 并根据索引将log放入指定的文件片(fileslice);当向mor表读取时,才会进行合并。可见mor表数据存储目录下可能同时存在parquet和log文件。mor适合写多读少的场景