A single database server has limits: a fixed amount of disk, memory, CPU, and write throughput. You can buy a bigger machine for a while, which is vertical scaling, but eventually the largest available server is not enough, or it gets absurdly expensive. At that point you have to spread the data across many machines, which is horizontal scaling.
Sharding is horizontal scaling for a database. Instead of one server holding all hundred million users, you run several servers and each holds a portion, say twenty-five million each. Reads and writes for a given user go only to the shard that holds that user, so the total capacity is the sum of all the shards. This is the main way large systems scale writes, because unlike read replicas, sharding splits the write load too.