Partitionering er mere en generisk betegnelse for opdeling af data på tværs af tabeller eller databaser. Sharding er en specifik type partitionering, en del af det, der kaldes horisontal partitionering.
Her replikerer du skemaet på tværs af (typisk) flere instanser eller servere ved at bruge en form for logik eller identifikator for at vide, hvilken instans eller server der skal lede efter dataene. En identifikator af denne art kaldes ofte en "Shard Key".
En almindelig logik uden nøgle er at bruge alfabetet til at opdele dataene. A-D er instans 1, E-G er instans 2 osv. Kundedata er velegnede til dette, men vil være noget forkert repræsenteret i størrelse på tværs af instanser, hvis partitioneringen ikke tager højde for, at nogle bogstaver er mere almindelige end andre.
En anden almindelig teknik er at bruge et nøglesynkroniseringssystem eller -logik, der sikrer unikke nøgler på tværs af instanserne.
Et velkendt eksempel, du kan studere, er, hvordan Instagram løste deres partitionering i de tidlige dage (se link nedenfor). De startede med partitionering på meget få servere og brugte Postgres til at opdele dataene fra starten. Jeg tror, det var flere tusinde logiske skår på de få fysiske skår. Læs deres fantastiske skrivning fra 2012 her:Instagram Engineering - Sharding &ID'er
Se også her:http://www.quora. com/Whats-the-difference-between-sharding-and-partition