Arquitetura de funções distribuídas da Hiperescala
Aplica-se a: Banco de Dados SQL do Azure
A camada de serviço da Hiperescala utiliza uma arquitetura com níveis de computação e armazenamento altamente escalonáveis e separadas. Este artigo descreve os componentes que permitem que os clientes dimensionem rapidamente bancos de dados de Hiperescala, beneficiando-se de backups quase instantâneos e logs de transações altamente escalonáveis.
Dica
Os preços simplificados de Hiperescala do Banco de Dados SQL começam em dezembro de 2023. Consulte o blog de preços de Hiperescala para obter detalhes.
Visão geral da arquitetura de Hiperescala
Os mecanismos de banco de dados tradicionais centralizam as funções de gerenciamento de dados em um único processo: mesmo os chamados bancos de dados distribuídos em produção hoje têm várias cópias de um mecanismo de dados monolítico.
Os bancos de dados de hiperescala seguem uma abordagem diferente. A Hiperescala separa o mecanismo de processamento de consulta, onde a semântica de diversos mecanismos de dados divergem, dos componentes que fornecem armazenamento de longo prazo e durabilidade para os dados. Dessa forma, a capacidade de armazenamento pode ser escalonada sem problemas até onde for necessário, até 128 TB para um único banco de dados de Hiperscala.
Toda a comunicação de rede entre componentes de Hiperescala usa a infraestrutura de rede do Azure com redundância interna.
Réplicas secundárias de alta disponibilidade e réplicas nomeadas são nós de computação opcionais que podem ser adicionados sob demanda. Ambas compartilham os mesmos componentes de armazenamento, portanto, não é necessário ter nenhuma cópia de dados para ativar uma nova réplica. Uma réplica geográfica secundária pode ser adicionada sob demanda na mesma região ou em uma região diferente do Azure. Para fins de proteção e redundância de dados, as réplicas secundárias geográficas têm componentes de armazenamento separados daqueles usados pela réplica primária.
O diagrama a seguir ilustra a arquitetura funcional da Hiperescala:
Um banco de dados da Hiperescala contém os seguintes tipos de componentes: nós de computação, servidores de página, o serviço de log e o armazenamento do Azure.
Computação
O nó de computação é onde reside o mecanismo relacional. O nó de computação é onde ocorre o processamento da linguagem, da consulta e da transação. Todas as interações do usuário com um banco de dados da Hiperescala ocorrem por meio de nós de computação. Os nós de computação podem ser configurados para usar a computação sem servidor ou provisionada.
Os nós de computação têm caches locais baseados em SSD chamados de Cache de Dados RBPEX (Extensão do Pool de Buffers Resiliente). O Cache de Dados RBPEX é um cache inteligente de dados de baixa latência que minimiza a necessidade de buscar dados de servidores de páginas remotas.
Os bancos de dados de Hiperescala têm um nó de computação primário onde a carga de trabalho de leitura-gravação e as transações são processadas. Até quatro nós de computação secundários de alta disponibilidade podem ser adicionados sob demanda. Eles atuam como nós de espera ativos para fins de failover e podem servir como nós de computação somente leitura para descarregar cargas de trabalho de leitura quando desejado. As réplicas nomeadas são nós de computação secundários elaborados para habilitar vários cenários de expansão de leitura OLTP adicionais e para oferecer melhor suporte a cargas de trabalho de HTAP (processamento analítico e transacional híbrido). Um nó de computação secundário geográfico pode ser adicionado para fins de recuperação de desastres e para servir como um nó somente leitura a fim de descarregar cargas de trabalho de leitura em uma região diferente do Azure.
No sem servidor, a réplica primária e todas as réplicas de alta disponibilidade ou réplicas nomeadas são dimensionadas de modo automático e independente com base em seu uso. O intervalo de dimensionamento automático de computação para a réplica primária e todas as réplicas nomeadas são configurados de forma independente. O intervalo de dimensionamento automático de todas as réplicas de alta disponibilidade é herdado da configuração de dimensionamento automático especificada por sua réplica nomeada ou réplica primária associada.
O mecanismo de banco de dados em execução nos nós de computação de Hiperescala é o mesmo que das outras camadas de serviço do Banco de Dados SQL do Azure. Quando os usuários interagem com o mecanismo de banco de dados nos nós de computação de Hiperescala, a área de superfície e o comportamento do mecanismo suportados são os mesmos que de outras camadas de serviço, com exceção das limitações conhecidas.
Servidor de página
Servidores de página são sistemas que representam um mecanismo de armazenamento dimensionado. Cada servidor de páginas é responsável por um subconjunto das páginas no banco de dados. Cada servidor de página também tem uma réplica que é mantida para redundância e disponibilidade.
O trabalho de um servidor de páginas é servir páginas de banco de dados para os nós de computação sob demanda e manter as páginas atualizadas à medida que as transações atualizam dados. Os servidores de páginas são mantidos atualizados pela reprodução dos registros de log de transação do serviço de log.
Servidores de página também mantem a cobertura de caches baseados em SSD para melhorar o desempenho. Armazenamento de longo prazo de páginas de dados é mantido no Armazenamento do Azure para durabilidade.
Serviço de log
O serviço de log aceita registros de log de transações que correspondem a alterações de dados da réplica de computação primária. Em seguida, os servidores da página recebem os registros de log do serviço de log e aplicam as alterações às respectivas fatias de dados. Além disso, as réplicas secundárias de computação recebem registros de log do serviço de log e reproduz apenas as alterações nas páginas que já estão no pool de buffers ou no cache RBPEX local. Todas as alterações de dados da réplica de computação primária são propagadas por meio do serviço de log para todas as réplicas de computação secundária e para os servidores da página.
Por fim, os registros de log de transação são enviados para o armazenamento de longo prazo no Armazenamento do Microsoft Azure, que é um repositório de armazenamento virtualmente infinito. Esse mecanismo exclui a necessidade de truncamento frequente de log. Os motivos comuns para o crescimento de logs, como os backups de log ignorados ou a duplicação lenta de dados para réplicas secundárias, não se aplicam ao sistema de hiperescala. O serviço de log tem memória local e caches SSD para acelerar o acesso aos registros de log.
Armazenamento do Azure
O Armazenamento do Microsoft Azure contém todos os arquivos de dados em um banco de dado. Os servidores de páginas mantêm atualizados os arquivos de dados no Armazenamento do Microsoft Azure. Esse armazenamento também é usado para fins de backup e pode ser replicado entre regiões com base na escolha da redundância de armazenamento.
Os backups são implementados usando instantâneos de armazenamento dos arquivos de dados. As operações de restauração usando instantâneos são rápidas, independentemente do tamanho dos dados. Um banco de dados pode ser restaurado para qualquer data/hora dentro do período de retenção do backup.
A Hiperescala dá suporte à redundância de armazenamento configurável. Ao criar um banco de dados de Hiperescala, você pode escolher entre os seguintes tipos de armazenamento padrão do Azure:
- LRS (armazenamento com redundância local)
- ZRS (armazenamento com redundância de zona)
- RA-GRS (armazenamento com redundância geográfica com acesso de leitura)
- RA-GZRS (armazenamento com redundância de zona geográfica com acesso de leitura)
As opções de armazenamento com redundância de zona estão disponíveis nas regiões do Azure com zonas de disponibilidade.
A opção de redundância de armazenamento selecionada será usada durante o tempo de vida do banco de dados para redundância de armazenamento de dados e de armazenamento de backup.