Share via


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