# storage-engine

Published articles for storage-engine.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How LSM compaction causes write stalls and latency spikes

DevFeed: [How LSM compaction causes write stalls and latency spikes](<https://devfeed.tech/articles/lsm-compaction-is-a-background-job-that-will-wake-you-at-3am-39594.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/42-lsm-compaction-write-stalls/>)

Author: hello@ankit-rana.com

Published: 2026-08-24T00:00:00Z

Content type: article

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [scylladb](<https://devfeed.tech/topics/scylladb.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [capacity-planning](<https://devfeed.tech/tags/capacity-planning.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [durability](<https://devfeed.tech/tags/durability.md>), [latency](<https://devfeed.tech/tags/latency.md>), [lsm-tree](<https://devfeed.tech/tags/lsm-tree.md>), [outage](<https://devfeed.tech/tags/outage.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>), [scylladb](<https://devfeed.tech/tags/scylladb.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>), [write](<https://devfeed.tech/tags/write.md>), [write-amplification](<https://devfeed.tech/tags/write-amplification.md>)

### AI overview

LSM trees make writes fast by deferring work, but background compaction repeatedly rewrites stored data. When compaction falls behind, pending files increase, reads become slower, and the engine may throttle or stop writes to prevent unbounded read amplification. The article recommends watching pending compaction bytes and maintaining disk headroom for simultaneous compaction input and output.

### Source excerpt

An LSM tree makes writes fast by never updating in place, which means every write is eventually rewritten several times by background compaction. When compaction falls behind, the engine deliberately throttles or stops incoming writes to avoid unbounded read amplification, so a background job becomes a foreground outage. The signal to watch is pending compaction bytes rather than disk utilisation, and the disk needs headroom for the largest compaction because merging requires space for input and output at the same time.

## Beyond Inline Values: Evolving Strata's Storage Engine

DevFeed: [Beyond Inline Values: Evolving Strata's Storage Engine](<https://devfeed.tech/articles/beyond-inline-values-evolving-strata-s-storage-engine-39413.md>)

Original publisher: [Read original article](<https://n8z.dev/posts/beyond-inline-values/>)

Author: Nevin Zheng

Published: 2026-06-03T00:00:00Z

Content type: article

Language: en

Sources: [nevzheng](<https://devfeed.tech/sources/nevzheng.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [abstraction](<https://devfeed.tech/topics/abstraction.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [olap](<https://devfeed.tech/topics/olap.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [block](<https://devfeed.tech/tags/block.md>), [bootstrapping](<https://devfeed.tech/tags/bootstrapping.md>), [layout](<https://devfeed.tech/tags/layout.md>), [migration](<https://devfeed.tech/tags/migration.md>), [performance](<https://devfeed.tech/tags/performance.md>), [repo](<https://devfeed.tech/tags/repo.md>), [rust](<https://devfeed.tech/tags/rust.md>), [sql](<https://devfeed.tech/tags/sql.md>), [storage](<https://devfeed.tech/tags/storage.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>), [write-amplification](<https://devfeed.tech/tags/write-amplification.md>)

### AI overview

This architectural decision record proposes replacing Strata's inline value storage with a block-based abstraction. It describes the current Rust LSM storage engine and SQL layer, identifies flexibility and I/O amplification problems, compares options, and records the proposed direction.

### Source excerpt

An architectural decision record: why Strata is moving from inline values to block-based storage.

## The RUM Conjecture: You Cannot Optimize Reads, Updates, and Memory at Once

DevFeed: [The RUM Conjecture: You Cannot Optimize Reads, Updates, and Memory at Once](<https://devfeed.tech/articles/the-rum-conjecture-you-cannot-optimize-reads-updates-and-memory-at-once-39565.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/13-rum-conjecture-database-tradeoffs/>)

Author: hello@ankit-rana.com

Published: 2026-03-17T00:00:00Z

Content type: article

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [b-tree](<https://devfeed.tech/tags/b-tree.md>), [capacity](<https://devfeed.tech/tags/capacity.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [dram](<https://devfeed.tech/tags/dram.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [latency](<https://devfeed.tech/tags/latency.md>), [memory](<https://devfeed.tech/tags/memory.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [node](<https://devfeed.tech/tags/node.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

The article explains the RUM Conjecture, which describes a tradeoff among read overhead, update overhead, and memory overhead in database indexes and storage engines. It compares B-Trees, LSM-Trees, and hash indexes to show how each optimizes different tradeoffs.

### Source excerpt

You can strictly optimise at most two of read overhead, update overhead, and memory overhead; the third will be expensive. B-Trees optimise reads and memory and pay on writes. LSM-Trees optimise writes and memory and pay on reads. Hash indexes optimise reads and writes and pay in RAM. The useful question is not whether a database is good but which corner it optimises and what you are willing to pay for the other two.

## Building an LSM Storage Engine from Scratch in Rust

DevFeed: [Building an LSM Storage Engine from Scratch in Rust](<https://devfeed.tech/articles/building-strata-39414.md>)

Original publisher: [Read original article](<https://n8z.dev/posts/building-strata/>)

Author: Nevin Zheng

Published: 2026-03-05T00:00:00Z

Content type: opinion

Language: en

Sources: [nevzheng](<https://devfeed.tech/sources/nevzheng.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [database](<https://devfeed.tech/tags/database.md>), [merge](<https://devfeed.tech/tags/merge.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [rust](<https://devfeed.tech/tags/rust.md>), [storage](<https://devfeed.tech/tags/storage.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>)

### AI overview

A personal engineering account of building an LSM storage engine from scratch in Rust. The author discusses choosing LSM trees, prioritizing correctness and developer experience, versioning keys for possible MVCC exploration, and considering key-value separation to reduce compaction costs.

### Source excerpt

Building my own perfectly imperfect LSM storage engine from scratch in Rust.

## Demystifying MongoDB write operations

DevFeed: [Demystifying MongoDB write operations](<https://devfeed.tech/articles/demystifying-mongodb-write-operations-39626.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2024-02-18_Demystifying-MongoDB-write-operations-dbac459c9d26>)

Published: 2024-02-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [MongoDB](<https://devfeed.tech/topics/mongodb.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [Cache](<https://devfeed.tech/topics/cache.md>)

Tags: [cache](<https://devfeed.tech/tags/cache.md>), [checkpoint](<https://devfeed.tech/tags/checkpoint.md>), [command](<https://devfeed.tech/tags/command.md>), [memory](<https://devfeed.tech/tags/memory.md>), [mongodb](<https://devfeed.tech/tags/mongodb.md>), [replication](<https://devfeed.tech/tags/replication.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>)

### AI overview

This post explains MongoDB write operations by connecting WiredTiger caching, journaling, checkpointing, and replication. It describes how writes move through memory, the write-ahead log, and disk, including stated default flushing intervals and recovery behavior.

### Source excerpt

In this post, we will try to understand the different factors which control the write operations in MongoDB. We will try to tie in the common concepts like checkpointing, journaling, replication that we hear so often in the context of write operations...

## Introducing persistent memory

DevFeed: [Introducing persistent memory](<https://devfeed.tech/articles/introducing-persistent-memory-39364.md>)

Original publisher: [Read original article](<https://kt.academy/article/pmem-introducing-persistent-memory>)

Published: 2022-05-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [IO](<https://devfeed.tech/topics/io.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [hdd](<https://devfeed.tech/tags/hdd.md>), [io](<https://devfeed.tech/tags/io.md>), [latency](<https://devfeed.tech/tags/latency.md>), [memory](<https://devfeed.tech/tags/memory.md>), [nvme](<https://devfeed.tech/tags/nvme.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [ssd](<https://devfeed.tech/tags/ssd.md>), [storage](<https://devfeed.tech/tags/storage.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

An introduction to persistent memory, a non-volatile storage technology that fits in standard DIMM slots. It explains its position between DRAM and storage, its durability and byte addressability, and how applications can use it to avoid block I/O overhead.

### Source excerpt

Let's learn the basics of persistent memory, its characteristics, how it works and the beauty of byte addressability.