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.
fonte
Respostas:
O livro Sistemas de Informações Transacionais de Weikum e Vossen cobre grande parte da área, tanto em termos teóricos quanto práticos, sob diferentes perspectivas, não apenas transações. Tem cerca de 1000 páginas, por isso o manterá ocupado por um fim de semana ou dois. Por outro lado, ele tem quase 10 anos, então pode haver algo mais atualizado disponível. Outros livros da linha incluem Controle e Recuperação de Concorrência em Sistemas de Banco de Dados por Bernstein, P., Hadzilacos, V. e Goodman, N, Addison-Wesley, 1987, Transaction Processing: Concepts and Techniques por Jim Gray e Andreas Reuter, e Principles do processamento de transaçõespor Philip A. Bernstein e Eric Newcomer, 2009. Não vi o último, mas sendo o mais recente, pode ser um bom lugar para começar, embora sua solução possa ser encontrada em textos mais antigos. Uma viagem à biblioteca pode valer a pena.
Um texto monumental nessa área é Atomic Transactions de Nancy Lynch et al. Apresenta um relato formal e provas de vários tipos de algoritmos nos quais você está interessado. É bastante formal e tedioso, por isso pode não ser do seu gosto.
Muitos trabalhos recentes são dedicados à Memória Transacional de Software , que aplica as idéias de transação a aplicativos multithread. Há dezenas de publicações sobre esse tópico a cada ano: a página da wikipedia fornece muitas referências.
fonte