BT

Postgres-XC: Uma solução de cluster para o PostgreSQL

por Marcelo Costa em 12 Nov 2012 |

O Postgres-XC é uma solução de cluster transparente baseada no PostgreSQL 9.1, com escalabilidade de escrita, multimaster e síncrona (qualquer atualização para qualquer servidor master é visível nos demais servidores mestre imediatamente), e é construído sob uma arquitetura shared-nothing. Recentemente, a versão 1.0.1 foi liberada com correção de vários bugs.

(Um cluster de banco de dados é uma coleção de servidores de banco de dados, que armazenam e processam dados usando hardware compartilhado. Esse compartilhamento busca satisfazer a necessidade de recursos tais como mais espaço de armazenamento, e aumenta o rendimento e a disponibilidade. )

Entre os recursos existentes no Postgres-XC, destacam-se:

  • Escalabilidade de escrita: o Postgres-XC pode ser configurado para uso com os servidores de banco de dados que forem necessários, para atender a uma necessidade específica. É capaz de lidar com uma quantidade maior de escrita em comparação a uma instância única de servidor PostgreSQL;
  • Multi-master: os clientes podem se conectar a múltiplos servidores de banco de dados, com cada servidor de BD fornecendo uma visão única, consistente e global do cluster;
  • Síncrona: uma gravação originada em qualquer um dos servidores master torna-se imediatamente visível para outras transações em execução nos outros servidores master;
  • Transparente: as aplicações não precisam se preocupar sobre como os dados são armazenados internamente nos múltiplos servidores de banco de dados.

Arquitetura do Postgres-XC

O Postgres-XC é composto de um gerenciador global de transações (GTM), coordenadores e datanodes, conforme a figura abaixo:

O gerenciador global de transações (GTM) reúne e gerencia as informações sobre as atividades transacionais no Postgres-XC, assim como todas as questões referentes a identificadores globais entre transações (para manter uma visão consistente do banco de dados em todos os nós). O GTM fornece propriedades ACID e suporte a outros dados globais, como sequências e timestamps. Note que o GTM não armazena nenhum dado dos usuários, exceto informações de controle.

Os coordenadores (masters) fornecem um ponto de contato entre a aplicação e o cliente. São os responsáveis ​​por analisar e executar as consultas dos clientes e retornar os resultados. Não armazenam dados do usuário em si; reúnem esses dados nos datanodes com a ajuda de consultas SQL, disparadas por meio de uma interface nativa ao PostgreSQL.

Os datanodes armazenam os catálogos de dados do usuário. Executam as consultas recebidas do coordenador e retornam os resultados ao coordenador.

Distribuição dos dados e escalabilidade

O Postgres-XC permite duas opções para armazenamento de tabelas nos datanodes. Uma é por meio de tabelas distribuídas em um conjunto de datanodes, usando estratégias como hash, round-robin, ou particionamento em módulos. Outra opção é por meio de replicação de tabelas em um determinado conjunto de datanodes, utilizando replicação em nível de instrução. Essa alternativa oferece melhor desempenho, se comparada a soluções baseadas em replicação de logs, uma vez que o tamanho de uma instrução é muito menor que o de logs.

Outras vantagens, como alta disponibilidade e avaliação de performance também estão disponíveis, e o time de desenvolvimento já trabalha na adição de novas funcionalidades para a próxima versão. Algumas melhorias previstas:

  • Migração para versão 9.2 do PostgreSQL;
  • Funcionalidade para redistribuição de dados, permitindo a distribuição de tabelas no cluster com um simples comando ALTER TABLE;
  • Novas funcionalidades para adição e remoção à quente de novos nós;
  • Adição de triggers e melhorias no planejador;
  • Inclusão de restrições globais.

O roadmap do projeto possui um roteiro abrangente das funcionalidades a serem implementadas. O Postgres-XC encontra-se sob a mesma licença do PostgreSQL, e atualmente é gerido por uma entidade denominada "Postgres-XC Development Group".

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Replicação by Laercio DAL saSSO

Gostaria de saber se existe uma forma de trabalhar com o postgres-xc cluster x cliente se existe preciso de ajuda para configuralo, pois servidor esta funcionando perfeitamente bem so nao seu como vou fazer pois tenho mais de 600 cliente com postgresql e preciso replicar eles para os servidor postgres-xc pois no cliente so pode ter um banco de dados
como servidor funciona uma beleza mais para cliente ainda não entendi como configurar o postgres-xc
Grato
Laércio Dal Sasso
Infor Pratica

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

1 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT