Condividi tramite


Strategie di architettura per ottimizzare le prestazioni dei dati

Si applica a questa raccomandazione per l'efficienza delle prestazioni di Azure Well-Architected Framework:

PE:08 Ottimizzare le prestazioni dei dati. Ottimizzare gli archivi dati, le partizioni e gli indici per l'uso previsto e effettivo nel carico di lavoro.

Questa guida descrive le raccomandazioni per ottimizzare le prestazioni dei dati. L'ottimizzazione delle prestazioni dei dati consiste nel perfezionare l'efficienza con cui il carico di lavoro elabora e archivia i dati. Ogni operazione del carico di lavoro, transazione o calcolo si basa in genere sul recupero, l'elaborazione e l'archiviazione rapidi e accurati dei dati. Quando le prestazioni dei dati sono ottimizzate, il carico di lavoro viene eseguito senza problemi. Le prestazioni dei dati compromesse creano un effetto domino di scarsa efficienza delle prestazioni. Il mancato ottimizzazione delle prestazioni dei dati comporta ritardi di risposta, latenza aumentata e scalabilità ridotta. Mette a repentaglio l'efficienza dell'intero carico di lavoro.

Definizioni

Termine Definition
Teorema CAP Framework usato per considerare coerenza, disponibilità e tolleranza di partizione per spiegare i compromessi nella coerenza dei dati.
Ricompilazione dell'indice del database Attività di manutenzione che elimina e ricrea un indice.
Riorganizzazione dell'indice di database Attività di manutenzione che ottimizza l'indice del database corrente.
Archivio dati Risorsa che archivia dati, ad esempio un database, un archivio oggetti o una condivisione file.
Coerenza finale Modello di sincronizzazione dei dati che consente l'incoerenza temporanea nelle repliche di dati prima della sincronizzazione finale.
Index Struttura di database che fornisce accesso rapido agli elementi.
Elaborazione analitica online (OLAP) Una tecnologia che organizza database aziendali di grandi dimensioni, supporta l'analisi complessa ed esegue query analitiche complesse senza influire negativamente sui sistemi transazionali.
Elaborazione delle transazioni online (OLTP) Una tecnologia che registra le interazioni aziendali man mano che si verificano nelle operazioni quotidiane di un'organizzazione.
Concorrenza ottimistica Approccio per aggiornare i database che usano snapshot per eseguire aggiornamenti invece dei tradizionali meccanismi di blocco, migliorando le prestazioni e la scalabilità.
Teorema PACELC Framework usato per considerare la tolleranza di partizione, la disponibilità, la coerenza e la latenza per illustrare i compromessi nella coerenza dei dati.
Partitioning Processo di divisione fisica dei dati in archivi dati separati.
Ottimizzazione delle query Processo che ottimizza la velocità di una query di database.
Replica in lettura Copia dinamica di un database primario che consente di eseguire l'offload del traffico di lettura da un database di scrittura.

Per ottimizzare l'utilizzo dei dati, assicurarsi che gli archivi dati, le partizioni e gli indici siano ottimizzati per l'uso previsto e per l'uso effettivo in un carico di lavoro. L'utilizzo ottimizzato dei dati può migliorare le prestazioni delle query, ridurre il consumo delle risorse e migliorare l'efficienza complessiva del sistema. Considerare le strategie seguenti:

  • Dati del profilo. Comprendere i dati e assicurarsi che il modello di dati sia adatto per il carico di lavoro. Prendere in considerazione fattori come la normalizzazione dei dati, le strategie di indicizzazione e le tecniche di partizionamento. Per un recupero efficiente dei dati, assicurarsi di selezionare i tipi di dati appropriati, definire le relazioni tra le entità e determinare una strategia di indicizzazione ottimale.

  • Ottimizzare la configurazione dell'archiviazione dei dati. Configurare l'infrastruttura di archiviazione dati per allinearsi ai requisiti del carico di lavoro. Selezionare una tecnologia di archiviazione appropriata, ad esempio database relazionali, database NoSQL e data warehouse. Ottimizzare le impostazioni di archiviazione, ad esempio le dimensioni del buffer, i meccanismi di memorizzazione nella cache e la compressione.

  • Ottimizzare le prestazioni delle query. Analizzare e ottimizzare le query eseguite nel carico di lavoro. Usare tecniche come l'ottimizzazione delle query, l'indicizzazione e la memorizzazione nella cache. Per identificare i colli di bottiglia, usare i piani di query e gli strumenti di monitoraggio delle prestazioni e quindi apportare i miglioramenti necessari.

  • Monitorare e ottimizzare regolarmente il sistema. Monitorare continuamente le prestazioni del carico di lavoro ed eseguire l'iterazione sulla configurazione dell'archiviazione dei dati e sulle ottimizzazioni delle query. In base alle procedure consigliate per l'ottimizzazione delle prestazioni, analizzare le metriche di sistema, identificare le aree di miglioramento e implementare le modifiche.

