Frozen in Time: Implementing Snapshot Isolation in a Tiny KV Store
Submitted Apr 20, 2025
Topic of your submission:
Databases
Type of submission:
30 mins talk
I am submitting for:
Rootconf Annual Conference 2025
Overview
MVCC powers most modern databases by giving each transaction its own immutable snapshot and eliminates read‑write contention and also guarantees repeatable and consistent reads.
Snapshot Isolation
In this talk, we will learn about snapshot isolation, how MVCC enables time-travel queries and help build an intuition for concurrency control protocols using interactive visualizations.
MVCC in ShrewKV
We will then walk through a step‑by‑step minimal implementation of MVCC in ShrewKV, a tiny in‑memory Rust key‑value store.
Along the way, we’ll dive deeper into the essential implementation steps - version chains, snapshot reads, conflict checks, and garbage collection of obsolete versions. By the end of the talk, we will have a better understanding of MVCC, and the the nuances of implementing it from scratch.
Key Takeaways
-
Snapshot Isolation in Production: We’ll learn how snapshot isolation forms the backbone of systems like Spanner, CockroachDB, and PostgreSQL by giving you a clear mental model for how real‑world databases handle concurrent reads, geo‑distributed queries, and time‑travel snapshots.
-
Seeing MVCC in Action: Walking through ShrewKV’s MVCC implementation helps bridge theory and practice, giving you deeper insight into how snapshot isolation powers real-world systems.
Who Should Attend?
This session is ideal for backend and database engineers designing high‑throughput storage systems, architects choosing isolation models for distributed services, and engineers eager to learn about real‑world concurrency control patterns.
Bio
Shriram Balaji works as a Senior Software Engineer at Microsoft, in Microsoft 365 Core building large scale distributed systems that deal with O(exabytes) of data and trillions of requests per day. He likes to tinker with systems, databases, compilers and things on the web.
{{ gettext('Login to leave a comment') }}
{{ gettext('Post a comment…') }}{{ errorMsg }}
{{ gettext('No comments posted yet') }}