Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare il partizionamento per aggirare i limiti di database, rete e calcolo
Nel cloud tutti i servizi hanno limiti nella possibilità di aumentare le prestazioni. I limiti dei servizi di Azure sono documentati in sottoscrizione di Azure e limiti, quote e vincoli del servizio. I limiti includono il numero di core, le dimensioni del database, la velocità effettiva delle query e la velocità effettiva di rete. Se il sistema cresce sufficientemente grande, è possibile raggiungere uno o più di questi limiti. Usare il partizionamento per aggirare questi limiti.
Esistono molti modi per partizionare un sistema, ad esempio:
Partizionare un database per evitare limiti relativi alle dimensioni del database, all'I/O dei dati o al numero di sessioni simultanee.
Partizionare una coda o un bus di messaggi per evitare limiti al numero di richieste o al numero di connessioni simultanee.
Partizionare un'app Web del servizio app per evitare limiti al numero di istanze per piano di servizio app.
Un database può essere partizionato orizzontalmente, verticalmente o funzionalmente.
Nel partizionamento orizzontale, detto anche partizionamento orizzontale, ogni partizione contiene dati per un subset del set di dati totale. Le partizioni condividono lo stesso schema di dati. Ad esempio, i clienti i cui nomi iniziano con A-M passano in una partizione, N-Z in un'altra partizione.
Nel partizionamento verticale ogni partizione contiene un subset dei campi per gli elementi nell'archivio dati. Ad esempio, inserire campi a cui si accede di frequente in una partizione e campi a cui si accede meno frequentemente in un'altra.
Nel partizionamento funzionale, i dati vengono partizionati in base a come vengono usati da ogni contesto delimitato nel sistema. Ad esempio, archiviare i dati della fattura in una partizione e i dati di inventario del prodotto in un altro. Gli schemi sono indipendenti.
Per altre informazioni, vedere Partizionamento dei dati.
Consigli
Partizionare parti diverse dell'applicazione. I database sono un candidato ovvio per il partizionamento, ma considerano anche l'archiviazione, la cache, le code e le istanze di calcolo.
Progettare la chiave di partizione per evitare hotspot. Se si partiziona un database, ma una partizione ottiene comunque la maggior parte delle richieste, non è stato risolto il problema. Idealmente, il caricamento viene distribuito uniformemente in tutte le partizioni. Ad esempio, hash per ID cliente e non la prima lettera del nome del cliente, perché alcune lettere sono più frequenti. Lo stesso principio si applica quando si partiziona una coda di messaggi. Selezionare una chiave di partizione che porti a una distribuzione uniforme dei messaggi nel set delle code. Per altre informazioni, vedere Partizionamento orizzontale.
Partizionamento dei limiti di sottoscrizione e di servizio in Azure. I singoli componenti e servizi hanno limiti, ma esistono anche limiti per le sottoscrizioni e i gruppi di risorse. Per le applicazioni molto grandi, potrebbe essere necessario partizionare intorno a tali limiti.
Partizionamento a livelli diversi. Si consideri un server di database distribuito in una macchina virtuale. La VM ha un VHD basato su Azure Storage. L'account di archiviazione appartiene a una sottoscrizione di Azure. Si noti che ogni passaggio della gerarchia presenta limiti. Il server di database potrebbe avere un limite di pool di connessioni. Le macchine virtuali hanno limiti di CPU e rete. L'archiviazione ha limiti di IOPS. La sottoscrizione presenta limiti per il numero di core della macchina virtuale. In genere, è più facile partizionare più in basso nella gerarchia. Solo le applicazioni di grandi dimensioni devono eseguire la partizione a livello di sottoscrizione.