Dati del profilo

La profilatura dei dati comporta l'analisi dei dati da un'origine e la raccolta di informazioni su di essa. L'obiettivo è comprendere la qualità, la struttura e le caratteristiche dei dati del carico di lavoro. Questo processo consente l'identificazione di problemi quali valori mancanti, duplicati, formati incoerenti e altre anomalie. Per una profilatura efficace dei dati, prendere in considerazione le strategie seguenti:

  • Comprendere la struttura dei dati. Esaminare la struttura dei dati, incluse tabelle, colonne e relazioni. Determinare i tipi di dati, le lunghezze e i vincoli applicati a ogni colonna. La valutazione della struttura dei dati consente di comprendere in che modo i dati sono organizzati e in che modo sono correlati ad altri elementi di dati.

  • Analizzare il volume di dati. Valutare il volume dei dati per comprendere le dimensioni complessive e i modelli di crescita. Determinare il numero di record o documenti e le dimensioni di singole tabelle o raccolte. Queste informazioni consentono di stimare i requisiti di archiviazione e identificare i problemi di scalabilità.

  • Identificare le relazioni tra i dati. Esplorare le relazioni tra elementi di dati, ad esempio relazioni tra chiavi primarie ed esterne. Informazioni sulla connessione dei dati, in modo da determinare il modo in cui le modifiche in una tabella o in un documento possono influire sui dati correlati.

  • Valutare la qualità dei dati. Valutare la qualità dei dati esaminando fattori quali completezza, accuratezza, coerenza e univocità. Identificare le anomalie dei dati, i valori mancanti o i record duplicati che potrebbero influire sull'integrità dei dati e sulle prestazioni delle query. Questo passaggio consente di identificare le aree per la pulizia e il miglioramento dei dati.

  • Acquisire la distribuzione dei dati. Analizzare la distribuzione dei valori all'interno di ogni colonna per determinare i modelli di dati. Identificare valori frequenti e rari, outlier e sfasamenti dei dati. Per ottimizzare le prestazioni delle query, scegliere strategie di indicizzazione appropriate e tecniche di ottimizzazione delle query in base alla distribuzione.

Monitorare le prestazioni dei dati

Il monitoraggio delle prestazioni dei dati è la pratica di tenere traccia in modo coerente dell'efficienza degli archivi dati, delle partizioni e degli indici in tempo reale. Implica la raccolta e l'analisi delle metriche delle prestazioni specifiche per le operazioni sui dati, usando strumenti personalizzati per soluzioni di monitoraggio specifiche del sistema, specifiche del database o di terze parti. Un monitoraggio efficace delle prestazioni dei dati consente di identificare e mitigare in modo proattivo potenziali colli di bottiglia, assicurandosi che i processi e le attività correlati ai dati siano efficienti. Per monitorare le prestazioni dei dati, considerare le strategie seguenti:

  • Raccogliere metriche specifiche dei dati. Raccogliere le metriche chiave direttamente correlate alle prestazioni dei dati. Queste metriche includono tempi di risposta delle query, velocità effettiva dei dati, I/O del disco correlati all'accesso ai dati e tempi di caricamento di partizioni di dati specifiche.

  • Configurare gli avvisi dati. Configurare gli avvisi in modo specifico per le metriche dei dati. Usare soglie o anomalie predefinite in queste metriche per attivare gli avvisi. Gli avvisi consentono di ricevere notifiche quando le metriche delle prestazioni superano gli intervalli accettabili o mostrano un comportamento anomalo. Ad esempio, se una query di database richiede più tempo del previsto o se la velocità effettiva dei dati scende in modo significativo, viene attivato un avviso. È possibile configurare questi avvisi usando strumenti di monitoraggio specializzati o script personalizzati.

  • Diagnosticare i problemi di prestazioni dei dati. Esaminare regolarmente le metriche dei dati raccolte per individuare potenziali colli di bottiglia delle prestazioni o riduzione delle prestazioni nelle operazioni sui dati. Gli strumenti di visualizzazione o i dashboard possono essere preziosi in questo processo, consentendo di evidenziare tendenze, colli di bottiglia e outlier nelle prestazioni dei dati. Dopo aver identificato, esaminare le cause radice di questi problemi e strategare i passaggi di correzione appropriati.

Dati di partizione

Il partizionamento prevede la suddivisione di set di dati di grandi dimensioni o carichi di lavoro con volumi elevati in subset più piccoli e gestibili. Il partizionamento migliora l'efficienza delle prestazioni dei dati distribuendo il carico di lavoro e migliorando l'elaborazione parallela. Garantisce inoltre un accesso ai dati più efficace in base a esigenze specifiche e modelli di query. È possibile partizionare i dati verticalmente o orizzontalmente ,detti anche partizionamento orizzontale.

Strategia Definition Example Casi d'uso
Partizionamento verticale Dividere una tabella in tabelle più piccole selezionando colonne o campi specifici per ogni partizione. Ogni partizione rappresenta un subset dei dati completi. Se si dispone di una tabella con colonne A, B, C e D, è possibile creare una tabella con colonne A e B e un'altra con colonne C e D. - Una tabella contiene molte colonne, ma le query non accedono a tutte le colonne insieme.
- Alcune colonne sono più grandi di altre e separarle possono migliorare le prestazioni di I/O.
- Le parti dei dati diverse hanno modelli di accesso diversi.
Partizionamento orizzontale Suddividere i dati in base a righe o intervalli di valori (noto anche come partizionamento orizzontale). Ogni partizione contiene un subset di righe con caratteristiche simili. Se si dispone di una tabella con righe da 1 a 1000, è possibile creare una partizione con righe da 1 a 500 e un'altra con righe da 501 a 1000. - Un set di dati è troppo grande per un singolo percorso o server.
- È possibile accedere ai dati in base a intervalli o filtri specifici.
- È necessario distribuire il carico di lavoro tra nodi fisici o server per migliorare le prestazioni.

Per partizionare i dati, seguire questa procedura:

  • Analizzare dati e query. Analizzare i modelli di dati e query per identificare strategie di partizionamento o partizionamento orizzontale appropriate. Comprendere la natura dei dati, dei modelli di accesso e dei requisiti di distribuzione.

  • Determinare una chiave. Scegliere una chiave di partizionamento orizzontale o partizionamento orizzontale per distribuire i dati tra partizioni o partizioni. Selezionare attentamente la chiave in base alle caratteristiche dei dati e ai requisiti di query.

  • Determinare la logica. Determinare una logica di partizionamento orizzontale o partizionamento orizzontale in base alla chiave scelta. È consigliabile dividere i dati in intervalli, applicare algoritmi hash o usare altre tecniche di partizionamento.

  • Configurare l'infrastruttura. Configurare il sistema di database per supportare il partizionamento orizzontale o il partizionamento orizzontale. Valutare la possibilità di creare l'infrastruttura necessaria, definire le partizioni o le partizioni e configurare la distribuzione dei dati.

Per altre informazioni, vedere Indicazioni sul partizionamento dei dati.

Ottimizzare le query di database

L'ottimizzazione delle query di database ottimizza le query usando tecniche quali hint di indice e memorizzazione nella cache. Queste regolazioni aumentano l'efficienza e la velocità di recupero dei dati. Di conseguenza, il database ha un carico di lavoro più leggero, le risorse funzionano in modo più efficace e gli utenti godono di interazioni più fluide. Per ottimizzare le query di database, prendere in considerazione le strategie seguenti:

  • Riscrivere le query. Esaminare e analizzare query complesse per identificare le opportunità di riscriverle. Prendere in considerazione la ristrutturazione della logica di query, l'eliminazione di operazioni ridondanti o la semplificazione della sintassi delle query.

  • Evitare il problema di query N+1. Ridurre al minimo il numero di round trip nel database usando join e recupero batch per recuperare i dati correlati in modo efficiente.

  • Riordinare i join. Valutare il piano di query e valutare la possibilità di ridisporre l'ordine di join per ridurre al minimo il numero di righe in ogni operazione di join. L'ordine in cui le tabelle di join possono influire sulle prestazioni delle query.

  • Usare hint per l'indice. Usare hint per l'indice in modo che un motore di database possa specificare l'uso degli indici durante l'esecuzione di una query. Gli hint di indice guidano l'utilità di ottimizzazione per selezionare gli indici più appropriati.

  • Memorizzare nella cache le query. Archiviare i risultati delle query eseguite di frequente in memoria. La memorizzazione nella cache delle query elimina la necessità di eseguire ripetutamente la stessa query e riduce il sovraccarico di elaborazione delle query.

  • Ottimizzare il blocco. Evitare hint di blocco non necessari o restrittivi nelle query. Strategie di blocco efficienti possono migliorare le prestazioni delle query e la concorrenza. Applicare meccanismi di blocco ottimizzati forniti dal sistema di database. Analizzare e regolare i livelli di isolamento per bilanciare la coerenza dei dati e le prestazioni delle query.

  • Monitorare e ottimizzare. Monitorare le metriche delle prestazioni delle query, ad esempio runtime, utilizzo delle risorse e velocità effettiva delle query. Usare gli strumenti di profilatura del database e le funzionalità di monitoraggio per identificare query con prestazioni scarse. Valutare e ottimizzare i piani di query in base ai dati sulle prestazioni raccolti. Analizzare i piani di query e le statistiche di attesa per identificare i colli di bottiglia. Usare queste informazioni per ottimizzare le prestazioni delle query.

