OLTP (transação online)
O gerenciamento de dados transacionais usando sistemas computacionais é conhecido como OLTP (processamento de transações online). Os sistemas OLTP registram as interações de negócios conforme elas ocorrem na operação diária da organização e dão suporte à consulta desses dados para criar inferências.
Dados transacionais
Dados transacionais são informações que acompanham as interações relacionadas às atividades de uma organização. Normalmente, essas interações são transações comerciais, como pagamentos recebidos de clientes, pagamentos feitos a fornecedores e movimentação de produtos pelo inventário, pedidos feitos ou serviços entregues. Eventos transacionais, que representam as transações em si, normalmente contêm uma dimensão temporal, alguns valores numéricos e referências a outros dados.
As transações normalmente precisam ser atômicas e consistentes. Atomicidade significa que uma transação inteira sempre tem êxito ou falha como uma unidade de trabalho e nunca é deixada em um estado concluído incompleto. Se uma transação não pode ser concluída, o sistema de banco de dados precisa reverter todas as etapas que já foram realizadas como parte dessa transação. Em um RDBMS (sistema de gerenciamento de banco de dados relacional) tradicional, essa reversão ocorre automaticamente se uma transação não pode ser concluída. Consistência significa que as transações sempre deixam os dados em um estado válido. (Essas são descrições muito informais de atomicidade e consistência. Há definições mais formais dessas propriedades, como ACID.)
Bancos de dados transacionais podem dar suporte à coerência forte em transações que usam várias estratégias de bloqueio, como bloqueio pessimista, a fim de garantir que todos os dados sejam altamente consistentes dentro do contexto da empresa, para todos os usuários e processos.
A arquitetura de implantação mais comum que usa dados transacionais é a camada de armazenamento de dados em uma arquitetura de três camadas. Uma arquitetura de três camadas normalmente consiste em uma camada de apresentação, uma camada de lógica de negócios e uma camada de armazenamento de dados. Uma arquitetura de implantação relacionada é a arquitetura de N camadas, que pode ter várias camadas intermediárias que manipulam a lógica de negócios.
Características comuns de dados transacionais
Os dados transacionais tendem a ter as seguintes características:
Requisito | Descrição |
---|---|
Normalização | Altamente normalizado |
Esquema | Esquema na gravação, altamente imposto |
Consistência | Coerência forte, garantia de ACID |
Integridade | Alta integridade |
Usa transações | Sim |
Estratégia de bloqueio | Pessimista ou otimista |
Atualizável | Sim |
Acrescentável | Sim |
Carga de trabalho | Gravações intensas, leituras moderadas |
Indexação | Índices primários e secundários |
Tamanho do dado | De pequeno a médio |
Modelar | Relacional |
Forma dos dados | Tabular |
Flexibilidade de consulta | Altamente flexível |
Escala | Pequeno (MBs) a grande (alguns TBs) |
Quando usar esta solução
Escolha o OLTP quando precisar processar e armazenar transações comerciais com eficiência, disponibilizando-as imediatamente para aplicativos cliente de uma maneira consistente. Use essa arquitetura quando um atraso tangível no processamento tiver um impacto negativo sobre as operações diárias da empresa.
Os sistemas OLTP foram projetados para processar e armazenar transações com eficiência, bem como consultar dados transacionais. A meta de processar e armazenar transações individuais com eficiência por um sistema OLTP é parcialmente realizada pela normalização de dados – ou seja, sua divisão em partes menores que são menos redundantes. Isso dá suporte à eficiência, porque permite que o sistema OLTP processe grandes quantidades de transações de forma independente e evita o processamento extra necessário para manter a integridade dos dados na presença de dados redundantes.
Desafios
A implementação e o uso de um sistema OLTP pode apresentar alguns desafios:
- Os sistemas OLTP nem sempre são bons para manipular agregações em grandes volumes de dados, embora haja exceções, como uma solução bem planejada baseada no SQL Server. A análise dos dados, que se baseia em cálculos de agregação em milhões de transações individuais, faz uso muito intensivo de recursos de um sistema OLTP. Eles podem ser lentos para serem executados e podem causar lentidão, bloqueando outras transações no banco de dados.
- Ao realizar a análise e os relatórios sobre dados altamente normalizados, as consultas tendem a ser complexas, pois a maioria das consultas precisa desnormalizar os dados usando junções. Além disso, as convenções de nomenclatura para objetos de banco de dados em sistemas OLTP tendem a ser concisas e sucintas. O aumento da normalização, juntamente com convenções de nomenclatura concisas, dificulta a consulta dos sistemas OLTP por parte dos usuários empresariais, sem a ajuda de um DBA ou desenvolvedor de dados.
- O armazenamento do histórico de transações por tempo indeterminado e o armazenamento de excesso de dados em uma tabela qualquer podem levar à redução do desempenho da consulta, dependendo da quantidade de transações armazenadas. A solução comum é manter uma janela de tempo relevante (como o ano fiscal atual) no sistema OLTP e descarregar dados históricos em outros sistemas, como um data mart ou data warehouse.
OLTP no Azure
Aplicativos, como sites hospedados em Aplicativos Web do Serviço de Aplicativo, APIs REST em execução no Serviço de Aplicativo ou aplicativos móveis ou da área de trabalho, se comunicam com o sistema OLTP, normalmente por meio de um intermediário da API REST.
Na prática, a maioria das cargas de trabalho não é puramente OLTP. Também há uma tendência de existir um componente analítico. Além disso, há uma demanda cada vez maior por relatórios em tempo real, como a execução de relatórios no sistema operacional. Isso também é conhecido como HTAP (processamento transacional/analítico híbrido). Para obter mais informações, consulte OLAP (processamento analítico online).
No Azure, todos os seguintes armazenamentos de dados atendem aos requisitos básicos de OLTP e do gerenciamento de dados de transação:
- Banco de Dados SQL do Azure
- SQL Server em uma máquina virtual do Azure
- Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
Principais critérios de seleção
Para restringir as opções, comece respondendo a estas perguntas:
Você deseja ter um serviço gerenciado em vez de gerenciar seus próprios servidores?
Sua solução tem dependências específicas para compatibilidade com o Microsoft SQL Server, MySQL ou PostgreSQL? Seu aplicativo pode limitar os armazenamentos de dados que você pode escolher com base nos fatores condutores que dão suporte à comunicação com o armazenamento de dados ou nas suposições que ele faz sobre qual banco de dados é usado.
Seus requisitos de taxa de transferência de gravação são particularmente altos? Em caso afirmativo, escolha uma opção que fornece tabelas em memória.
Sua solução é multilocatário? Nesse caso, considere opções que dão suporte a pools de capacidade, em que várias instâncias de banco de dados são extraídas de um pool elástico de recursos, em vez de recursos fixos por banco de dados. Isso pode ajudá-lo a distribuir melhor a capacidade em todas as instâncias de banco de dados e pode tornar a solução mais econômica.
Seus dados precisam ser legíveis com baixa latência em várias regiões? Em caso afirmativo, escolha uma opção que dá suporte a réplicas secundárias legíveis.
Seu banco de dados precisa estar altamente disponível em todas as regiões geográficas? Em caso afirmativo, escolha uma opção que dá suporte à replicação geográfica. Considere também as opções que dão suporte ao failover automático da réplica primária para uma réplica secundária.
O banco de dados tem necessidades específicas de segurança? Em caso afirmativo, examine as opções que fornecem funcionalidades como segurança em nível de linha, máscara de dados e Transparent Data Encryption.
Matriz de funcionalidades
As tabelas a seguir resumem as principais diferenças em funcionalidades.
Funcionalidades gerais
Recurso | Banco de Dados SQL do Azure | SQL Server em uma máquina virtual do Azure | Banco de Dados do Azure para MySQL | Banco de Dados do Azure para PostgreSQL |
---|---|---|---|---|
É um Serviço Gerenciado | Sim | Não | Sim | Yes |
É executado na plataforma | N/D | Windows, Linux, Docker | N/D | N/D |
Programação 1 | T-SQL, .NET, R | T-SQL, .NET, R, Python | SQL | SQL, PL/pgSQL, PL/JavaScript (v8) |
[1] Não incluindo o suporte de driver do cliente, que permite que muitas linguagens de programação se conectem e usem o armazenamento de dados OLTP.
Funcionalidades de escalabilidade
Recurso | Banco de Dados SQL do Azure | SQL Server em uma máquina virtual do Azure | Banco de Dados do Azure para MySQL | Banco de Dados do Azure para PostgreSQL |
---|---|---|---|---|
Tamanho máximo da instância do banco de dados | 4 TB | 256 TB | 16 TB | 16 TB |
Dá suporte a pools de capacidade | Sim | Sim | Não | Não |
Dá suporte à expansão de clusters | Não | Sim | Não | Não |
Escalabilidade dinâmica (escalar verticalmente) | Sim | Não | Sim | Yes |
Funcionalidades de carga de trabalho analítica
Recurso | Banco de Dados SQL do Azure | SQL Server em uma máquina virtual do Azure | Banco de Dados do Azure para MySQL | Banco de Dados do Azure para PostgreSQL |
---|---|---|---|---|
Tabelas temporais | Sim | Sim | Não | Não |
Tabelas em memória (com otimização de memória) | Sim | Sim | Não | Não |
Suporte de columnstore | Sim | Sim | Não | Não |
Processamento de consulta adaptável | Sim | Sim | Não | Não |
Recursos de disponibilidade
Recurso | Banco de Dados SQL do Azure | SQL Server em uma máquina virtual do Azure | Banco de Dados do Azure para MySQL | Banco de Dados do Azure para PostgreSQL |
---|---|---|---|---|
Secundários legíveis | Sim | Sim | Sim | Yes |
Replicação geográfica | Sim | Sim | Sim | Yes |
Failover automático para o secundário | Sim | Não | No | Não |
Restauração em um momento determinado | Sim | Sim | Sim | Yes |
Funcionalidades de segurança
Recurso | Banco de Dados SQL do Azure | SQL Server em uma máquina virtual do Azure | Banco de Dados do Azure para MySQL | Banco de Dados do Azure para PostgreSQL |
---|---|---|---|---|
Segurança em nível de linha | Sim | Sim | Sim | Yes |
Mascaramento de dados | Sim | Sim | Não | Não |
Transparent Data Encryption | Sim | Sim | Sim | Yes |
Restringir o acesso a endereços IP específicos | Sim | Sim | Sim | Yes |
Restringir o acesso para permitir apenas o acesso da VNet | Sim | Sim | Sim | Yes |
autenticação do Microsoft Entra | Sim | Não | Sim | Yes |
Autenticação do Active Directory | Não | Sim | Não | No |
Autenticação multifator | Sim | Não | Sim | Yes |
Dá suporte ao Always Encrypted | Sim | Sim | Não | Não |
IP Privado | Não | Sim | Não | Não |
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Zoiner Tejada | CEO e arquiteto
Próximas etapas
- Introdução às tabelas com otimização de memória
- Visão geral e cenários de uso do OLTP in-memory
- Otimizar o desempenho usando tecnologias na memória no Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure
- Transações distribuídas entre bancos de dados na nuvem