Mondi su mondi, sistemi di sistemi.

Sharding: un diverso approccio per scalare i databases

Come dicevo ieri, High Scalability è una miniera di informazioni. In questo articolo viene discusso lo sharding per scalare in orizzontale applicazioni che si appoggiano ad un database SQL – praticamente il 90%, direi – per la gestione dei dati.

L’idea è quasi banale. Di solito il DBMS gira su una sola macchina e solo gli strati più alti dell’architettura, come l’application server e il server web vengono scalati in orizzontale; se si vogliono aumentare le pre­stazioni del DBMS si aggiorna l’hardware. Lo sharding cerca di risolvere questo problema segregando i dati in blocchi (o se pre­ferite, in schegge, traducendo direttamente shard). Ogni blocco è indipendente e quindi diventa pos­sibile rendere più lineare la scalabilità del sistema, aggiungendo hardware in modo progres­sivo solo quando richiesto.

Ho qualche dubbio sul fatto che i dati debbano essere neces­sariamente denormalizzati: credo dipenda molto dallo schema; anzi, direi che l’evitare la denormalizzazione dovrebbe essere uno dei criteri per “scheggiare” la base dati. Ovviamente, i vari sistemi DBMS sono anch’essi interpellati da problematiche e soluzioni come queste: è il loro settore, no?

Per proseguire

Commenti e trackback sono disabilitati.