Uh oh!
There was an error while loading. Please reload this page.
docs(blog): Can a Lakehouse Really Run Maintenance Without Blocking Writes? (MOR series part 4) - #19320
Conversation
…ural Primitive (MOR series part 4) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hudi-agent
left a comment
There was a problem hiding this comment.
No reviewable code files in this PR.
cc @yihua
nsivabalan
commented
Jul 17, 2026
Uh oh!
There was an error while loading. Please reload this page.
Reframe the fourth MoR-series post title from a descriptive ("Async Compaction:
Background Maintenance as an Architectural Primitive") to a question-driven
framing ("Can a Lakehouse Really Run Maintenance Without Blocking Writes?").
The essay is structured as an inquiry — it opens with "should storage optimization
compete with writes, or should it evolve independently?" and answers by walking
through PostgreSQL VACUUM / LSM compaction / online index rebuilds. The prior
title read like a chapter heading. The question form pulls in decision makers
and architects, not just readers who are already sold on the architectural angle.
Filename and URL slug unchanged.
hudi-agent
left a comment
There was a problem hiding this comment.
No reviewable code files in this PR.
cc @yihua
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| This distinction gave rise to one of the most important architectural ideas in modern databases: **background maintenance**. | ||
| <div style={{ textAlign: 'center' }}> | ||
| <img src="/assets/images/blog/2026-07-17-async-compaction-background-maintenance/background-maintenance-across-storage-engines.png" alt="Background maintenance across storage engines" width="800"/> |
There was a problem hiding this comment.
The three PNGs are 1.4-1.8 MB each, so this post ships ~4.8 MB of images. They're full-res RGBA; a pass through pngquant (or exporting as WebP) should cut them ~80% with no visible difference.
Uh oh!
There was an error while loading. Please reload this page.
| Apache Hudi's Merge-On-Read architecture adopts the same principle. | ||
| <div style={{ textAlign: 'center' }}> | ||
| <img src="/assets/images/blog/2026-07-17-async-compaction-background-maintenance/mor-separates-correctness-from-optimization.png" alt="Merge-On-Read separates correctness from optimization" width="800"/> |
There was a problem hiding this comment.
Tiny one, feel free to ignore: this diagram labels the service "Cleaning" while the first diagram says "Cleanup". Hudi's table service is called cleaning, so if either image gets re-exported anyway, worth aligning them.
| The benchmark is intentionally simple in concept. Foreground ingestion continuously mutates the table while background services optimize its physical layout. Rather than measuring the latency of an individual write, we observe whether ingestion continues progressing as maintenance runs in parallel. | ||
| <div style={{ textAlign: 'center' }}> | ||
| <img src="/assets/images/blog/2026-07-17-async-compaction-background-maintenance/benchmark-conceptual-setup.png" alt="Conceptual illustration of the experimental setup" width="800"/> |
There was a problem hiding this comment.
The figure anonymizes to Format A/B/C, but the paragraph below names Hudi, Iceberg and Delta as the benchmark subjects, and the figure already hands A "continuous forward progress" and C "frequently interrupted" -- before any methodology has been shown. On an ASF blog that reads as announcing the conclusion ahead of the evidence. I'd either frame it as the outcomes the benchmark is designed to distinguish, or hold this figure for the benchmark post itself.
There was a problem hiding this comment.
We have already discussed benchmarking in hudi blogs. This diagram is just to give a teaser for next blog.
we should be good.
Consolidates repeated passages, fixes link and title, updates benchmark figure caption to avoid pre-announcing conclusions: - Fix LevelDB link that pointed at rocksdb wiki (wombatu-kun, voonhous) - Update series list entry #4 with the renamed post title (voonhous) - Name Iceberg and Delta explicitly in Two Architectural Philosophies (formerly hedged as "one school of thought") — earns the comparative framing - Consolidate three repetitions of the 2017/2019/perf-tweak-in-retrospect beat down to one (in the intro), drop restatements in Two Architectural Philosophies and the closing section (voonhous) - Consolidate three restatements of the "principles matter only if they change behavior under real workloads" question down to one (voonhous) - Compress the intro paragraph on today's workloads to a forward-pointing sentence; let The Workloads Changed section own that story (voonhous) - Reframe the benchmark-conceptual-setup caption to describe the outcomes the benchmark is designed to distinguish, rather than pre-announcing which engine lands where (voonhous) - Add link to /docs/concurrency_control for NBCC so every capability in the list is followable (voonhous nit) Trims ~35 lines / ~500 words with no dropped points.
Passes all three PNGs through pngquant (--quality 80-95 --strip), cutting the post's image payload from ~4.5MB to ~1.4MB (~70%) with no visible quality change. Addresses voonhous review feedback on page-weight. - background-maintenance-across-storage-engines.png: 1.4MB -> 410KB - benchmark-conceptual-setup.png: 1.7MB -> 524KB - mor-separates-correctness-from-optimization.png: 1.5MB -> 447KB
nsivabalan
commented
Jul 20, 2026
Thanks @wombatu-kun and @voonhous for the careful review. Pushed two commits addressing the feedback:
Left open (with a note): the Cleaning vs Cleanup label mismatch between the two diagrams — that needs a re-export from the diagram source rather than a text edit. I'll fix it in a follow-up commit if I end up re-exporting either image for other reasons; otherwise flagging for the next post in the series where I can align both from the start. |
hudi-agent
left a comment
There was a problem hiding this comment.
No reviewable code files in this PR.
cc @yihua
…hies back to 'one school of thought' hedge Keep the explicit Iceberg/Delta naming in the benchmark-figure paragraph and the closing footer (which are already explicit about the comparison), and leave Two Architectural Philosophies with the softer framing to keep the essay's philosophical tone in that section.
hudi-agent
left a comment
There was a problem hiding this comment.
No reviewable code files in this PR.
cc @yihua
Uh oh!
There was an error while loading. Please reload this page.
Follow-up to review feedback on #19320. Re-ran the three PNGs in the async-compaction post through pngquant at --quality 60-80 (previous pass used 80-95), landing them at ~1.09MB total — a further ~23% reduction on top of the earlier compression, and ~77% off the original ~4.8MB payload. No visible quality change on the diagrams (flat colors, text, small palette).











Summary
Fourth post in the MOR-as-architectural-shift blog series.
Series so far:
Tags
All tags used (
mor,merge on read,compaction,architecture,data lakehouse,metadata,clustering) are already in the existing allowlist — no.github/scripts/validate-blog.pychange needed.Test plan
🤖 Generated with Claude Code