PERF03-BP01 Uso di un archivio dati dedicato che supporta al meglio i requisiti di accesso e archiviazione dei dati - Pilastro dell'efficienza delle prestazioni

PERF03-BP01 Uso di un archivio dati dedicato che supporta al meglio i requisiti di accesso e archiviazione dei dati

Comprendi le caratteristiche dei dati (come la condivisione, le dimensioni, la dimensione della cache, gli schemi di accesso, la latenza, il throughput e la persistenza dei dati) per selezionare i data store (archiviazione o database) dedicati per il tuo carico di lavoro.

Anti-pattern comuni:

  • Continui a utilizzare un datastore per via dell'esperienza e delle competenze interne relative a quel particolare tipo di soluzione di database.

  • Ritieni che tutti i carichi di lavoro abbiano requisiti di accesso e archiviazione di dati simili.

  • Non hai implementato un catalogo di dati per eseguire l'inventario dei tuoi asset.

Vantaggi dell'adozione di questa best practice: la comprensione delle caratteristiche e dei requisiti dei dati ti consente di determinare la tecnologia di archiviazione più efficiente e performante appropriata per le tue esigenze del carico di lavoro.

Livello di rischio associato se questa best practice non fosse adottata: elevato

Guida all'implementazione

Quando selezioni e implementi l'archiviazione di dati, assicurati che le caratteristiche di query, dimensionamento e archiviazione supportino i requisiti dei dati del carico di lavoro. AWS fornisce numerose tecnologie di database e archiviazione di dati, tra cui archiviazione a blocchi, archiviazione di oggetti, archiviazione di streaming, file system, database di libro mastro, relazionali, chiave-valore, di documenti, in memoria, a grafo, di serie temporali. Ogni soluzione di gestione dei dati offre soluzioni e configurazioni adatte a gestire i tuoi casi d'uso e modelli di dati. Comprendendo le caratteristiche e i requisiti dei dati, puoi abbandonare la tecnologia di archiviazione monolitica e gli approcci restrittivi e validi per tutti, per concentrarti sulla gestione dei dati in modo appropriato.

