Przez kilka miesięcy pracowaliśmy nad połączeniem Postgres-XL z najnowszą i najlepszą wersją PostgreSQL. Postgres-XL to open source'owy fork PostgreSQL, który zapewnia skalowalną platformę dla OLTP i Business Intelligence. Obecne wydanie Postgres-XL jest oparte na PostgreSQL 9.2, więc brakuje w nim wszystkich ulepszeń wprowadzonych do PostgreSQL w ciągu ostatnich trzech lat.
2ndQuadrant i inne firmy pracują nad wprowadzeniem rozproszonej skalowalności do rdzenia PostgreSQL, a także budowaniem narzędzi i rozszerzeń poza rdzeniem. W ramach tego Postgres-XL ma wiele funkcji, które chcielibyśmy przywrócić do rdzenia PostgreSQL, więc w pierwszym kroku 2ndQuadrant podjął się zadania aktualizacji bazy kodu Postgres-XL do najnowszej wersji PostgreSQL. Po ponad 3 miesiącach pracy PostgreSQL 9.5 jest nadal w fazie alfa, więc chcieliśmy przedstawić raport z postępów prac. Muszę też powiedzieć magiczne słowa:ta trwająca praca nad Postgres-XL jest częścią projektu AXLE, finansowanego przez Unię Europejską w ramach umowy o grant 318633.
Przygotowanie do połączenia
Ponieważ zarówno PostgreSQL, jak i Postgres-XL używają GIT jako systemu kontroli źródeł, proces scalania jest znacznie prostszy, ponieważ GIT zapewnia wiele narzędzi wspomagających ten proces. Ale gdy tylko spróbowaliśmy połączyć, napotkaliśmy pierwszą przeszkodę.
Zdaliśmy sobie sprawę, że obecne repozytorium Postgres-XL jest oparte na starszej wersji 9.2 PostgreSQL. Oznacza to, że istniały zatwierdzenia i zmiany w gałęzi master Postgres-XL, które albo nigdy nie zostały wprowadzone do gałęzi master PostgreSQL, albo miały różne identyfikatory zatwierdzenia. Zatem scalenie z gałęzią master PostgreSQL spowodowało o wiele więcej konfliktów, niż byśmy się spodziewali. Więc pierwszym zadaniem, które musimy wykonać, było ponowne oparcie repozytorium Postgres-XL 9.2 na późniejszym punkcie zatwierdzenia. To oczywiście wymagało ostrożnego stąpania, upewniając się, że nic się nie złamie podczas procesu. Po wykonaniu podstawowej rebase, połączyliśmy również wszystkie poprawki i ulepszenia Postgres-XL, stworzyliśmy stabilną gałąź Postgres-XL 9.2 i połączyliśmy gałąź 9.2 z najnowszą dostępną pomniejszą wersją PostgreSQL 9.2.
Wyzwania stojące przed połączeniem
Samo połączenie z główną gałęzią PostgreSQL również nie było łatwym zadaniem. Zauważ, że przeskakiwaliśmy 3 główne wydania PostgreSQL, co prawie odpowiadało 3 latom prac rozwojowych. Na szczęście narzędzie git-mergetool jest bardzo przydatne w przypadku scalania na dużą skalę. Możesz użyć swojego ulubionego edytora (w naszym przypadku vimdiff), aby ładnie zobaczyć konflikty scalania i je rozwiązać. Podczas gdy niektóre konflikty są proste i wymagają drobnych poprawek, wiele z nich wymaga uważnego przeczytania i zrozumienia kodu. Chociaż obsługa wszystkich nowych funkcji nie jest prosta, staraliśmy się zachować jak najwięcej i odnieśliśmy spory sukces.
Drugim dużym wyzwaniem było scalenie zmian w dokumentacji. Ponieważ projekt Postgres-XL stworzył kopię istniejącej dokumentacji SGML, połączenie GIT z gałęzią master nie przyniosło żadnych aktualizacji kopii. Wymagało to ręcznego scalenia. Aby upewnić się, że nie będzie to wymagane ponownie w przyszłych scaleniach, wprowadzamy teraz zmiany w dokumentacji.
Co dalej?
Jest wiele rzeczy, które należy wykonać, zanim będziemy mogli udostępnić Postgres-XL 9.5 ogółowi społeczeństwa:
- Zwiększ zasięg testu regresji dla Postgres-XL
- Napraw błędy i dodaj obsługę nowych funkcji
- Przeprowadzaj systematyczne testy wydajności i strojenie
- Utwórz gałąź Postgres-XL 9.5 i połącz ją z najnowszą stabilną gałęzią PostgreSQL 9.5
Nie jesteśmy jeszcze gotowi na recenzję Postgres-XL, ale spodziewamy się, że Postgres-XL 9.5 Beta będzie gotowy mniej więcej w tym samym czasie co PostgreSQL 9.5 Beta.
Poszukaj mojego następnego wpisu na blogu za około miesiąc, aby uzyskać następną aktualizację.