Criteri per la scelta di un archivio dati
Questo articolo descrive i criteri di confronto da usare quando si valuta un archivio dati. L'obiettivo è facilitare l'individuazione dei tipi di archiviazione dati in grado di soddisfare i requisiti della soluzione.
Considerazioni generali
Quando si effettua la selezione, tenere presenti le considerazioni seguenti.
Requisiti funzionali
- Formato dati: quale tipo di dati si intende archiviare? I tipi comuni includono dati transazionali, oggetti JSON, dati di telemetria, indici di ricerca o file flat.
- Dimensioni dei dati: quali sono le dimensioni delle entità da archiviare? Queste entità devono essere mantenute come un singolo documento o possono essere suddivise tra più documenti, tabelle e raccolte?
- Scalabilità e struttura: qual è la quantità complessiva di capacità di archiviazione necessaria? Si prevede il partizionamento dei dati?
- Relazioni tra dati: i dati devono supportare relazioni uno-a-molti o molti-a-molti? Le relazioni stesse rappresentano una parte importante dei dati? Sarà necessario unire o combinare dati all'interno dello stesso set di dati o da set di dati esterni?
- Modello di coerenza: quanto è importante che gli aggiornamenti eseguiti in un nodo vengano visualizzati in altri nodi prima di apportare ulteriori modifiche? È accettabile la coerenza finale? Sono necessarie garanzie ACID per le transazioni?
- Flessibilità dello schema: quale tipo di schemi verranno applicati ai dati? Si userà uno schema fisso, un approccio di schema in scrittura o un approccio di schema in lettura?
- Concorrenza: quale tipo di meccanismo di concorrenza si vuole usare quando si aggiornano e si sincronizzano i dati? L'applicazione eseguirà molti aggiornamenti potenzialmente in conflitto? In tal caso, potrebbe essere necessario registrare il controllo della concorrenza e il controllo della concorrenza pessimistica. In alternativa, si possono supportare controlli di concorrenza ottimistica? In tal caso, il controllo della concorrenza basato su timestamp è sufficiente o è necessaria la funzionalità aggiuntiva del controllo della concorrenza multiversione?
- Spostamento dei dati: la soluzione deve eseguire attività ETL per spostare i dati in altri archivi o data warehouse?
- Ciclo di vita dei dati: i dati vengono scritti una sola volta, read-many? Possono essere spostati in un'archiviazione offline sicura o ad accesso sporadico?
- Altre funzionalità supportate: sono necessarie altre funzionalità specifiche, ad esempio la convalida dello schema, l'aggregazione, l'indicizzazione, la ricerca full-text, MapReduce o altre funzionalità di query?
Requisiti non funzionali
- Prestazioni e scalabilità: quali sono i requisiti di prestazioni dei dati? Si hanno requisiti specifici relativi alla frequenza di inserimento e alla velocità di elaborazione dei dati? Quali sono i tempi di risposta accettabili per l'esecuzione di query e l'aggregazione dei dati dopo l'inserimento? Di quanto dovranno aumentare le prestazioni dell'archivio dati? Il carico di lavoro è a elevato utilizzo delle risorse di scrittura o a elevato utilizzo delle risorse di lettura?
- Affidabilità: quale contratto di servizio generale è necessario supportare? Quale livello di tolleranza di errore è necessario fornire per i consumer di dati? Quali tipi di funzionalità di backup e ripristino sono necessari?
- Replica: i dati devono essere distribuiti tra più repliche o aree? Quali tipi di funzionalità di replica dei dati sono necessari?
- Limiti: i limiti di un archivio dati specifico supportano i requisiti per la scalabilità, il numero di connessioni e la velocità effettiva?
Gestione e costi
- Servizio gestito: quando possibile, usare un servizio dati gestito, a meno che non siano necessarie funzionalità specifiche disponibili solo in un archivio dati ospitato da IaaS (Infrastructure as a Service).
- Disponibilità dell'area: per i servizi gestiti, il servizio è disponibile in tutte le aree di Azure? La soluzione deve essere ospitata in specifiche aree di Azure?
- Portabilità: è necessario eseguire la migrazione dei dati a data center locali, esterni o ad altri ambienti di hosting cloud?
- Licenze: si ha una preferenza di un tipo di licenza proprietario rispetto al tipo di licenza OSS? Esistono altre restrizioni esterne rispetto al tipo di licenza che è possibile usare?
- Costo complessivo: qual è il costo complessivo dell'uso del servizio all'interno della soluzione? Quante istanze sarà necessario eseguire per supportare i requisiti di velocità effettiva e tempo di attività? Considerare in questo calcolo i costi delle operazioni. Uno dei motivi per preferire i servizi gestiti è la riduzione dei costi operativi.
- Efficienza dei costi: è possibile partizionare i dati per archiviarlo in modo più conveniente? Ad esempio, è possibile spostare gli oggetti di grandi dimensioni da un costoso database relazionale a un archivio di oggetti?
Sicurezza
- Sicurezza: quale tipo di crittografia è necessario? È necessaria la crittografia dei dati inattivi? Che tipo di meccanismo di autenticazione si vuole usare per la connessione ai dati?
- Controllo: quale tipo di log di controllo è necessario generare?
- Requisiti di rete: è necessario limitare o gestire in altro modo l'accesso ai dati da altre risorse di rete? I dati devono essere accessibili solo dall'interno dell'ambiente Azure? I dati devono essere accessibili da specifici indirizzi IP o subnet? Devono essere accessibili da applicazioni o servizi ospitati in locale o in altri data center esterni?
DevOps
- Set di competenze: sono disponibili linguaggi di programmazione, sistemi operativi o altre tecnologie che il team sta usando? Ne esistono altri che sarebbe difficile utilizzare per il team?
- Client: è disponibile un buon supporto client per i linguaggi di sviluppo?
Passaggi successivi
- Soluzioni e servizi di archiviazione cloud di Azure
- Esaminare le opzioni di archiviazione
- Introduzione ad Archiviazione di Azure