Passaggi dell'implementazione

  • Esegui un inventario dei vari tipi di dati esistenti nel tuo carico di lavoro.

  • Comprendi e documenta le caratteristiche e i requisiti dei dati, tra cui:

    • Tipo di dati (non strutturati, semi-strutturati, relazionali)

    • Volume e crescita dei dati

    • Durabilità dei dati: persistenti, effimeri, transitori

    • Requisiti ACID (atomicità, coerenza, isolamento, durabilità)

    • Schemi di accesso ai dati (con uso intensivo di lettura o scrittura)

    • Latenza

    • Throughput

    • IOPS (operazioni di input/output al secondo)

    • Periodo di conservazione dei dati

  • Scopri i diversi archivi di dati (servizi di archiviazione e database) disponibili per il carico di lavoro in AWS che possono soddisfare le caratteristiche dei tuoi dati (come illustrato in PERF01-BP01 Scopri e comprendi i servizi e le funzionalità cloud disponibili). Alcuni esempi di tecnologie di archiviazione AWS e delle loro caratteristiche chiave sono:

    Tipo AWS Services Caratteristiche chiave
    Archiviazione di oggetti Amazon S3 Scalabilità illimitata, alta disponibilità e molteplici opzioni di accessibilità. L'accesso a oggetti e il relativo trasferimento da e verso Amazon S3 può utilizzare un servizio, come Transfer Acceleration o Punti di accesso, per supportare la posizione, le esigenze di sicurezza e i modelli di accesso.
    Archiviazione Amazon Glacier Progettato per l'archiviazione dei dati.
    Archiviazione in streaming

    Amazon Kinesis

    Streaming gestito da Amazon per Apache Kafka (Amazon MSK)

    Acquisizione e archiviazione efficienti dei dati in streaming.
    File system condiviso

    Amazon Elastic File System (Amazon EFS)

    File system montabile a cui è possibile accedere da più tipi di soluzioni di calcolo.

    File system condiviso Amazon FSx Sviluppato con le più recenti soluzioni di calcolo AWS per supportare i 4 file system più comunemente utilizzati: NetApp ONTAP, OpenZFS, Windows File Server e Lustre. Latenza, throughput e IOPS di Amazon FSx variano a seconda del file system; è necessario considerare attentamente questi elementi quando si deve selezionare il file system in modo conforme ai requisiti dei carichi di lavoro.
    Storage a blocchi Amazon Elastic Block Store (Amazon EBS) Servizio di storage a blocchi scalabile e a elevate prestazioni progettato per Amazon Elastic Compute Cloud (Amazon EC2). Amazon EBS include storage su SSD per carichi di lavoro transazionali e intensivi dal punto di vista dell'IOPS, oltre a storage su HDD per carichi di lavoro con throughput intensivo.
    Database relazionale Amazon AuroraAmazon RDSAmazon Redshift. Progettati per supportare le transazioni ACID (atomicità, coerenza, isolamento, durabilità) e per mantenere l'integrità referenziale e una solida coerenza dei dati. Molte applicazioni tradizionali, Enterprise Resource Planning (ERP), Customer Relationship Management (CRM) ed e-commerce utilizzano database relazionali per archiviare i propri dati.
    Database chiave-valore Amazon DynamoDB Ottimizzato per schemi di accesso di uso comune, in genere per archiviare e recuperare grandi volumi di dati. Le app Web dal traffico elevato, i sistemi di e-commerce e le applicazioni di videogiochi sono casi d'uso tipici dei database chiave-valore.
    Database di documenti Amazon DocumentDB Progettato per archiviare dati semistrutturati come documenti simili a JSON. Questi database aiutano gli sviluppatori a creare e aggiornare rapidamente applicazioni quali gestione di contenuti, cataloghi e profili utente. 
    Database in memoria Amazon ElastiCache, Amazon MemoryDB per Redis Vengono utilizzati per applicazioni che richiedono accesso in tempo reale ai dati, bassissima latenza ed elevatissimo throughput. È possibile utilizzare database in memoria per la memorizzazione nella cache delle applicazioni, la gestione delle sessioni, la classifica dei giochi, l'archivio delle caratteristiche ML a bassa latenza, il sistema di messaggistica dei microservizi e un meccanismo di streaming a elevato throughput.
    Database a grafo Amazon Neptune Utilizzato con le applicazioni che devono navigare ed eseguire query su milioni di relazioni tra set di dati a grafo altamente connessi, con una latenza misurata in millisecondi su larga scala. Molte aziende utilizzano database a grafo per il rilevamento di attività fraudolente, i social network e i motori di raccomandazione.
    Database di serie temporali Amazon Timestream Utilizzato per raccogliere, sintetizzare e derivare in modo efficiente approfondimenti dai dati che cambiano nel tempo. I database di serie temporali sono spesso utilizzati dalle applicazioni IoT, DevOps e dalla telemetria industriale.
    Colonna ampia Amazon Keyspaces (per Apache Cassandra) Utilizza tabelle, righe e colonne, ma a differenza di un database relazionale, i nomi e il formato delle colonne possono variare da riga a riga all'interno della stessa tabella. In genere, gli store colonnari sono utilizzati nelle applicazioni industriali su larga scala per la manutenzione delle apparecchiature, la gestione delle flotte e l'ottimizzazione dei percorsi. 
    Di libri mastri Database Amazon Quantum Ledger (Amazon QLDB) Fornisce un'autorità centralizzata e affidabile per mantenere un registro delle transazioni scalabile, immutabile e verificabile tramite crittografia per ogni applicazione. I database di libri mastri vengono utilizzati per sistemi di record, catena di fornitura, registrazioni e persino transazioni bancarie.  
  • Per una piattaforma dati, sfrutta l'architettura dei dati moderna di AWS per integrare data lake, data warehouse e archivi dati appositamente progettati.

  • Le domande chiave da porsi quando si sceglie un data store per il carico di lavoro sono le seguenti:

    Domanda Aspetti da considerare
    Come sono strutturati i dati?
    Quale livello di integrità referenziale è richiesto?
    • Per i vincoli di chiave esterna, i database relazionali come Amazon RDS e Aurora possono fornire livello di integrità richiesto.

    • In genere, in un modello di dati NoSQL, i dati vengono denormalizzati in un singolo documento o in una raccolta di documenti da recuperare in un'unica richiesta, anziché essere uniti tra diversi documenti o tabelle. 

    È richiesta la conformità ACID (atomicità, coerenza, isolamento, durabilità)?
    • Se sono necessarie proprietà ACID associate ai database relazionali, valuta un database relazionale come Amazon RDS e Aurora.

    • Se è necessaria un'elevata coerenza per i database NoSQL, puoi utilizzare le elevate consistenza di lettura con DynamoDB.

    Come cambierà nel tempo l'archiviazione? In che modo questo avrà effetto sulla scalabilità?
    • I database serverless, come DynamoDB e i Database Amazon Quantum Ledger (Amazon QLDB) offrono la scalabilità dinamica.

    • Per i database relazionali sono previsti limiti massimi per l'archiviazione allocata, al raggiungimento dei quali si rende spesso necessario partizionare orizzontalmente tali database tramite meccanismi quali la partizione.

    Qual è la proporzione di query in lettura rispetto alle quelle in scrittura? Il caching potrebbe probabilmente migliorare le prestazioni?
    • Per i carichi di lavoro gravosi in termini di lettura, può essere utile un livello di memorizzazione nella cache, come ElastiCache o DAX, se il database è DynamoDB

    • È anche possibile passare le operazioni di lettura alle repliche di lettura con database relazionali come Amazon RDS.

    Hanno priorità più elevata le operazioni di archiviazione e modifica OLTP, Online Transaction Processing) o quelle di recupero e report (OLAP - Online Analytical Processing)?
    • Per un'elaborazione transazionale letta così com'è a elevato throughput, prendi in considerazione un database NoSQL come DynamoDB.

    • Per schemi di lettura complessi con throughput elevato (come il join) con un uso coerente di Amazon RDS.

    • Per le query analitiche, prendi in considerazione un database a colonne, come Amazon Redshift, o l'esportazione dei dati su Amazon S3, nonché l'esecuzione di analisi mediante Athena o Amazon QuickSight.

    Che livello di durabilità è necessario per i dati?
    • Aurora replica automaticamente i dati su tre zone di disponibilità all'interno di una regione, il che significa che i dati sono altamente durevoli con minori probabilità di perdite.

    • DynamoDB viene automaticamente replicato in più zone di disponibilità per offrire livelli elevati di disponibilità e durabilità dei dati.

    • Amazon S3 offre il 99,999999999 di durabilità. Molti servizi di database, come Amazon RDS e DynamoDB, supportano l'esportazione di dati su Amazon S3 per la conservazione e l'archiviazione a lungo termine.

    È presente il desiderio di abbandonare i motori di database commerciali o i costi di licenza?
    Quali sono le aspettative operative per il database? Il passaggio ai servizi gestiti è una priorità?
    • Utilizzare Amazon RDS, invece di Amazon EC2, e scegliere DynamoDB o Amazon DocumentDB, invece di ospitare in autonomia un database NoSQL, riduce le spese operative.

    Come avviene attualmente l'accesso al database? È solo un accesso da applicazione o sono presenti utenti Business Intelligence (BI) e altre applicazioni pronte all'uso connesse?
    • In presenza di dipendenze da strumenti esterni, potresti dover mantenere la compatibilità con i database che supportano. Amazon RDS è del tutto compatibile con le varie versioni dei motori che supporta, tra cui Microsoft SQL Server, Oracle, MySQL e PostgreSQL.

  • Esegui esperimenti e benchmarking in un ambiente non di produzione per identificare quale datastore può soddisfare al meglio i requisiti del tuo carico di lavoro.

Risorse

Documenti correlati:

Video correlati:

Esempi correlati: