sql >> Databasteknik >  >> RDS >> PostgreSQL

Arbetar mot Postgres-XL 9.5

Det har varit några hektiska månader när vi arbetar för att slå samman Postgres-XL med den senaste och bästa versionen av PostgreSQL. Postgres-XL är en öppen källkodsgaffel av PostgreSQL som tillhandahåller en skalbar plattform för OLTP och Business Intelligence. Den nuvarande utgåvan av Postgres-XL är baserad på PostgreSQL 9.2, så den saknar alla förbättringar som gjorts av PostgreSQL under de senaste tre åren.

2ndQuadrant och andra företag arbetar med att föra in distribuerad skalbarhet i PostgreSQL-kärnan samt bygga verktyg och tillägg utanför kärnan. Som en del av det har Postgres-XL ett antal funktioner som vi skulle vilja ta tillbaka till kärnan i PostgreSQL, så 2ndQuadrant har tagit upp uppgiften att uppdatera Postgres-XL-kodbasen till den senaste PostgreSQL-versionen som första steg. Efter mer än 3 månaders arbete är PostgreSQL 9.5 fortfarande i alfastadiet, så vi ville ge en lägesrapport om hur arbetet fortskrider. Jag behöver också säga de magiska orden:Det här pågående arbetet med Postgres-XL är en del av AXLE-projektet, finansierat av Europeiska unionen under bidragsavtal 318633.

Förberedelse för sammanslagning

Eftersom PostgreSQL och Postgres-XL båda använder GIT som källkontrollsystem, gör det sammanslagningsprocessen mycket enklare eftersom GIT tillhandahåller många verktyg för att hjälpa processen. Men så fort vi försökte slå samman, stod vi inför det första hindret.

Vi insåg att det nuvarande Postgres-XL-förrådet är baserat på en äldre mindre 9.2-version av PostgreSQL. Det betyder att det fanns commits och ändringar i Postgres-XL master-grenen som antingen aldrig gjordes till PostgreSQL:s master-gren eller hade olika commit-ID. Så sammanslagning med PostgreSQL master-gren skapade mycket fler konflikter än vad vi hade förväntat oss av andra. Så den första uppgiften vi måste utföra var att ombasera Postgres-XL 9.2-förvaret på en senare commit-punkt. Detta krävde uppenbarligen noggrann trampning, se till att inget går sönder under processen. När vi hade gjort den grundläggande ombasen slog vi också ihop alla Postgres-XL buggfixar och förbättringar, skapade en Postgres-XL 9.2 stabil gren och slog ihop 9.2 grenen med den senaste tillgängliga PostgreSQL 9.2 mindre versionen.

Utmaningar som möter under sammanslagningen

Själva sammanslagningen med PostgreSQL master-gren var inte heller en lätt uppgift. Observera att vi hoppade över 3 stora utgåvor av PostgreSQL, vilket nästan stod för 3 års utvecklingsarbete. Tack och lov är git-mergetool väldigt praktiskt för så storskaliga sammanslagningar. Du kan använda din favoritredigerare (vimdiff i vårt fall) för att snyggt se sammanslagningskonflikterna och lösa dem. Även om vissa av konflikterna är enkla och kräver mindre justeringar, kräver många noggrann läsning och förståelse av koden. Även om det inte är trivialt att stödja alla nya funktioner, försökte vi bevara så mycket som möjligt och vi har varit ganska framgångsrika.

Den andra stora utmaningen var att slå samman dokumentationsförändringar. Eftersom Postgres-XL-projektet hade skapat en kopia av den befintliga SGML-dokumentationen, gav GIT-fusionen med huvudgrenen inga uppdateringar av kopian. Denna krävde manuell sammanslagning. För att säkerställa att detta inte krävs igen vid framtida sammanslagningar, gör vi nu dokumentationsändringarna på plats.

Vad händer härnäst?

Det finns många saker som måste slutföras innan vi kan släppa Postgres-XL 9.5 till allmänheten:

  1. Förbättra täckning av regressionstest för Postgres-XL
  2. Åtgärda buggar och lägg till stöd för nya funktioner
  3. Gör systematiska prestandatester och justeringar
  4. Skapa Postgres-XL 9.5-gren och slå samman med den senaste stabila PostgreSQL 9.5-grenen

Vi är ännu inte redo för granskning av Postgres-XL, men vi förväntar oss att Postgres-XL 9.5 Beta är klar ungefär samtidigt som PostgreSQL 9.5 Beta.

Leta efter mitt nästa blogginlägg om ungefär en månad för nästa uppdatering.


  1. Materialiserad vy vs. tabeller:Vilka är fördelarna?

  2. Hur man använder EXISTS Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 125

  3. Är det möjligt att köra ett SQLPLUS-skript på en fil kodad som UTF-8 med BOM

  4. uppdatera flera rader med limit i mysql?