Raggruppare più operazioni in una transazione
Se la modifica apportata ad alcuni dati comporta la modifica di altri dati, un'applicazione deve raggruppare una serie di aggiornamenti ai dati. È possibile usare le transazioni per raggruppare questi aggiornamenti. In una transazione, se un evento in una serie di aggiornamenti ha esito negativo, è possibile eseguire il rollback dell'intera serie oppure annullarla.
Un esempio è un rivenditore online che usa una transazione per effettuare gli ordini, verificare i pagamenti e aggiornare l'inventario dei prodotti. Raggruppando gli eventi correlati, è possibile evitare di ridurre le scorte di magazzino fino a quando non si riceve una forma di pagamento approvata.
Di seguito si apprenderà cosa sono le transazioni e se è necessario usarle per i dati.
Cos'è una transazione?
Una transazione è un gruppo logico di operazioni di database che vengono eseguite insieme.
La domanda da porsi per determinare se è necessario usare le transazioni nella propria applicazione è la seguente: la modifica di alcuni dati nel set influirà su altri dati? Se la risposta è affermativa, il servizio di database dovrà supportare le transazioni.
Le garanzie ACID definiscono le transazioni assicurando che venga soddisfatto un insieme di quattro requisiti. ACID è l'acronimo di atomicità, coerenza, isolamento e durabilità.
- Atomicità significa che una transazione deve essere eseguita esattamente una volta e deve essere atomica. O viene eseguito tutto il lavoro oppure niente. Le operazioni all'interno di una transazione condividono in genere una finalità comune e sono interdipendenti.
- La coerenza garantisce che i dati siano coerenti sia prima che dopo la transazione.
- L'isolamento garantisce che ogni transazione non sia influenzata da altre transazioni.
- Durabilità indica che le modifiche apportate come risultato di una transazione vengono salvate in modo permanente nel sistema. Il sistema salva i dati di cui viene eseguito il commit in modo che siano disponibili nello stato corretto anche in caso di errore e riavvio del sistema.
Quando un database offre garanzie ACID, questi principi vengono applicati in modo coerente a ogni transazione.
OLTP e OLAP
I database transazionali vengono spesso denominati sistemi di elaborazione delle transazioni online (OLTP, Online Transaction Processing). I sistemi OLTP supportano in genere numerosi utenti, garantiscono tempi di risposta rapidi e possono gestire volumi elevati di dati. Offrono anche disponibilità elevata, ovvero hanno tempi di inattività minimi. I sistemi OLTP gestiscono in genere transazioni di piccole dimensioni o transazioni relativamente semplici.
Un esempio di servizio di Azure che supporta OLTP è il database SQL di Azure.
I sistemi OLAP (Online Analytical Processing) supportano in genere un numero inferiore di utenti, hanno tempi di risposta più lunghi, possono offrire una minore disponibilità e normalmente gestiscono transazioni di grandi dimensioni o complesse.
Un esempio di servizio di Azure che supporta OLAP è Azure Analysis Services.
I termini OLTP e OLAP vengono usati con minore frequenza rispetto al passato, ma la conoscenza di questi concetti semplifica la categorizzazione delle esigenze dell'applicazione.
Transazioni: valutare i tipi di dati
Garantire che i dati siano nello stato corretto non è sempre facile. Le transazioni possono risultare utili in quanto consentono di applicare requisiti di integrità dei dati. Se i principi ACID risultano utili per i dati, è consigliabile scegliere una soluzione di archiviazione che supporta le transazioni.
Verranno esaminati i set di dati dello scenario di vendita online per determinare le esigenze in termini di transazioni.
Dati del catalogo prodotti
I dati del catalogo prodotti devono essere archiviati in un database transazionale. Quando un utente effettua un ordine e il pagamento viene verificato, l'inventario per l'articolo deve essere aggiornato. Analogamente, se la carta di credito del cliente viene rifiutata, occorre eseguire il rollback dell'ordine e l'inventario non deve essere aggiornato. Per queste relazioni sono richieste le transazioni.
Foto e video
Le foto e i video in un catalogo prodotti non richiedono il supporto delle transazioni. Questi file vengono modificati solo quando viene eseguito un aggiornamento o vengono aggiunti nuovi file. Anche se esiste una relazione tra l'immagine e i dati effettivi del prodotto, questa non è di natura transazionale.
Dati di business
Dato che tutti i dati aziendali sono cronologici e non cambiano, il supporto delle transazioni non è richiesto. Anche gli analisti aziendali che lavorano con i dati hanno esigenze specifiche per le query. Spesso lavorano con le aggregazioni nelle query, in modo da poter operare sui totali di altri punti dati più piccoli.