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”).
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