Ottimizzare le prestazioni degli indici

Gli indici migliorano la velocità di recupero dei dati consentendo ai database di trovare rapidamente i dati usando colonne o campi specifici. Quando si ottimizzano questi indici, le operazioni di ordinamento e join diventano più efficienti, causando query più veloci. Gli indici ben ottimizzati tagliano le operazioni di I/O su disco necessarie per le query. La rimozione di indici non necessario o ridondanti libera spazio di archiviazione prezioso. Per ottimizzare le prestazioni dell'indice, considerare le strategie seguenti:

  • Analizzare i modelli di query. Informazioni sui modelli di query eseguiti nel database. Identificare le query eseguite di frequente e che potrebbero compromettere le prestazioni. Analizzare i modelli di query per determinare quali indici sono utili per ottimizzare le prestazioni.

  • Valutare gli indici esistenti. Esaminare gli indici esistenti nel database. Valutare l'utilizzo, gli effetti delle prestazioni e la pertinenza per i modelli di query. Identificare gli indici ridondanti o inutilizzati che è possibile rimuovere per migliorare le prestazioni di scrittura e ridurre il sovraccarico di archiviazione.

  • Identificare le colonne per l'indicizzazione. Identificare le colonne usate di frequente nelle clausole where, join e order by delle query. Queste colonne sono potenziali candidati per l'indicizzazione perché possono abilitare il recupero rapido dei dati.

  • Scegliere un tipo di indice appropriato. Selezionare un tipo di indice appropriato in base al sistema di database. Le opzioni comuni includono indici b-tree per query di uguaglianza e intervallo, indici hash per query di corrispondenza esatte e indici full-text per le operazioni di ricerca di testo. Scegliere un tipo di indice più adatto ai requisiti di query.

  • Prendere in considerazione l'ordine delle colonne dell'indice. Quando si creano indici compositi o indici con più colonne, prendere in considerazione l'ordine delle colonne. Inserire le colonne usate più di frequente nelle query all'inizio dell'indice. L'ordine delle colonne garantisce che il carico di lavoro usi in modo efficace gli indici per un'ampia gamma di query.

  • Bilanciare le dimensioni dell'indice. Evitare di creare indici in colonne con cardinalità bassa o colonne con un numero basso di valori distinti. Tali indici possono risultare inefficienti e aumentare le dimensioni del database. Al contrario, le colonne di indice con una selettività elevata.

  • Gestire l'utilizzo dell'indice. Monitorare continuamente l'utilizzo e le prestazioni degli indici. Cercare opportunità per creare nuovi indici o modificare gli indici esistenti in base alle modifiche apportate ai modelli di query o ai requisiti di prestazioni. Rimuovere o aggiornare gli indici che non sono più utili. Gli indici hanno un sovraccarico di manutenzione. Man mano che i dati cambiano, gli indici possono frammentarsi e influire sulle prestazioni. Eseguire regolarmente attività di manutenzione degli indici, ad esempio la ricompilazione o la riorganizzazione degli indici, per garantire prestazioni ottimali.

  • Testare e convalidare. Prima di rivedere gli indici in un ambiente di produzione, eseguire test e convalida approfonditi. Misurare l'effetto delle prestazioni delle revisioni degli indici usando carichi di lavoro rappresentativi. Verificare i miglioramenti rispetto ai benchmark predefiniti.

Compromesso: gli indici ad albero B potrebbero avere un sovraccarico elevato di archiviazione e le query di corrispondenza esatta potrebbero essere lente. Gli indici hash non sono adatti per query di intervallo o operatori di confronto. Gli indici full-text potrebbero avere requisiti di archiviazione elevati e le query di dati non testuali potrebbero essere lente.

Prendere in considerazione la compressione dei dati

La compressione dei dati è il processo di riduzione delle dimensioni dei dati per ottimizzare lo spazio di archiviazione e migliorare l'efficienza delle prestazioni del carico di lavoro. I dati compressi richiedono meno spazio di archiviazione e una minore larghezza di banda per la trasmissione, con un trasferimento rapido dei dati. È possibile comprimere i dati per ridurre il footprint di archiviazione e migliorare i tempi di accesso ai dati. Quando si comprimono i dati, si riducono le operazioni di I/O e i requisiti di larghezza di banda di rete.

La compressione senza perdita di dati e la compressione con perdita sono algoritmi di compressione dei dati. Gli algoritmi di compressione senza perdita riducono le dimensioni dei dati senza perdere informazioni. Gli algoritmi di compressione con perdita ottengono rapporti di compressione elevati rimuovendo informazioni meno importanti o ridondanti.

Compromesso: per comprimere e decomprimere i dati, sono necessarie risorse di calcolo, ad esempio CPU e memoria. Maggiore è il numero di dati compressi, maggiore è il numero di risorse necessarie.

Archiviare ed eliminare i dati

L'archiviazione e l'eliminazione sono strategie che semplificano l'archiviazione dei dati. L'archiviazione riloca i dati meno recenti a cui si accede meno frequentemente in un archivio più conveniente. L'eliminazione definitiva dei dati rimuove definitivamente i dati ridondanti. Contribuiscono all'efficienza delle prestazioni riducendo il volume di dati, aumentando la velocità di accesso ai dati e riducendo i tempi di backup e ripristino:

  • Riduzione del volume di dati: un minor numero di dati comporta tempi di elaborazione più rapidi, garantendo risposte rapide alle richieste degli utenti.

  • Aumento della velocità di accesso ai dati: un set di dati tagliato consente di eseguire query più rapide e recuperare i dati, ottimizzando la velocità di risposta del sistema.

  • Riduzione dei tempi di backup e ripristino: i set di dati più piccoli accelerano i processi di backup e ripristino, riducendo al minimo i tempi di inattività e garantendo prestazioni coerenti.

L'archiviazione e l'eliminazione sono fondamentali per mantenere il picco di efficienza delle prestazioni nei sistemi basati sui dati.

Ottimizzare il carico di archiviazione

L'ottimizzazione del carico di archiviazione comporta lo scorrimento delle richieste al sistema di archiviazione. Consente di eliminare le richieste non necessarie. Migliora anche il recupero dei dati e impedisce di sovraccaricare l'archiviazione. L'ottimizzazione del carico di archiviazione garantisce che il sistema di archiviazione rimanga reattivo alle richieste legittime e mantenga le prestazioni massime. Implementare strategie per ridurre il carico di elaborazione sull'archivio dati. Per ottimizzare il carico dell'archivio dati, prendere in considerazione le strategie seguenti:

Usare la memorizzazione nella cache

La memorizzazione nella cache archivia i dati a cui si accede di frequente in un'area di archiviazione ad accesso rapido, rendendo più rapido il recupero dei dati rispetto al pull dall'origine principale. Questa tecnica migliora le prestazioni dei dati riducendo i tempi di accesso ed evitando i recupero ripetitivi dei dati. La memorizzazione nella cache migliora le velocità di lettura e i tempi di risposta degli utenti, soprattutto per i dati a cui si accede di frequente Questo metodo è più efficace sui dati statici o sui dati che raramente cambiano.

Per garantire un'efficienza ottimale della memorizzazione nella cache, prendere in considerazione fattori come i criteri di scadenza, le strategie di rimozione e la gestione delle dimensioni della cache. Modificare le impostazioni, ad esempio la durata (TTL), per ottenere prestazioni ottimali. Per usare una cache per ottimizzare il carico di archiviazione, prendere in considerazione le strategie seguenti:

  • Memorizzazione nella cache in memoria: eseguire la memorizzazione nella cache in memoria per archiviare i dati a cui si accede di frequente in memoria per il recupero rapido. È possibile usare questa tecnica per i dati dell'applicazione costosi da calcolare o recuperare da un database. La memorizzazione nella cache in memoria è utile per i dati letti di frequente, ma non cambiano di frequente.

  • Memorizzazione nella cache delle query di database: usare questa tecnica per memorizzare nella cache i risultati delle query di database per evitare di eseguire la stessa query più volte. La memorizzazione nella cache delle query di database è utile per query di database complesse e dispendiose in termini di tempo. Quando si memorizzano nella cache i risultati di una query, le richieste successive per la stessa query vengono restituite rapidamente.

  • Memorizzazione nella cache della rete per la distribuzione di contenuti: usare questa tecnica per memorizzare nella cache il contenuto Web nei server di rete distribuiti per ridurre la latenza e migliorare la distribuzione di contenuti. La memorizzazione nella cache della rete per la distribuzione di contenuti è efficace per contenuti statici, ad esempio immagini, file CSS e file JavaScript. Le reti per la distribuzione di contenuti archiviano copie di contenuto in più posizioni in tutto il mondo, in modo che gli utenti possano accedere al contenuto da un server vicino a essi geograficamente.

Usare repliche in lettura

Molti database supportano più repliche in lettura. Distribuire query di lettura tra repliche per ridurre al minimo la richiesta nel database di scrittura. Ogni replica di lettura può gestire un subset di traffico, che può migliorare le prestazioni.

Quando si dispone di un carico di lavoro con più repliche di dati che si prevede di rimanere sincronizzati, è utile modellare questo sistema distribuito usando il teorema PACELC. Il teorema PACELC consente di comprendere la latenza rispetto alle scelte di compromesso della coerenza nello stato non partizionato del sistema. Usare queste informazioni per scegliere un motore di database e una strategia di sincronizzazione dei dati che meglio si rivolge al sistema in uno stato partizionato e non partizionato. Per altre informazioni, vedere Modello CQRS (Command and Query Responsibility Segregation).

Ottimizzare la coerenza dei dati

In un carico di lavoro distribuito, in cui i dati si trovano in più nodi o posizioni, il livello di coerenza selezionato determina la velocità di modifica in una posizione in un'altra posizione. La scelta di una coerenza più rigorosa utilizza più risorse di calcolo e può influire negativamente sull'efficienza delle prestazioni. D'altra parte, un livello di coerenza meno rigoroso, come la coerenza finale introduce incoerenze temporanee tra i nodi, ma può migliorare l'efficienza delle prestazioni.

La coerenza finale raggiunge un equilibrio tra accuratezza dei dati e prestazioni del carico di lavoro. Le modifiche vengono distribuite gradualmente invece di aumentare immediatamente la velocità di risposta del carico di lavoro e la velocità di elaborazione dei dati. Anche se introduce incoerenze di breve durata, il carico di lavoro presenta infine dati coerenti in tutti i nodi. La scelta della coerenza finale può elevare le prestazioni di un carico di lavoro e migliorare ulteriormente la disponibilità e la scalabilità.

Ottimizzare gli aggiornamenti dei dati

È possibile usare la concorrenza ottimistica per gestire gli aggiornamenti simultanei agli stessi dati. Anziché bloccare i dati e impedire altri aggiornamenti, la concorrenza ottimistica consente a più utenti o processi di funzionare contemporaneamente e presuppone che i conflitti siano rari.

Con la concorrenza ottimistica, ogni operazione di aggiornamento include una versione o un timestamp che rappresenta lo stato dei dati al momento dell'aggiornamento. Quando viene rilevato un aggiornamento in conflitto, il sistema risolve il conflitto rifiutando l'aggiornamento o unendo le modifiche.

La concorrenza ottimistica riduce al minimo la contesa e consente agli aggiornamenti simultanei di procedere senza blocchi non necessari. Riduce il tempo di attesa per le risorse e offre una velocità effettiva elevata.

Ottimizzare lo spostamento e l'elaborazione dei dati

