Welche technischen Vor- und Nachteile bietet die Merge-on-Read (MoR) Strategie gegenüber Copy-on-Write (CoW) in Apache Hudi?

In Apache Hudi steuern wir die Balance zwischen Schreib- und Leselatenz über die Wahl der Speicherstrategie. Der fundamentale Unterschied liegt darin, wie Updates und Deletes auf dem physischen Speicher abgelegt werden.

Technische Gegenüberstellung

MerkmalCopy-on-Write (CoW)Merge-on-Read (MoR)
SchreibmechanismusÜberschreibt die gesamte Parquet-Datei bei jedem Update.Schreibt Updates in zeilenorientierte Log-Dateien (Avro).
SchreiblatenzHoch (aufgrund von Write Amplification).Niedrig (Append-only Log-Schreibvorgänge).
LeselatenzNiedrig (optimierte spaltenorientierte Dateien).Höher (Merge-Operation beim Lesen nötig).
Storage-FormatRein spaltenorientiert (Parquet).Hybrid (Parquet-Basis + Avro-Logs).
RechenlastLast liegt primär beim Schreibvorgang.Last verschiebt sich auf den Lesevorgang oder Compaction.

Bei der Copy-on-Write-Strategie wird bei jeder Änderung eines einzelnen Datensatzes die gesamte Datei, in der dieser liegt, neu gelesen, modifiziert und geschrieben. Dies führt zu einer massiven Write Amplification, was besonders bei häufigen Updates kleiner Datenmengen ineffizient ist. Der Vorteil liegt in der maximalen Leseperformance, da keine Zusammenführung von Datenströmen zur Laufzeit erfolgt.

Die Merge-on-Read-Strategie optimiert den Schreibdurchsatz, indem sie Änderungen in Delta-Logfiles speichert. Wir unterscheiden hier zwischen zwei Lesemodi: Der Read-Optimized View liest nur die kompaktierten Parquet-Dateien (verliert jedoch aktuelle Updates), während der Real-time View die Logfiles zur Laufzeit mit den Basisdateien mergt. Um die Leseperformance langfristig stabil zu halten, ist ein asynchroner Compaction-Prozess notwendig, der die Logs periodisch in die Basisdateien integriert.

Die Wahl der Strategie ist Teil einer übergeordneten IT-Consulting & Digitale Strategie, da sie direkt die Kosten für Compute-Ressourcen und die Anforderungen an die Datenfrische beeinflusst. Während CoW für Read-Heavy-Workloads mit seltenen Updates prädestiniert ist, löst MoR die Engpässe bei Streaming-Ingestions.

Für Anwendungsfälle mit hohen Update-Raten und geringen Latenzanforderungen beim Schreiben empfehlen wir MoR in Kombination mit einer präzise konfigurierten Compaction-Strategie, da CoW bei häufigen kleinen Updates die Storage-Infrastruktur durch unnötige Schreibvorgänge überlastet.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt