Qual é o relacionamento entre o ACID e a transação do banco de dados?
O ACID fornece transações no banco de dados ou é a mesma coisa?
Alguém poderia esclarecer este tópico.
fonte
Qual é o relacionamento entre o ACID e a transação do banco de dados?
O ACID fornece transações no banco de dados ou é a mesma coisa?
Alguém poderia esclarecer este tópico.
ACID é um conjunto de propriedades que você gostaria de aplicar ao modificar um banco de dados.
Uma transação é um conjunto de alterações relacionadas que são usadas para obter algumas das propriedades do ACID. Transações são ferramentas para obter as propriedades ACID.
Atomicidade significa que você pode garantir que todas as transações ocorram, ou nenhuma delas; você pode executar operações complexas como uma única unidade, tudo ou nada, e uma falha, falta de energia, erro ou qualquer outra coisa não permitirá que você esteja em um estado em que apenas algumas das mudanças relacionadas ocorreram.
Consistência significa que você garante que seus dados serão consistentes; nenhuma das restrições que você tem sobre dados relacionados será violada.
Isolamento significa que uma transação não pode ler dados de outra transação que ainda não foi concluída. Se duas transações estiverem sendo executadas simultaneamente, cada uma verá o mundo como se estivesse executando seqüencialmente e se uma precisar ler dados gravados por outra, terá que esperar até que a outra termine.
Durabilidade significa que, assim que uma transação é concluída, é garantido que todas as alterações foram registradas em uma mídia durável (como um disco rígido) e o fato de que a transação foi concluída também é gravada.
Portanto, as transações são um mecanismo para garantir essas propriedades; eles são uma maneira de agrupar ações relacionadas de modo que, como um todo, um grupo de operações possa ser atômico, produzir resultados consistentes, ser isolado de outras operações e ser gravado de forma durável.
ACID são propriedades desejáveis de qualquer mecanismo de processamento de transações.
Um DBMS é (se for bom) um tipo específico de mecanismo de processamento de transações que expõe, geralmente em uma extensão muito grande, mas não totalmente, essas propriedades.
Mas existem outros mecanismos que também podem expor essas propriedades. O tipo de software que costumava ser chamado de "monitores TP" é um exemplo disso (hoje em dia o equivalente na maior parte são servidores da Web).
Esses monitores TP podem acessar outros recursos além de um DBMS (por exemplo, uma impressora) e ainda garantir ACID para seus usuários. Como um exemplo do que o ACID pode significar quando uma impressora está envolvida em uma transação:
fonte
Modifiquei levemente o exemplo da impressora para torná-lo mais explicável
1 documento com 2 páginas de conteúdo foi enviado para a impressora
Transação - documento enviado para a impressora
Espero que isso ajude alguém a entender o conceito de ÁCIDO
fonte
Em um banco de dados relacional, toda instrução SQL deve ser executada no escopo de uma transação.
Sem definir explicitamente os limites da transação, o banco de dados utilizará uma transação implícita que envolve todas as instruções individuais.
A transação implícita começa antes da execução da instrução e termina (confirmação ou reversão) após a execução da instrução. O modo de transação implícita é conhecido como confirmação automática.
Conforme explicado neste artigo , uma transação é uma coleção de operações de leitura / gravação com êxito apenas se todas as operações contidas tiverem êxito.
Inerentemente, uma transação é caracterizada por quatro propriedades (comumente chamadas de ACID):
Para um sistema de banco de dados relacional, isso é verdade porque o Padrão SQL especifica que uma transação deve fornecer as garantias ACID:
Atomicidade
A atomicidade toma operações individuais e as transforma em uma unidade de trabalho tudo ou nada, sucedendo se e somente se todas as operações contidas tiverem êxito.
Uma transação pode encapsular uma alteração de estado (a menos que seja somente leitura). Uma transação deve sempre deixar o sistema em um estado consistente, não importa quantas transações simultâneas sejam intercaladas a qualquer momento.
Consistência
Consistência significa que as restrições são impostas para cada transação confirmada. Isso implica que todas as chaves, tipos de dados, verificações e acionadores são bem-sucedidas e nenhuma violação de restrição é acionada.
Isolamento
As transações requerem mecanismos de controle de simultaneidade e garantem a correção mesmo quando são intercaladas. O isolamento nos traz o benefício de ocultar mudanças de estado não confirmadas do mundo exterior, pois transações com falha nunca devem corromper o estado do sistema. O isolamento é alcançado através do controle de simultaneidade usando mecanismos de bloqueio pessimistas ou otimistas.
Durabilidade
Uma transação bem-sucedida deve alterar permanentemente o estado de um sistema e, antes de finalizá-lo, as alterações de estado são registradas em um log de transações persistente. Se o nosso sistema for afetado repentinamente por uma falha do sistema ou uma queda de energia, todas as transações confirmadas inacabadas poderão ser reproduzidas.
Para mais detalhes sobre Durabilidade e Redo Log, confira este artigo .
fonte
As propriedades ACID são um conceito muito antigo e importante da teoria do banco de dados. Eu sei que você pode encontrar muitas postagens sobre este tópico, mas ainda gostaria de começar a compartilhar respostas sobre isso, porque este é um tópico muito importante do RDBMS.
O Sistema de banco de dados brinca com vários tipos diferentes de transações, nas quais todas as transações têm certas características. Essa característica é conhecida como Propriedades ACID. As propriedades ACID recebem donatário de todas as transações do banco de dados para realizar todas as tarefas.
Atomicidade: comprometa tudo ou nada.
Consistência: faça um registro consistente em termos de validar todas as regras e restrições da transação.
Isolamento: verifique se duas transações desconhecem uma à outra.
Durabilidade: dados comprometidos armazenados para sempre. Referência retirada deste artigo:
fonte
Para citar a Wikipedia :
Um DBMS que suporta transações se esforçará para oferecer suporte a todas essas propriedades - qualquer DBMS comercial (assim como vários DBMSs de código aberto) fornece 'suporte' ACID completo - embora muitas vezes seja possível (por exemplo, com níveis de isolamento variados no MSSQL) diminuir o ACIDness - perdendo assim a garantia de um comportamento totalmente transacional.
fonte
[Gray] introduziu as propriedades ACD para uma transação em 1981. Em 1983 [Haerder] adicionou a propriedade Isolation. Na minha opinião, as propriedades da ACD teriam um conjunto de propriedades mais útil para discutir. Uma interpretação de Atomicity (de que a transação deve ser atômica como vista de qualquer cliente a qualquer momento) implicaria realmente a propriedade de isolamento. A propriedade "isolamento" é útil quando a transação não é isolada; quando a propriedade de isolamento estiver relaxada. No ANSI SQL, fale: se o nível de isolamento for mais fraco, SERIALIZABLE. Mas quando o nível de isolamento é SERIALIZABLE, a propriedade de isolamento não é realmente interessante.
Eu escrevi mais sobre isso em uma postagem no blog: "O ACID não faz sentido".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] O conceito de transação, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Princípios de recuperação de banco de dados orientada a transações, Haerder e Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
fonte
A transação pode ser definida como uma coleção de tarefas consideradas como unidade mínima de processamento. Cada unidade mínima de processamento não pode ser dividida mais.
Toda transação deve conter quatro propriedades conhecidas como propriedades ACID. ou seja, ACID são o grupo de propriedades de qualquer transação.
fonte