Articles

Sharding

Sharding è la pratica di ottimizzare i sistemi di gestione del database separando le righe o le colonne di una tabella di database più grande in più tabelle più piccole. Le nuove tabelle sono chiamate ” shard “(o partizioni) e ogni nuova tabella ha lo stesso schema ma righe univoche (come nel caso di” sharding orizzontale”) o ha uno schema che è un sottoinsieme appropriato dello schema della tabella originale (come nel caso di”sharding verticale”).

Sharding separa le righe di una tabella più grande in più tabelle più piccole per diffondere i dati su più computer.
Con sharding, vengono create nuove tabelle chiamate “frammenti” (o partizioni). Ogni nuova tabella ha lo stesso schema ma righe univoche (come nel caso di “sharding orizzontale”) o ha uno schema che è un sottoinsieme appropriato dello schema della tabella originale (come nel caso di “sharding verticale”).

Perché viene utilizzato Sharding?

Lo sharding è un concetto comune nelle architetture di database scalabili. Sharding una tabella più grande, è possibile memorizzare i nuovi blocchi di dati, chiamati frammenti logici, su più nodi per ottenere scalabilità orizzontale e prestazioni migliorate. Una volta che lo shard logico viene memorizzato su un altro nodo, viene indicato come shard fisico.

Quando si esegue un database su una singola macchina, alla fine si raggiungerà il limite della quantità di risorse di calcolo che è possibile applicare a qualsiasi query e ovviamente si raggiungerà una quantità massima di dati con cui è possibile lavorare in modo efficiente. Ridimensionando orizzontalmente, è possibile abilitare una progettazione di database flessibile che aumenta le prestazioni in due modi principali:

  • Con l’elaborazione massicciamente parallela, è possibile sfruttare tutte le risorse di calcolo in tutto il cluster per ogni query.
  • Poiché i singoli frammenti sono più piccoli della tabella logica nel suo complesso, ogni macchina deve scansionare meno righe quando risponde a una query.

Lo sharding orizzontale è efficace quando le query tendono a restituire un sottoinsieme di righe spesso raggruppate insieme. Ad esempio, le query che filtrano i dati in base a intervalli di date brevi sono ideali per lo sharding orizzontale poiché l’intervallo di date limiterà necessariamente l’interrogazione a solo un sottoinsieme dei server.

Lo sharding verticale è efficace quando le query tendono a restituire solo un sottoinsieme di colonne dei dati. Ad esempio, se alcune query richiedono solo nomi e altre richiedono solo indirizzi, i nomi e gli indirizzi possono essere suddivisi in server separati.

Inoltre, i database frammentati possono offrire livelli più elevati di disponibilità. In caso di interruzione di un database non protetto, l’intera applicazione è inutilizzabile. Con un database frammentato, solo le parti dell’applicazione che si basavano sui blocchi di dati mancanti sono inutilizzabili. In pratica, i database frammentati spesso attenuano ulteriormente l’impatto di tali interruzioni replicando i frammenti di backup su nodi aggiuntivi.

Qual è la differenza tra Sharding e partizionamento?

Lo sharding e il partizionamento riguardano entrambi la suddivisione di un set di dati di grandi dimensioni in sottoinsiemi più piccoli. La differenza è che lo sharding implica che i dati siano distribuiti su più computer mentre il partizionamento no. Il partizionamento riguarda il raggruppamento di sottoinsiemi di dati all’interno di una singola istanza di database. In molti casi, i termini sharding e partizionamento sono anche usati come sinonimi, specialmente se preceduti dai termini “orizzontale” e “verticale.”Quindi,” sharding orizzontale” e “partizionamento orizzontale” possono significare la stessa cosa.

Argomenti correlati

Calcolo in memoria

Edge Computing

Grid Computing

Ulteriori letture

Hazelcast IMDG 3.12 introduce il sottosistema CP

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *