Raggruppare più operazioni in una transazione

Completato

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 transazioni vengono spesso definite da un set di quattro requisiti, detti garanzie ACID. 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 con conseguente 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.

Verificare le conoscenze

1.

Quale tipo di sistema di database transazionale sarebbe più adatto ai dati di prodotto?

2.

Si supponga che le operazioni di un rivenditore per aggiornare l'inventario ed elaborare i pagamenti siano incluse nella stessa transazione. Un utente sta tentando di applicare un credito del punto vendita di 30 dollari in un ordine effettuato dal portatile e sta inviando esattamente lo stesso ordine usando il credito del punto vendita (per l'importo completo) dal telefono. Vengono quindi ricevuti due ordini identici. Il database sottostante è un database conforme ad ACID. Quali sono le conseguenze?