Sharding AKA Partioning on Multiple Machines
Database sharding the process of partioning your data in multiple databases (not on the same database server/instance). Sharding is the next step of scaling expanding data requirements. Imaging your application being popular and millions of users start signing up. If the database instance is not capable of handling the traffic or your queries taking longer to process due to the millions of records that are added, you have to either vertically scale the database (increase database resources or create partions). If these options are not available or you have already exhausted them, next option would be to create a new instance of a database and route some of the new users to that. That way your existing database would not be congested.
But how can we achieve this?