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.