Agrupar várias operações em uma transação

Concluído

Se uma alteração em uma parte dos dados precisar resultar em uma alteração em outra parte dos dados, um aplicativo precisará agrupar uma série de atualizações de dados. Use transações para agrupar essas atualizações. Em uma transação, se um evento de uma série de atualizações falhar, toda a série poderá ser revertida ou desfeita.

Um exemplo é um varejista online que usa uma transação para fazer um pedido, verificar o pagamento e atualizar o inventário do produto. O agrupamento dos eventos relacionados garante que você não reduza seus níveis de estoque até receber uma forma de pagamento aprovada.

Em seguida, você saberá mais sobre as transações e se elas são necessárias para seus dados.

O que é uma transação?

Uma transação é um grupo lógico de operações de banco de dados executadas em conjunto.

Esta é a pergunta a ser feita sobre se você precisa usar transações no seu aplicativo: uma alteração em uma parte dos dados no conjunto de dados afetará outra parte dos dados? Se a resposta for sim, você precisará ter suporte para transações no seu serviço de banco de dados.

As garantias ACID definem as transações, assegurando que um conjunto de quatro requisitos seja atendido. ACID é um acrônimo de atomicidade, consistência, isolamento e durabilidade.

  • Atomicidade significa que uma transação precisa ser executada exatamente uma vez e precisa ser atômica. Todo o trabalho é feito ou nenhuma parte dele é feita. As operações em uma transação geralmente compartilham uma intenção comum e são interdependentes.
  • A Consistência verifica se há dados consistentes antes e depois da transação.
  • O isolamento garante que cada transação não seja afetada por outras transações.
  • Durabilidade significa que as alterações feitas como resultado de uma transação são salvas permanentemente no sistema. O sistema salva dados confirmados, portanto, mesmo em caso de falha e reinicialização do sistema, os dados estão disponíveis em seu estado correto.

Quando um banco de dados oferece garantias ACID, esses princípios são aplicados a cada transação de maneira consistente.

OLTP versus OLAP

Os bancos de dados transacionais costumam ser chamados de sistemas OLTP (processamento de transações online). Os sistemas OLTP geralmente dão suporte a vários usuários, têm tempos de resposta rápidos e lidam com grandes volumes de dados. Também são altamente disponíveis, o que significa que têm tempo de inatividade mínimo. Os sistemas OLTP normalmente lidam com transações pequenas ou relativamente simples.

Um exemplo de serviço do Azure que dá suporte ao OLTP é o Banco de Dados SQL do Azure.

Em geral, os sistemas OLAP (processamento analítico online) dão suporte a menos usuários, têm tempos de resposta maiores, podem estar menos disponíveis e normalmente lidam com transações grandes e complexas.

Um exemplo de serviço do Azure que dá suporte ao OLAP é o Azure Analysis Services.

Os termos OLTP e OLAP não são usados com frequência como costumavam ser, mas compreendê-los facilita a categorização das necessidades de seu aplicativo.

Transações: avaliar os tipos de dados

Garantir que os dados estejam no estado correto nem sempre é uma tarefa fácil. As transações podem ajudar impondo requisitos de integridade de dados aos seus dados. Se os dados se beneficiarem dos princípios de ACID, escolha uma solução de armazenamento que dê suporte a transações.

Vamos ver cada um dos conjuntos de dados do cenário de varejo online e determinar a necessidade de transações.

Dados do catálogo de produtos

Dados do catálogo de produtos devem ser armazenados em um banco de dados transacional. Quando um usuário faz um pedido e o pagamento é confirmado, o estoque do item deve ser atualizado. Da mesma forma, se o cartão de crédito do cliente for recusado, o pedido deverá ser revertido e o estoque não deverá ser atualizado. Todas essas relações exigem transações.

Fotos e vídeos

As fotos e os vídeos em um catálogo de produtos não exigem suporte a transações. Esses arquivos são alterados apenas quando há uma atualização ou a adição de novos arquivos. Embora haja uma relação entre a imagem e os dados reais do produto, ela não é de natureza transacional.

Dados de negócios

Como todos os dados de negócios são históricos e inalteráveis, o suporte a transações não é necessário. Os analistas de negócios que trabalham com os dados também têm necessidades de consulta exclusivas. Eles geralmente trabalham com agregações nas consultas, ou seja, eles podem trabalhar com os totais de outros pontos de dados menores.

Verificar seus conhecimentos

1.

Que tipo de sistema de banco de dados transacional funcionaria melhor para dados de produto?

2.

Suponha que as operações de um varejista de atualizar o estoque e processar pagamentos ocorram na mesma transação. Um usuário está tentando aplicar um crédito da loja de US$ 30 em um pedido usando o laptop e enviando exatamente o mesmo pedido usando o crédito da loja (com o valor total) por meio do telefone. Dois pedidos idênticos são recebidos. O banco de dados nos bastidores é um banco de dados em conformidade com ACID. O que vai acontecer?