Hudi通过索引机制将给定的hoodie key(record key+分区路径)映射到文件id,实现了高效的数据更新和修改。一旦将记录的第一个版本写入文件,record key和文件组/文件id之间的映射就永远不会改变。简而言之,映射的文件组包含一组记录的所有版本。
对于Copy-On-Write表,可以实现快速的追加和删除操作,避免了对整个数据集进行连接以确定要重写的文件。对于Merge-On-Read表,这种设计允许Hudi绑定基础文件需要合并的记录数量。给定的基础文件只需要根据作为该基础文件一部分的记录的更新进行合并。相比之下,没有索引组件的设计(例如:Apache Hive ACID)不得不根据所有传入的更新/删除记录合并所有的基本文件。
更新(黄色块)与基础文件(白色块)的合并成本比较