Mysql
 sql >> Database >  >> RDS >> Mysql

Sharding del database vs partizionamento

Il partizionamento è più un termine generico per dividere i dati tra tabelle o database. Il partizionamento orizzontale è un tipo specifico di partizionamento, parte di ciò che viene chiamato partizionamento orizzontale.

Qui si replica lo schema su (in genere) più istanze o server, utilizzando una sorta di logica o identificatore per sapere quale istanza o server cercare i dati. Un identificatore di questo tipo è spesso chiamato "Shard Key".

Una logica comune senza chiavi consiste nell'usare l'alfabeto per dividere i dati. A-D è l'istanza 1, E-G è l'istanza 2 ecc. I dati del cliente sono adatti a questo, ma saranno in qualche modo travisati in termini di dimensioni tra le istanze se il partizionamento non tiene conto del fatto che alcune lettere sono più comuni di altre.

Un'altra tecnica comune consiste nell'utilizzare un sistema di sincronizzazione delle chiavi o una logica che garantisca chiavi univoche tra le istanze.

Un esempio ben noto che puoi studiare è come Instagram ha risolto il loro partizionamento nei primi giorni (vedi link sotto). Hanno iniziato partizionati su pochissimi server, utilizzando Postgres per dividere i dati dall'inizio. Credo che fossero diverse migliaia di frammenti logici su quei pochi frammenti fisici. Leggi il loro fantastico articolo del 2012 qui:Instagram Engineering - Sharding e ID

Vedi anche qui:http://www.quora. com/Qual è la differenza-tra-sharding-e-partizione