Risparmio sui costi tramite HTAP con Azure SQL

Azure Databricks
Hub eventi di Azure
Funzioni di Azure
database SQL di Azure
Analisi di flusso di Azure

Questo articolo descrive una soluzione per un'architettura HTAP (Hybrid Transactional/Analytical Processing). Per elaborare le transazioni, la maggior parte dei sistemi usa carichi di lavoro operativi a bassa latenza e con volumi elevati. Per l'analisi, sono più consueti i carichi di lavoro con latenza superiore e volume inferiore. Le architetture HTAP offrono una soluzione per entrambi i tipi di carico di lavoro. Usando i database in memoria, HTAP consolida le tecnologie per ottimizzare le query su grandi volumi di dati.

Architettura

Diagramma dell'architettura che illustra il flusso dei dati attraverso una soluzione HTAP con database SQL di Azure al centro.

Scaricare un file di Visio di questa architettura.

Flusso di dati

  1. Hub eventi inserisce i dati di telemetria dalle strutture locali.
  2. Archiviazione BLOB acquisisce i dati di Hub eventi e li archivia per analisi future.
  3. Analisi di flusso elabora i dati. Nel percorso critico della soluzione, Azure Cosmos DB esegue query sui dati dei due mesi precedenti. Azure Cosmos DB garantisce tempi di risposta nell'ordine di pochi millisecondi.
  4. Se si verificano errori durante l'elaborazione o l'archiviazione dei dati, il sistema li registra in Archiviazione tabelle di Azure.
  5. Funzioni di Azure usa la libreria client del database elastico di Database SQL. Questo processo partiziona i dati per ottimizzare le operazioni di inserimento. La soluzione forma partizioni distribuendo orizzontalmente i dati su diversi database SQL di Azure. Ogni database usa un indice cluster partizionato a colonne per comprimere le tabelle. I tempi di risposta su questo percorso ad accesso sporadico sono in genere inferiori a un secondo.
  6. Un cluster di Azure Databricks rielabora i dati di Archiviazione BLOB. In particolare, Azure Databricks deserializza i file Avro e invia i dati a Hub eventi per l'analisi facoltativa.

Componenti

  • Hub eventi è una piattaforma di streaming completamente gestita per i Big Data.

  • Analisi di flusso fornisce l'elaborazione dei flussi serverless in tempo reale eseguendo query nel cloud e nei dispositivi perimetrali.

  • Azure Cosmos DB è un database multimodello distribuito a livello globale. Azure Cosmos DB garantisce alle soluzioni la scalabilità elastica della velocità effettiva e dello spazio di archiviazione in un numero qualsiasi di aree geografiche.

  • Archiviazione tabelle fa parte di Archiviazione di Azure. Questo servizio archivia i dati NoSQL strutturati nel cloud.

  • Database SQL è un servizio di database relazionale che fa parte della famiglia Azure SQL. Come servizio completamente gestito, il database SQL gestisce le funzioni di gestione del database. Database SQL offre anche funzionalità automatizzate basate sull'intelligenza artificiale che ottimizzano le prestazioni e la durabilità. Le opzioni di calcolo serverless e di archiviazione Hyperscale ridimensionano automaticamente le risorse su richiesta.

  • Gli strumenti di database elastico consentono di creare e gestire database con scalabilità orizzontale. Questa funzionalità del database SQL include una libreria client che è possibile usare per sviluppare applicazioni partizionate.

  • Archiviazione BLOB è un servizio che fa parte di Archiviazione. Archiviazione BLOB offre l'archiviazione ottimizzata di oggetti cloud per grandi quantità di dati non strutturati.

  • Azure Databricks è una piattaforma di analisi dei dati. I cluster Spark completamente gestiti elaborano flussi ingenti di dati provenienti da più origini. Azure Databricks pulisce e trasforma set di dati non strutturati. Combina i dati elaborati con i dati strutturati provenienti da database operativi o data warehouse. Azure Databricks, inoltre, addestra e distribuisce modelli di Machine Learning e Deep Learning scalabili.

  • Power BI è una raccolta di app e servizi di analisi. È possibile usare Power BI per connettersi e visualizzare origini dati non correlate.

Dettagli dello scenario

Database SQL di Azure costituisce il nucleo di questa soluzione HTAP. L'approccio divide i dati in database distribuiti orizzontalmente o partizioni. Ecco altri componenti principali:

  • Hub eventi di Azure per l'inserimento dati.
  • Analisi di flusso di Azure per l'elaborazione dei dati.
  • Funzioni di Azure per il partizionamento.
  • Archiviazione BLOB di Azure per l'archiviazione di eventi.

