Problem Statement
When a database grows too large, a single server cannot handle all the data or requests. Without a good way to split data, some servers get overloaded while others stay idle, causing slow responses and failures.
This diagram shows a client sending requests to a shard router, which uses the shard key to direct each request to the correct shard server holding the relevant data.