Uma transação clássica simplificada do banco de dados pode ser vista como:
- lendo itens M
- executando algum cálculo com base nessas leituras
- escrevendo alguns resultados de N com base nesses cálculos, que podem incluir os elementos lidos originalmente.
Ao executar essas transações (simultaneamente), as propriedades ACID precisam ser mantidas.
Exatamente os mesmos requisitos (N atualizações baseadas em M leem transacionalmente) existem em outros sistemas concorrentes não DBMS.
Estou interessado em descobrir quais algoritmos existem para executar / resolver essas transações e quais são os pontos fortes e fracos relativos desses algoritmos. Você poderia recomendar alguma leitura? Pode ser livros ou referências / tutoriais on-line.
Esclarecimento:
Assim, por exemplo, um algoritmo ingênuo pode ser cada transação com um único bloqueio global, forçando efetivamente o encadeamento único e removendo a concorrência. Um algoritmo um pouco mais complicado seria o bloqueio individual de leitura / gravação de itens, com uma ordem para evitar conflitos). Etc, etc. Existe uma boa fonte documentando vários algoritmos para resolver esse problema. Mesmo uma resposta que apenas apontasse para um único algoritmo com seus pontos fortes e fracos seria útil.