Transações ACID
O que é uma transação?
Uma transação em um banco de dados ou sistema de armazenamento de dados é qualquer operação tratada como uma unidade de trabalho. As transações são totalmente executadas ou não executadas, mantendo o sistema de armazenamento em um estado consistente. Um exemplo típico de transação é a retirada de dinheiro de uma conta bancária. Nesse caso, o dinheiro foi sacado da conta ou não. Não há estado intermediário.
Propriedades do ACID: Atomicidade, Consistência, Isolamento, Durabilidade
ACID é uma sigla para as quatro principais características que definem uma transação: Atomicidade, Consistência, Isolamento e Durabilidade. Quando uma operação de banco de dados possui essas propriedades ACID, ela pode ser chamada de transação ACID. Um sistema de armazenamento de dados que aplica essas operações também é chamado de sistema transacional. As transações ACID garantem as seguintes características para leituras, gravações e modificações de tabelas:
- Atomicidade: cada instrução de uma transação (leitura, gravação, atualização ou exclusão de dados) é tratada como uma única unidade. Ou as instruções são todas executadas ou nenhuma é executada. Essa propriedade evita perda ou corrupção de dados, como quando a fonte de dados de streaming falha no meio do fluxo.
- Consistência: garante que as transações apenas modifiquem as tabelas de maneiras predefinidas e previsíveis. A consistência transacional mantém as tabelas consistentes em caso de corrupção de dados ou erros, evitando resultados de execução não intencionais.
- Isolamento: vários usuários podem ler e gravar na mesma tabela ao mesmo tempo, mas as transações são isoladas para que as simultâneas não interfiram ou afetem umas às outras. Na verdade, cada solicitação é tratada como se estivesse ocorrendo de forma independente, mesmo que ocorram simultaneamente.
- Durabilidade: garante que as alterações de dados feitas por transações executadas com sucesso sejam preservadas, mesmo em caso de falha do sistema.
Benefícios das transações ACID
As transações ACID maximizam a confiabilidade e a integridade dos dados. Os dados permanecem consistentes mesmo se a operação for concluída apenas parcialmente. Por exemplo, se cair a energia inesperadamente durante a gravação em uma tabela em um banco de dados, sem transações ACID, pode ser que apenas parte dos dados seja salva, e o restante, não. O resultado é um banco de dados inconsistente, tornando a recuperação difícil e demorada.
Delta Lake: Dados confiáveis e consistentes com as garantias de transações ACID
Tradicionalmente, as transações ACID são propriedade apenas de data warehouses, mas o Delta Lake traz essa propriedade para data lakes. Isso dá aos usuários uma visualização consistente e em tempo real de seus dados à medida que novos dados são gravados na tabela. Isso ocorre porque cada gravação é uma transação separada registrada em um log de transações ordenadas. [O Delta Lake emprega o mais alto nível de isolamento (isolamento serializável) para garantir consistência e confiabilidade de leitura e gravação em uma única tabela.] Ao implementar transações ACID, o Delta Lake efetivamente resolve os problemas da arquitetura Lambda: complexidade, visões incorretas dos dados, retrabalho e reprocessamento necessários após pipelines Lambda quebrados. Além disso, os usuários podem realizar várias transações simultâneas nos dados. Mesmo se uma fonte de dados ou fluxo encontrar um erro, o Delta Lake garante que as transações sejam canceladas e os dados permaneçam limpos e intactos. Um grande benefício das transações ACID é que os usuários podem confiar em seus dados armazenados no Delta Lake. Ao usar tabelas do Delta Lake para execuções de ETL de preparação de dashboards, os analistas de dados podem confiar que os KPIs que eles veem representam o estado real dos dados. Aproveitando as tabelas do Delta Lake para engenharia de recursos, os engenheiros de machine learning podem ter certeza de que as transformações e agregações estão funcionando conforme o esperado ou falhando (e são notificados se for o caso). O valor de confiar que o modelo mental que você tem sobre os dados se reflete no verdadeiro estado subjacente é imensurável.