9

Jun

Windows Azure – Strategie di Storage pt.1 – Data Partitioning

Il partitioning dei dati è il meccanismo di scaling del layer dati di Azure. Vedremo ora come si applica sia all’Azure Storage (tables, non relazionali) sia a SQL Azure. Il partizionamento può essere:

  • Orizzontale:
    • Set di dati vengono salvati in location differenti
    • Preservazione dello schema che rimane identico in ogni fetta
    • Maggiore complessità delle query che coinvolgono più partizioni
    • Ovvi miglioramenti di performance nelle query intra-partizione
image
  • Verticale:
    • Alcune colonne vengono salvate in location differenti
    • Lo schema di ogni nodo è differente
    • Utile se si vogliono salvare separatamente elementi di storage il cui costo relazionale sarebbe troppo elevato (come nell’esempio sotto, salvando immagini e files sull’Azure Storage preservando i dati relazionali su SQL Azure)
    • Il contro è che una query che voglia ottenere una riga completa, indubbiamente richiederà uno sforzo maggiore

image

  • Ibrida:
    • Chiaramente un compromesso tra verticale e orizzontale, utile in scenari in cui si voglia beneficiare di entrambi i miglioramenti
    • Due complessità concorrenti da gestire

image

Il perchè del partizionamento segue dall’analisi di scenari di ampia necessità di scalabilità di una piattaforma. Più la piattaforma vuole avere utenza (accessi concorrenti), più deve essere studiata per poter essere disponibile a chiunque. Inoltre si vuole sempre evitare la crescita smisurata dei dati in favore di un partizionamento che ottimizzi, oltre che il reperimento, anche l’archiviazione del dato stesso.

Con il partizionamento si vuole quindi ottimizzare le performance relative alle disponibilità del dato (bilanciamento del carico) sia la gestione di grandi moli di dati. Uno scenario partizionato infine abilita la possibilità di far subire al sistema oscillazioni elastiche che in uno scenario monolitico non sarebbero possibili.

by Roberto Freato on 6/9/2011
Post archive