O AlloyDB para PostgreSQL é um serviço de banco de dados totalmente gerenciado e compatível com PostgreSQL, projetado para as cargas de trabalho mais exigentes, incluindo processamento analítico e transacional híbrido. O AlloyDB integra um mecanismo de banco de dados criado pelo Google a uma arquitetura de vários nós baseada na nuvem para oferecer performance, confiabilidade e disponibilidade de nível empresarial.
Como o AlloyDB funciona
Um aplicativo se conecta a instâncias do AlloyDB usando protocolos e técnicas padrão do PostgreSQL. Em seguida, o aplicativo usa a sintaxe de consulta do PostgreSQL para trabalhar com o banco de dados.
Por baixo da superfície, o AlloyDB usa uma hierarquia baseada na nuvem de componentes e recursos projetados para maximizar a disponibilidade dos seus dados e otimizar o desempenho e a capacidade de processamento das consultas. Google CloudAs ferramentas administrativas permitem monitorar a integridade da implantação do AlloyDB, ajustando a escala e o tamanho para se adequar melhor às demandas variáveis da sua carga de trabalho.
Diferença arquitetônica do AlloyDB em relação ao PostgreSQL padrão
As implantações tradicionais do PostgreSQL acoplam o mecanismo de banco de dados que processa consultas com o armazenamento em que os dados residem, geralmente no mesmo servidor. O AlloyDB usa uma arquitetura desagregada. As camadas de computação e armazenamento são separadas e oferecem escalonamento individual.
Para escalonar uma configuração típica do PostgreSQL, é necessário fazer o escalonamento vertical (upgrade para um servidor maior) ou horizontal (para leituras usando réplicas de leitura que também duplicam dados).
O design desagregado do AlloyDB, criado no sistema de arquivos distribuído do Google, oferece várias vantagens:
- Escalonamento independente: é possível aumentar ou diminuir os recursos de computação, especificamente nós e instâncias, com base nas demandas de consulta sem provisionar ou desprovisionar armazenamento. Também é possível escalonar horizontalmente nós somente leitura para escalonabilidade de leitura, sem afetar a disponibilidade. À medida que os dados crescem, o armazenamento é escalonado, sem afetar a computação.
- Melhoria do desempenho: com um mecanismo de armazenamento otimizado nativo da nuvem, o AlloyDB oferece desempenho rápido de consultas transacionais e analíticas, resultado de camadas de armazenamento em cache inteligentes e gerenciamento avançado de E/S.
- Gerenciamento simplificado: a separação de responsabilidades permite o gerenciamento automático de muitas operações de banco de dados, incluindo replicação, backups e aplicação de patch, que são tarefas manuais no PostgreSQL autogerenciado.
- Alta disponibilidade e durabilidade: o armazenamento de dados redundantes na camada durável abrange várias zonas de disponibilidade, oferecendo failover e recuperação automáticos sem perda de dados, independente da integridade da instância.
Essa diferença arquitetônica fundamental se manifesta na hierarquia de recursos do AlloyDB usando clusters como os contêineres de banco de dados lógicos abrangentes, com nós fornecendo a capacidade computacional e instâncias servindo como os pontos de conexão do aplicativo, enquanto os dados persistem em uma camada de armazenamento separada e desagregada.
O diagrama a seguir ilustra um exemplo de cluster dimensionado para lidar com cargas de trabalho exigentes, com a inclusão de várias instâncias de pool de leitura com balanceamento de carga:
Clusters
Uma única implantação do AlloyDB em uma determinada região Google Cloudorganiza todos os recursos em um cluster. Isso inclui todos os seus bancos de dados, registros e outros metadados. O AlloyDB implanta todos os recursos de um cluster em uma única nuvem privada virtual (VPC) e usa um sistema de arquivos baseado na nuvem projetado pelo Google e otimizado para o AlloyDB.
Nós e instâncias
Um cluster contém vários nós, que são instâncias de máquina virtual dedicadas à execução do mecanismo de banco de dados compatível com PostgreSQL que os aplicativos usam para consultar os dados do cluster. O AlloyDB organiza os nós em instâncias, cada uma com um endereço IP privado e estático na sua VPC. Na prática, seus aplicativos se conectam a instâncias nesses endereços IP usando protocolos do PostgreSQL. Em seguida, as instâncias transmitem consultas SQL aos nós.
O AlloyDB tem dois tipos de instâncias:
Instância principal:cada cluster tem uma instância principal, que fornece um ponto de acesso de leitura ou gravação aos seus dados. Uma instância principal pode ser de alta disponibilidade (HA) ou básica.
Instância principal de alta disponibilidade:uma instância principal de alta disponibilidade tem dois nós: um ativo e um em espera. O AlloyDB monitora a disponibilidade do nó ativo e promove automaticamente o nó em espera para ativo quando necessário.
Instância básica:ambientes que não são de produção e não exigem alta disponibilidade podem usar instâncias básicas. Uma instância básica tem apenas um nó, sem um nó em espera. Para mais informações, consulte Reduzir custos usando instâncias básicas.
Instância do pool de leitura:seu cluster pode ter uma ou mais instâncias do pool de leitura, cada uma contendo um ou mais nós somente leitura, até um máximo de 20 em todo o cluster. O AlloyDB faz o balanceamento de carga automático de todas as solicitações enviadas a uma instância de pool de leitura, roteando-as para os nós da instância.
Para casos de uso mais simples, um cluster pode ter apenas a instância principal, sem pools de leitura, e os aplicativos usam a instância principal para todas as consultas. Para trabalhos mais exigentes, é possível adicionar instâncias de pool de leitura ao cluster. Em seguida, configure seus aplicativos de relatórios ou análises para enviar solicitações de leitura a eles. Essa técnica reduz a carga na instância principal e melhora a escalonabilidade distribuindo a carga em vários nós.
É possível adicionar, remover ou ajustar a contagem de nós de uma instância de pool de leitura a qualquer momento, conforme as necessidades do aplicativo mudam. Também é possível redimensionar a memória e a contagem de vCPUs dos nós constituintes de uma instância sempre que necessário, com tempo de inatividade mínimo. O escalonamento das instâncias não apresenta risco de perda de dados porque o AlloyDB armazena os dados na camada de armazenamento flexível do cluster, e não nas instâncias.
Principais recursos
O AlloyDB se diferencia de uma instalação padrão do PostgreSQL de várias maneiras, além das vantagens de escalonamento vertical e horizontal inerentes à arquitetura de vários nós descrita anteriormente. As seções a seguir analisam mais detalhadamente os principais recursos do AlloyDB.
Recursos de banco de dados automáticos e adaptáveis
O mecanismo de banco de dados totalmente compatível com PostgreSQL que alimenta todos os nós do AlloyDB tem vários recursos que analisam continuamente a estrutura e a frequência das consultas processadas pelas instâncias, usando essas informações para sugerir melhorias no esquema ou aplicar otimizações automaticamente:
Um consultor de índice ajuda você a encontrar oportunidades para otimizar o esquema do banco de dados usando novos índices com base nos seus padrões de uso.
Um mecanismo colunar pode acelerar o desempenho das consultas analíticas armazenando dados na memória usando um formato colunar. Isso permite que o AlloyDB use técnicas de processamento avançadas para verificar com eficiência uma grande quantidade de dados da tabela quando necessário.
Uma variação adaptativa do recurso de autovacuum de dados desatualizados do PostgreSQL ajusta automaticamente os parâmetros relacionados à limpeza para se adequar melhor ao formato da sua carga de trabalho.
Os sistemas automáticos de gerenciamento de memória e armazenamento aproveitam o ambiente baseado na nuvem criado pelo Google em que o AlloyDB é executado, alocando e liberando memória e armazenamento continuamente conforme necessário para manter o cluster funcionando com desempenho e eficiência de recursos ideais.
Alta disponibilidade
Por padrão, um cluster do AlloyDB oferece alta disponibilidade (HA) por meio dos nós redundantes da instância principal, localizados em duas zonas diferentes, com failover automático.
Clusters que operam em ambientes de não produção e não exigem alta disponibilidade podem usar instâncias principais básicas de zona única.
Adicionar instâncias de pool de leitura com pelo menos dois nós cria mais pontos de acesso balanceados por carga, multizonais e de alta disponibilidade aos seus dados. Todas as instâncias do pool de leitura são executadas de forma independente da instância principal.
Para mais informações sobre considerações específicas de cada região, consulte Geografia e regiões.
Backup de dados e recuperação de desastres
O AlloyDB tem um sistema contínuo de backup e recuperação que permite criar um novo cluster com base em qualquer ponto no tempo dentro de um período de armazenamento ajustável. Isso permite uma recuperação rápida de acidentes de perda de dados.
Além disso, o AlloyDB pode criar e armazenar backups completos dos dados do cluster, sob demanda ou em uma programação regular. A qualquer momento, você pode restaurar um backup para um novo cluster do AlloyDB que contenha todos os dados do cluster original no momento da criação do backup.
Para mais informações, consulte Sobre backups.
Como outro método de recuperação de desastres, é possível fazer a replicação entre regiões criando clusters secundários em regiões separadas do Google Cloud. O AlloyDB transmite dados de forma assíncrona de um cluster principal designado para cada um dos clusters secundários. Sempre que necessário, é possível promover um cluster secundário para um cluster do AlloyDB completo com instâncias principais e de pool de leitura.
Para mais informações, consulte Sobre a replicação entre regiões.
Segurança e controle de acesso
É possível configurar um cluster para exigir conexão com o proxy de autenticação seguro do AlloyDB, que usa o Google Cloud Identity Access and Management (IAM) para controle de acesso. Para mais informações, consulte Autorização.
O AlloyDB usa o sistema padrão de função do usuário do PostgreSQL para autenticação, introduzindo algumas funções adicionais específicas do AlloyDB. Para mais informações, consulte Gerenciar papéis de usuário do AlloyDB.
Criptografia
Por padrão, o AlloyDB protege todos os dados em repouso usando os métodos de criptografia do Google. Se você precisar criptografar seus dados usando uma chave fornecida por você, especifique uma chave de criptografia gerenciada pelo cliente (CMEK) ao criar um cluster. Em seguida, o AlloyDB usa a chave CMEK para criptografar todos os dados gravados nesse cluster.
A CMEK também se aplica a backups. É possível especificar uma chave da CMEK ao criar um backup sob demanda, configurar uma programação de backup ou restaurar de um backup.
Para mais informações, consulte Sobre a CMEK.
Manutenção sem interrupção
As operações de manutenção do AlloyDB são projetadas para minimizar interrupções no seu banco de dados. As instâncias primárias e secundárias têm um tempo de inatividade de menos de um segundo, enquanto os pools de leitura permanecem disponíveis continuamente sem tempo de inatividade. Isso é feito preparando servidores de substituição e trocando-os rapidamente pelos servidores ativos quando estiverem prontos. Durante esse processo, todas as conexões ativas com o banco de dados são interrompidas momentaneamente. Você pode continuar usando seu banco de dados normalmente durante todo esse processo.
Embora esse processo de substituição garanta um tempo de inatividade mínimo, a operação geral pode levar vários minutos, conforme indicado no console Google Cloud e na Google Cloud CLI.
Essas operações incluem tarefas periódicas executadas pelo Google e tarefas manuais, como configuração de flags e redimensionamento de instâncias. Se você quiser aplicar uma atualização imediatamente, mesmo que isso signifique um tempo de inatividade maior, use a flag de banco de dados FORCE_APPLY
.
Suporte a extensões
O AlloyDB inclui suporte para várias extensões conhecidas do PostgreSQL. Para conferir a lista completa, consulte Extensões de banco de dados compatíveis.
Uma alternativa autohospedada: AlloyDB Omni
Como alternativa à execução do AlloyDB no Google Cloud, o Google oferece o AlloyDB Omni. Com essa edição simplificada e para download do AlloyDB, é possível executar o poderoso mecanismo de banco de dados no seu próprio ambiente de computação baseado em Linux, onde quer que ele esteja.
Para mais informações, consulte Sobre o AlloyDB Omni.