Partitionering är mer en generisk term för att dela upp data över tabeller eller databaser. Sharding är en specifik typ av partitionering, en del av det som kallas horisontell partitionering.
Här replikerar du schemat över (vanligtvis) flera instanser eller servrar, med någon form av logik eller identifierare för att veta vilken instans eller server som ska leta efter data. En identifierare av detta slag kallas ofta en "Shard Key".
En vanlig, nyckellös logik är att använda alfabetet för att dela upp data. A-D är instans 1, E-G är instans 2 etc. Kunddata är väl lämpade för detta, men kommer att vara något felaktigt i storlek över instanser om partitioneringen inte tar hänsyn till att vissa bokstäver är vanligare än andra.
En annan vanlig teknik är att använda ett nyckelsynkroniseringssystem eller en logik som säkerställer unika nycklar i alla instanser.
Ett välkänt exempel du kan studera är hur Instagram löste deras partitionering i början (se länk nedan). De började partitionerade på väldigt få servrar och använde Postgres för att dela upp data från början. Jag tror att det var flera tusen logiska skärvor på dessa få fysiska skärvor. Läs deras fantastiska skrivning från 2012 här:Instagram Engineering - Sharding &IDs
Se även här:http://www.quora. com/Whats-the-difference-between-sharding-and-partition