PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Trabalhando para o Postgres-XL 9.5


Tem sido alguns meses ocupados enquanto trabalhamos para fundir o Postgres-XL com a versão mais recente e melhor do PostgreSQL. Postgres-XL é um fork de código aberto do PostgreSQL que fornece uma plataforma escalável para OLTP e Business Intelligence. A versão atual do Postgres-XL é baseada no PostgreSQL 9.2, portanto, carece de todas as melhorias feitas no PostgreSQL nos últimos três anos.

A 2ndQuadrant e outras empresas estão trabalhando para trazer escalabilidade distribuída para o núcleo do PostgreSQL, bem como para construir ferramentas e extensões fora do núcleo. Como parte disso, o Postgres-XL tem vários recursos que gostaríamos de trazer de volta ao núcleo do PostgreSQL, então o 2ndQuadrant assumiu a tarefa de atualizar a base de código do Postgres-XL para a versão mais recente do PostgreSQL como o primeiro passo. Após mais de 3 meses de trabalho, o PostgreSQL 9.5 ainda está em fase alfa, então queríamos dar um relatório de progresso de como o trabalho está avançando. Também preciso dizer as palavras mágicas:este trabalho em andamento no Postgres-XL faz parte do projeto AXLE, financiado pela União Europeia sob o contrato de doação 318633.

Preparação para a Mesclagem

Como o PostgreSQL e o Postgres-XL usam o GIT como sistema de controle de origem, isso torna o processo de mesclagem muito mais simples, pois o GIT fornece muitas ferramentas para auxiliar o processo. Mas assim que tentamos a fusão, enfrentamos o primeiro obstáculo.

Percebemos que o repositório Postgres-XL atual é baseado em uma versão menor 9.2 mais antiga do PostgreSQL. Isso significa que houve commits e mudanças no branch master do Postgres-XL que nunca foram feitos no branch master do PostgreSQL ou tiveram ids de commit diferentes. Portanto, mesclar com o branch master do PostgreSQL gerou muito mais conflitos do que o esperado. Portanto, a primeira tarefa que devemos realizar foi rebasear o repositório Postgres-XL 9.2 em um ponto de confirmação posterior. Obviamente, isso exigia uma pisada cuidadosa, certificando-se de que nada quebrasse durante o processo. Depois que fizemos o rebase básico, também mesclamos todas as correções de bugs e aprimoramentos do Postgres-XL, criamos uma ramificação estável do Postgres-XL 9.2 e mesclamos a ramificação 9.2 com a última versão secundária do PostgreSQL 9.2 disponível.

Desafios enfrentados durante a fusão

A fusão real com o branch master do PostgreSQL também não foi uma tarefa fácil. Observe que estávamos pulando 3 grandes lançamentos do PostgreSQL, que representaram quase 3 anos de trabalho de desenvolvimento. Felizmente, git-mergetool é muito útil para fusões de grande escala. Você pode usar seu editor favorito (vimdiff no nosso caso) para ver bem os conflitos de mesclagem e resolvê-los. Embora alguns dos conflitos sejam diretos e exijam pequenos ajustes, muitos exigem leitura cuidadosa e compreensão do código. Embora não seja trivial oferecer suporte a todos os novos recursos, tentamos preservar o máximo possível e tivemos bastante sucesso.

O outro grande desafio foi mesclar as mudanças na documentação. Como o projeto Postgres-XL criou uma cópia da documentação SGML existente, a mesclagem do GIT com o branch master não gerou nenhuma atualização na cópia. Esta mesclagem manual necessária. Para garantir que isso não seja necessário novamente em futuras mesclagens, agora fazemos as alterações na documentação no local.

O que vem a seguir?

Há muitas coisas que precisam ser concluídas antes que possamos liberar o Postgres-XL 9.5 para o público em geral:
  1. Aprimore a cobertura do teste de regressão para Postgres-XL
  2. Corrigir bugs e adicionar suporte para novos recursos
  3. Faça testes e ajustes de desempenho sistemáticos
  4. Crie a ramificação Postgres-XL 9.5 e mescle com a última ramificação estável do PostgreSQL 9.5

Ainda não estamos prontos para a revisão do Postgres-XL, mas esperamos que o Postgres-XL 9.5 Beta esteja pronto quase ao mesmo tempo que o PostgreSQL 9.5 Beta.

Procure minha próxima postagem no blog em cerca de um mês para a próxima atualização.