Insieme, questi servizi forniscono una soluzione HTAP che:

  • Riduce i costi fornendo un accesso rapido alle informazioni dettagliate sui dati archiviati. Con questa soluzione, le latenze sul percorso ad accesso sporadico si riducono da ore a meno di un secondo.
  • Semplifica l'archiviazione aggiungendo automaticamente i dati alla risorsa di archiviazione a lungo termine.
  • Aumenta la scalabilità partizionando i dati e usando un database elastico.

Potenziali casi d'uso

Questa soluzione si applica alle organizzazioni che necessitano di accesso a bassa latenza a grandi volumi di dati storici. Alcuni esempi:

  • Rivenditori online che accedono alla cronologia e alle informazioni demografiche dei clienti per offrire esperienze personalizzate.
  • Fornitori di energia che combinano i dati dei dispositivi con le analisi per gestire le reti elettriche intelligenti.
  • Aziende impegnate nella prevenzione delle frodi attraverso l'identificazione di modelli nei dati storici e in tempo reale. Questo scenario si applica ai settori dei servizi finanziari e finanziari.
  • Produttori che si basano sull'elaborazione degli eventi in tempo reale per identificare i problemi. Questo scenario si applica al settore manifatturiero.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Framework ben progettato di Microsoft Azure.

Questa soluzione presuppone quanto segue:

  • Dopo aver archiviato i dati, non è necessario aggiornarli o eliminarli.
  • Lo schema dei dati cambia solo in minima parte nel tempo.

Quando si implementa questa soluzione, tenere presente quanto segue:

Efficienza prestazionale

L'efficienza delle prestazioni è la capacità di dimensionare il carico di lavoro per soddisfare in modo efficiente le richieste poste dagli utenti. Per altre informazioni, vedere Panoramica dell'efficienza delle prestazioni.

  • Per ottimizzare le prestazioni:

    • Combinare il partizionamento orizzontale con la compressione delle tabelle.
    • Partizionare le tabelle per data. Ogni partizione contiene dati di un periodo diverso.
    • Allineare gli indici al partizionamento per data.
  • Per ridimensionare fino a più di 50.000 messaggi al secondo, usare la libreria client del database elastico dall'interno di Funzioni per:

    • Raggruppare i messaggi in base alla partizione.
    • Suddividere le istruzioni di inserimento in batch di piccole dimensioni.

    Questo approccio è adatto ai sistemi che usano 10 database S3 Standard di tipo Database SQL. Per ospitare un indice a colonne, è necessario almeno il livello Standard.

  • Per ottenere prestazioni ottimali durante le operazioni di inserimento, usare parametri con valori di tabella con stored procedure.

  • Quando si usa l'istruzione CREATE COLUMNSTORE INDEX, usare l'opzione COLUMNSTORE_ARCHIVE. Questa opzione offre il massimo livello di compressione possibile. Un livello di compressione elevato aumenta il tempo necessario per archiviare e recuperare i dati. Tuttavia, le prestazioni di I/O risultanti dovrebbero comunque essere soddisfacenti.

Scalabilità

  • Usare le partizioni in modo da espandere il sistema per soddisfare carichi di lavoro impegnativi. Quando si usano database partizionati, è possibile aggiungere o rimuovere partizioni per aumentare o aumentare le dimensioni. Lo strumento di divisione-unione consente la divisione e l'unione di partizioni.
  • Sfruttare le funzionalità di ridimensionamento in Funzioni. Creare funzioni scalabili in base all'utilizzo della CPU e della memoria. Configurare le funzioni per avviare nuove istanze per gestire carichi di lavoro imprevisti.
  • Aumentare le dimensioni del cluster di Azure Databricks per aumentare la rielaborazione dei file Avro. La soluzione usa Azure Databricks per rielaborare i file Avro acquisiti da Archiviazione BLOB. I cluster di Spark in Azure Databricks possono elaborare tutto o parte del percorso del file Avro. Aumentando le dimensioni del cluster di Azure Databricks, è possibile rielaborare tutti i dati entro un intervallo di tempo previsto. Per gestire un volume maggiore di Azure Databricks, aggiungere istanze di Hub eventi allo spazio dei nomi in base alle esigenze.

Resilienza

  • Tutti i componenti in questo scenario sono gestiti. A livello di regione, offrono resilienza predefinita.
  • Per indicazioni generali sulla progettazione di soluzioni resilienti, vedere Panoramica dei pilastri dell'affidabilità.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

Per esplorare il costo di esecuzione di questo scenario, usare il calcolatore prezzi di Azure, che preconfigura tutti i servizi di Azure. Modificare i parametri in modo che corrispondano al traffico che si prevede di ricevere.

La tabella seguente elenca i profili di costo di esempio per quantità variabili di messaggi da 1 kilobyte:

Dimensione Volume di messaggi Profilo
Piccola Meno di 500 messaggi al secondo Profilo Small
Medio 1.500 messaggi al secondo Profilo Medium
Grande Meno di 5.000 messaggi al secondo Profilo Large

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autore principale:

Passaggi successivi