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.
When our site became
so popular it kept overwhelming our
database servers, we looked into sharding the database between five different
data centers.