L'ottimizzazione dello spostamento e dell'elaborazione dei dati comporta un miglioramento dell'efficienza e delle prestazioni delle operazioni correlate all'estrazione, alla trasformazione, al caricamento e all'elaborazione dei dati. Considerare gli aspetti chiave seguenti dell'ottimizzazione dello spostamento e dell'elaborazione dei dati:

  • Ottimizzazione ETL (Extract, Transform e Load): ottimizzare i processi ETL per ridurre al minimo i tempi di elaborazione. È possibile semplificare il processo di estrazione, implementare algoritmi di trasformazione efficienti e ottimizzare il processo di caricamento. Quando si rende efficiente ogni passaggio, è possibile ottimizzare il flusso di lavoro complessivo.

  • Elaborazione parallela: usare tecniche di elaborazione parallele per migliorare le prestazioni. Quando si distribuiscono le attività di elaborazione dei dati tra più thread o nodi, è possibile dividere ed elaborare il carico di lavoro contemporaneamente, che comporta un'elaborazione rapida.

  • Elaborazione batch: raggruppare attività simili per ridurre il sovraccarico causato da operazioni ripetute. Elaborare più attività in un batch per ridurre il tempo di elaborazione complessivo.

Ottimizzare la progettazione dell'archiviazione

L'ottimizzazione della progettazione dell'archiviazione comporta la creazione di un'architettura di archiviazione dei dati precisa e la selezione di tecnologie di archiviazione appropriate. Una progettazione di archiviazione semplificata migliora l'accesso ai dati, il recupero e la manipolazione. Grazie alla progettazione strategica dell'archiviazione, un carico di lavoro consente di ottenere tempi di risposta migliorati e funzionalità complessive.

Progettare la prossimità dei dati

La prossimità dei dati si riferisce al posizionamento strategico dei dati più vicino agli utenti o ai servizi che vi accedono più frequentemente. Riducendo la distanza fisica o logica tra i dati e i relativi utenti, la prossimità dei dati garantisce un accesso ai dati più rapido e una maggiore velocità di risposta. Per ottimizzare la progettazione per una prossimità ravvicinata, prendere in considerazione queste strategie:

  • Valutare i modelli di accesso ai dati: valutare i modelli di accesso del carico di lavoro e i dati a cui si accede di frequente. Questa analisi consente di determinare dove inserire i dati per ottenere il massimo vantaggio.

  • Scegliere le soluzioni che supportano la rilocazione dei dati: prendere in considerazione soluzioni che offrono rilocazione dinamica dei dati in base ai modelli di accesso modificati, garantendo un posizionamento ottimale dei dati.

  • Scegliere soluzioni che supportano la sincronizzazione dei dati: se si fa riferimento a una base utenti distribuita, scegliere soluzioni che facilitano la sincronizzazione dei dati in varie aree, assicurandosi che le repliche di dati siano disponibili in prossimità degli utenti.

Compromesso: se i dati sottostanti cambiano frequentemente, implementare un meccanismo di invalidazione della cache per garantire che i dati memorizzati nella cache rimangano aggiornati.

Usare la persistenza poliglotta

La persistenza poliglotta è la pratica di usare più tecnologie di archiviazione dei dati per archiviare e gestire diversi tipi di dati all'interno di un'applicazione o di un sistema. Diversi tipi di database o soluzioni di archiviazione servono requisiti di dati diversi.

La persistenza poliglotta sfrutta i vantaggi di ogni tecnologia di archiviazione dei dati per garantire prestazioni e scalabilità ottimali per ogni tipo di dati. Ad esempio, è possibile usare un database relazionale per archiviare dati transazionali strutturati. È anche possibile usare un database NoSQL per archiviare dati non strutturati o semistrutturati.

Progettare uno schema per ogni tecnologia di archiviazione dei dati in base ai requisiti dei dati. Per i database relazionali, è possibile creare tabelle normalizzate con relazioni appropriate. Per i database NoSQL, è possibile definire strutture di documenti o coppie chiave-valore. Sviluppare i componenti necessari per interagire con ogni tecnologia di archiviazione dei dati, ad esempio API, livelli di accesso ai dati o pipeline di integrazione dei dati. Assicurarsi che l'applicazione possa leggere e scrivere dati negli archivi dati appropriati.

Compromesso: una struttura di dati con normalizzazione bassa può migliorare le prestazioni, ma introdurre complessità.

Separare i sistemi OLTP e OLAP

Per separare i sistemi OLTP e OLAP , progettare e distribuire sistemi distinti per l'elaborazione transazionale e le attività di elaborazione analitica. Questa separazione consente di ottimizzare ogni sistema per il carico di lavoro e le caratteristiche specifiche.

