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".
Replicação
by Laercio DAL saSSO,
Replicação
by Laercio DAL saSSO,
Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!
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