hardSystem Design

What is a write-ahead log (WAL)?

503 views
01

Understand the problem

Explain WAL.

wal
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

WAL: log then apply, recover by replay
Run Playground
class WAL:
    def __init__(self):
        self.log = []      # append-only (a file on disk in reality)
        self.state = {}    # the "data pages"
    def set(self, key, value):
        self.log.append(("set", key, value))  # 1. write-ahead (fsync) FIRST
        self.state[key] = value               # 2. then apply
    def recover(self):
        self.state = {}
        for op, key, value in self.log:       # replay on restart
            if op == "set":
                self.state[key] = value
        return self.state

wal = WAL()
wal.set("balance", 100)
wal.set("balance", 80)
# simulate crash + restart: rebuild state purely from the log
print("recovered:", wal.recover())   # {'balance': 80}
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.