0

I have been reading Lewis Lin's "The System Design Interview". In the example cases, when designing Twitter, he first talks about sharding the database. Then, to improve availability, he suggests replicating each shard with a main (write) replica and a few secondary (read) replicas. Writes will flow to the write replicas of each shard, and reads will flow directly to the read replicas.

It makes sense to me so far.

He then suggests that we break up our system design, and have a write-optimized work flow and a read-optimized work flow. I.e. have some write application servers, and some read application servers. Each workflow can be scaled independently.

My confusion comes here: at this point, he starts to draw the database diagram differently. Instead of drawing several shards, each with one write db and 2 read dbs, he draws one "write DB shard cluster" and one "read db shard cluster". My interpretation is that at this step, architecturally, nothing changed. What changes is how he draws it. Is this correct? Or was there an architectural change in the last step? He doesn't explain it much.

Scaling a DB steps

0 Answers0