Comparison
Copy-on-write tablevsMerge-on-read table
Copy-on-write table
updating one row rewrites the entire file that row lived in, so writes are slow and every read is as fast as a plain scan.
A table where mutations are applied by rewriting the affected data files immediately. Readers never do extra work, which makes it the right choice when reads vastly outnumber writes and freshness requirements are modest. The write amplification is the whole cost: a single-row change to a large file costs the whole file, which is why a high-frequency change feed into a copy-on-write table becomes expensive quickly.
Full entry →Merge-on-read table
the update is written as a small delta file and the reader merges it with the base file every time, until a compaction folds them together.
A table where mutations are appended as delta or delete files and reconciled at query time. Writes are cheap and fresh, and every read pays a merge cost that grows until compaction runs. It is the right shape for frequently updated tables, and it makes compaction load-bearing rather than optional — an unmaintained merge-on-read table degrades continuously.
Full entry →