I sistemi OLTP vengono usati per l'elaborazione transazionale in tempo reale. Gestiscono in modo efficiente e affidabile le singole transazioni. I sistemi OLTP vengono in genere usati per eseguire attività operative quotidiane, ad esempio l'elaborazione degli ordini online, la gestione dell'inventario e la gestione dei dati dei clienti. I sistemi OLTP assegnano priorità alla velocità di risposta, alla coerenza e alla concorrenza.

I sistemi OLAP vengono usati per l'elaborazione analitica complessa e la creazione di report. Gestiscono grandi volumi di dati ed eseguono calcoli e aggregazioni intensivi. I sistemi OLAP vengono usati per attività quali business intelligence, data mining e supporto decisionale. I sistemi OLAP assegnano priorità alle prestazioni delle query, all'aggregazione dei dati e all'analisi multidimensionale.

Quando si separano i sistemi OLTP e OLAP, è possibile allocare le risorse appropriate e ottimizzare ogni sistema per il carico di lavoro specifico. La separazione consente di applicare tecniche di modellazione dei dati diverse a ogni sistema. I sistemi OLTP usano in genere schemi normalizzati per un'elaborazione transazionale efficiente. I sistemi OLAP possono usare schemi denormalizzati o tecniche di data warehousing per ottimizzare le prestazioni delle query.

Facilitazione di Azure

Dati di profilatura: Azure offre strumenti e servizi che è possibile usare per profilare i dati, ad esempio Azure Data Catalog, Azure Purview e Azure Synapse Analytics. Questi strumenti consentono di estrarre, trasformare e caricare dati da varie origini, eseguire controlli di qualità dei dati e ottenere informazioni dettagliate sui dati.

Monitoraggio delle prestazioni dei dati: per monitorare le prestazioni dei dati, è possibile usare Monitoraggio di Azure per raccogliere e analizzare le metriche dell'infrastruttura, i log e i dati dell'applicazione. È possibile integrare Monitoraggio con altri servizi come Application Insights. Application Insights offre il monitoraggio delle prestazioni delle applicazioni e supporta molte piattaforme.

Application Insights raccoglie i dati sull'utilizzo e sulle prestazioni. È possibile usare Log Analytics per correlare i dati con i dati di configurazione e prestazioni tra le risorse di Azure.

È possibile usare la funzionalità informazioni dettagliate di Azure SQL e Azure Cosmos DB per monitorare il database. Questa funzionalità consente di diagnosticare e ottimizzare i problemi di prestazioni del database.

Partizionamento dei dati: Azure offre diverse strategie di partizionamento per archivi dati diversi. Ogni archivio dati può avere considerazioni e opzioni di configurazione diverse per il partizionamento dei dati. Per altre informazioni, vedere Strategie di partizionamento dei dati.

Ottimizzazione delle query di database e delle prestazioni degli indici: usare la funzionalità di informazioni dettagliate sulle prestazioni delle query del database SQL di Azure per ottimizzare query, tabelle e database. È possibile usare questa funzionalità per identificare e risolvere i problemi di prestazioni delle query.

Per i database relazionali, è necessario seguire le linee guida per la progettazione degli indici, le linee guida per l'indice di SQL Server e le linee guida per l'indice di Azure Cosmos DB. Usare il database SQL per eseguire l'ottimizzazione automatica per le query per migliorare le prestazioni.

Nei database SQL è consigliabile riorganizzare o ricompilare regolarmente gli indici. Identificare le query lente e ottimizzarle per migliorare le prestazioni. Molti motori di database dispongono di funzionalità di ottimizzazione delle query. Per altre informazioni, vedere Procedure consigliate per le prestazioni delle query.

Azure Cosmos DB ha un criterio di indicizzazione predefinito che indicizza ogni proprietà di ogni elemento e applica gli indici di intervallo per qualsiasi stringa o numero. Questo criterio offre prestazioni di query efficienti e non è necessario gestire gli indici in anticipo.

Ottimizzazione del carico di archiviazione: molti servizi di database di Azure supportano le repliche in lettura. La disponibilità e la configurazione delle repliche in lettura variano a seconda del servizio di database di Azure. Fare riferimento alla documentazione ufficiale per ogni servizio per comprendere i dettagli e le opzioni.

Ottimizzazione della progettazione dell'archiviazione: Azure offre molti archivi dati diversi in base alle esigenze del carico di lavoro. Informazioni sui tipi di archivio dati e selezionare un archivio dati di Azure per l'applicazione.

Elenco di controllo per l'efficienza delle prestazioni

Fare riferimento al set completo di raccomandazioni.