, ,

La Transazione – Come capire a un livello più profondo

transazione rappresentazione del concetto di transazione

Cos’è una transazione in informatica?

In informatica, una transazione è un insieme di attività correlate trattate come un’unica azione. Insieme, le attività formano un’unità logica di lavoro in cui tutte devono avere successo o nessuna può avere successo. Se alcune attività hanno successo ma almeno una fallisce, tutte le attività riuscite vengono invertite, riportando il sistema allo stato originale prima che la transazione, o fase di lavoro, fosse avviata.

Un esempio comune di transazione è l’acquisto di un cliente tramite un sito di e-commerce. Dopo aver selezionato un prodotto e aver inserito le informazioni necessarie, il cliente conferma la vendita finale cliccando su OK o eseguendo un altro passaggio per concludere il processo. Ciò fa sì che l’applicazione avvii una transazione di vendita, che include più passaggi, come la conferma della disponibilità del prodotto, la convalida della carta di credito, l’avvio del processo di spedizione e l’inserimento dell’ordine presso il magazzino.

Se uno qualsiasi dei passaggi fallisce, l’intera transazione viene annullata. Ad esempio, il prodotto potrebbe non essere disponibile o la carta di credito potrebbe non essere convalidata.

In questo caso, tutte le modifiche vengono annullate in modo che tutto venga riportato allo stato originale. La transazione potrebbe anche essere annullata a causa di un’interruzione del servizio, come un database offline o un server non disponibile. La transazione viene confermata solo dopo che ogni singolo passaggio è stato eseguito correttamente. Le modifiche vengono quindi rese permanenti nei sistemi di supporto, come l’aggiornamento di un database per riflettere i nuovi livelli di inventario.

Indice

Transazioni e database

Le transazioni sono comunemente associate ai database. I sistemi di gestione dei database relazionali, come SQL Server e MySQL, includono ampie capacità di elaborazione transazionale per garantire l’integrità dei dati. Queste capacità si riflettono nello Structured Query Language (SQL), un linguaggio di programmazione progettato per gestire lo schema e i dati del database.

SQL incorpora le capacità di transazione direttamente nel suo linguaggio, fornendo istruzioni per iniziare, confermare e annullare le transazioni. Quando una transazione completa tutte le sue operazioni correttamente, le modifiche vengono confermate nel database; quando una transazione non completa tali operazioni, le modifiche vengono annullate.

Le transazioni in un database relazionale in genere aderiscono alle seguenti quattro proprietà ACID:

  • Atomicità. Tutte le operazioni all’interno della transazione vengono trattate come una singola unità. Ciò significa che tutte le operazioni devono avere esito positivo affinché le modifiche vengano confermate nel database. Se un’operazione fallisce, non viene confermata alcuna modifica e l’intera transazione viene annullata.
  • Coerenza. I dati rimangono in uno stato coerente per tutta l’esecuzione della transazione e vengono lasciati in un’istruzione coerente alla fine della transazione. La transazione non deve apportare modifiche che violino i vincoli definiti sui dati.
  • Isolamento. Ogni transazione è isolata da tutte le altre transazioni eseguite contemporaneamente sul database. Una transazione non deve interferire con un’altra transazione o influenzarla in alcun modo. Il grado di isolamento delle transazioni tra loro è determinato dai livelli di isolamento applicabili.
  • Durata. Tutte le modifiche apportate da una transazione dopo che è stata confermata vengono mantenute nel database e non possono essere annullate da circostanze esterne, come un guasto hardware o un’interruzione di corrente.

Sebbene l’elaborazione delle transazioni sia una componente essenziale in un sistema di database relazionale, il concetto di gestione delle transazioni non è limitato ai database relazionali. Ad esempio, una blockchain è un tipo di database distribuito che funge da registro pubblico per la registrazione delle transazioni. Una transazione in questo senso è un trasferimento di valore tra due utenti sulla rete peer-to-peer della blockchain. La transazione è convalidata dagli altri utenti sulla rete e protetta tramite chiavi private e chiavi pubbliche.

Transazioni oltre i database

Nell’informatica, il concetto di transazione può estendersi anche al di fuori del regno dei database. Ad esempio, CICS Transaction Server di IBM offre un server applicativo misto che fornisce connettività e gestione delle transazioni online. Il server supporta applicazioni scritte in una varietà di linguaggi di programmazione, fornendo al contempo una piattaforma per ospitare applicazioni aziendali transazionali in un ambiente ibrido.

Un’applicazione in questo contesto è una raccolta di programmi. Ogni programma viene eseguito come parte di una transazione controllata dal server CISC. In questo senso, una transazione è un’operazione indivisibile che si combina con altre transazioni per comporre il lavoro.

Un programma che gestisce o supervisiona la sequenza di eventi che fanno parte di una transazione è talvolta chiamato monitor di transazione. Un monitor di transazione potrebbe essere incluso come componente in una piattaforma più ampia. Ad esempio, Oracle TimesTen In-Memory Database include una funzionalità di monitoraggio delle transazioni che visualizza un’istantanea delle transazioni correnti e fornisce dettagli su ciascuna di esse.