Una transazione di database classica semplificata può essere visualizzata come:
- lettura di articoli M.
- eseguendo alcuni calcoli basati su tali letture
- scrivendo alcuni N risultati basati su questi calcoli, che possono includere gli elementi originariamente letti.
Quando si eseguono queste transazioni (contemporaneamente) , è necessario mantenere le proprietà ACID .
Esistono esattamente gli stessi requisiti (N aggiornamenti basati su M letti in modo transazionale) in altri sistemi concorrenti non DBMS.
Sono interessato a scoprire quali algoritmi esistono per eseguire / risolvere queste transazioni e quali sono i relativi punti di forza e di debolezza di questi algoritmi. Potresti consigliarmi di leggere? Questo potrebbe essere libri o riferimenti / tutorial online.
Una precisazione:
Quindi, ad esempio, un algoritmo ingenuo potrebbe essere ogni transazione che prende un singolo blocco globale, in effetti forzando il threading singolo e rimuovendo la concorrenza. Un algoritmo leggermente più complicato sarebbero i blocchi di lettura / scrittura di singoli elementi, con un ordine per evitare deadlock). Ecc. Esiste una buona fonte che documenta vari algoritmi per risolvere questo problema. Anche una risposta che indicava un singolo algoritmo con la sua forza e debolezza sarebbe utile.