Splitting a database into several pieces, usually to improve the
speed and reliability of your application.
Sharding strictly speaking is a synonym for "horizontal partitioning" or dividing up a database
table by its rows.
In
common use, sharding refers to having some data for an app on one database server, and other data in another. Often this is done by having specific tables hosted on specific servers, with a function determining which server contains the information being requested.
Sharding is frequently discussed with regard to large web
based applications, but is not limited to any particular industry.
As a practical example, a WordPress MultiSite installation hosting several hundred thousand blogs could have the tables for sites
1-100,000 running on one database server 100,001-200,000 on another or 200,001+ on a third. An alternative sharding implementation could be to have the
50 busiest blogs' tables
split between the first
two servers all remaining blog data on the third server. Likewise, data could be partitioned
based upon the geographic location of the web servers delivering each blog.