sql >> Databasteknik >  >> RDS >> Mysql

Databasdelning vs partitionering

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



  1. Hur CHAR() fungerar i MariaDB

  2. Vad är skillnaden mellan primärt index och sekundärt index exakt?

  3. Problem med att öppna MDF-fil eftersom det står SQL-fel 5171? - Ett gästinlägg av Andre Williams

  4. Ansluta en 64-bitars applikation till Acomba