You can also think reads vs writes. Like when there are many reads but few writes it makes sense to have replicas, but if there are many writes and little reads you are better off with "sharding". You can also think RAID, where you have mirrors vs stripes. Often though the two concepts are combined, like in RAID 0+1 or RAID 1+0. Scaling many reads are much more simple then scaling both read/writes though. The holy grail of computing/databases is to build a database that can scale both reads and writes while having decent performance and latency.