Mondi su mondi, sistemi di sistemi.

Sharding: un diverso approccio per scalare i databases

Come dicevo ieri, High Scalability è una miniera di infor­ma­zioni. In que­sto arti­colo viene discusso lo shar­ding per sca­lare in oriz­zon­tale appli­ca­zioni che si appog­giano ad un data­base SQL – pra­ti­ca­mente il 90%, direi – per la gestione dei dati.

L’idea è quasi banale. Di solito il DBMS gira su una sola mac­china e solo gli strati più alti dell’architettura, come l’application ser­ver e il ser­ver web ven­gono sca­lati in oriz­zon­tale; se si vogliono aumen­tare le pre­sta­zioni del DBMS si aggiorna l’hardware. Lo shar­ding cerca di risol­vere que­sto pro­blema segre­gando i dati in bloc­chi (o se pre­fe­rite, in schegge, tra­du­cendo diret­ta­mente shard). Ogni blocco è indi­pen­dente e quindi diventa pos­si­bile ren­dere più lineare la sca­la­bi­lità del sistema, aggiun­gendo hard­ware in modo pro­gres­sivo solo quando richiesto.

Ho qual­che dub­bio sul fatto che i dati deb­bano essere neces­sa­ria­mente denor­ma­liz­zati: credo dipenda molto dallo schema; anzi, direi che l’evitare la denor­ma­liz­za­zione dovrebbe essere uno dei cri­teri per “scheg­giare” la base dati. Ovviamente, i vari sistemi DBMS sono anch’essi inter­pel­lati da pro­ble­ma­ti­che e solu­zioni come que­ste: è il loro set­tore, no?

Per proseguire

Commenti e trackback sono disabilitati.