PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Verso Postgres-XL 9.5

Sono stati alcuni mesi impegnativi mentre lavoriamo per unire Postgres-XL con l'ultima e più grande versione di PostgreSQL. Postgres-XL è un fork open source di PostgreSQL che fornisce una piattaforma scalabile per OLTP e Business Intelligence. L'attuale versione di Postgres-XL è basata su PostgreSQL 9.2, quindi manca di tutti i miglioramenti apportati a PostgreSQL negli ultimi tre anni.

2ndQuadrant e altre società stanno lavorando per portare la scalabilità distribuita nel core di PostgreSQL e per creare strumenti ed estensioni al di fuori del core. Come parte di ciò, Postgres-XL ha una serie di funzionalità che vorremmo riportare nel core di PostgreSQL, quindi 2ndQuadrant ha assunto il compito di aggiornare la base di codice di Postgres-XL all'ultima versione di PostgreSQL come primo passo. Dopo più di 3 mesi di lavoro, PostgreSQL 9.5 è ancora in fase alpha, quindi volevamo fornire un rapporto sullo stato di avanzamento del lavoro. Devo anche dire le parole magiche:questo lavoro in corso su Postgres-XL fa parte del progetto AXLE, finanziato dall'Unione Europea con la convenzione di sovvenzione 318633.

Preparazione per l'unione

Poiché PostgreSQL e Postgres-XL utilizzano entrambi GIT come sistema di controllo del codice sorgente, rende il processo di unione molto più semplice poiché GIT fornisce molti strumenti per assistere il processo. Ma non appena abbiamo provato l'unione, abbiamo affrontato il primo ostacolo.

Ci siamo resi conto che l'attuale repository Postgres-XL si basa su una versione minore precedente 9.2 di PostgreSQL. Ciò significa che c'erano commit e modifiche nel ramo master di Postgres-XL che non sono mai stati effettuati nel ramo principale di PostgreSQL o avevano ID commit diversi. Quindi l'unione con il ramo principale di PostgreSQL ha generato molti più conflitti di quanto ci saremmo aspettati. Quindi il primo compito che dobbiamo compiere è stato ribasare il repository Postgres-XL 9.2 su un punto di commit successivo. Ciò ovviamente richiedeva un attento calpestio, assicurandosi che nulla si rompesse durante il processo. Dopo aver eseguito il rebase di base, abbiamo anche unito tutte le correzioni di bug e i miglioramenti di Postgres-XL, creato un ramo stabile di Postgres-XL 9.2 e unito il ramo 9.2 con l'ultima versione minore disponibile di PostgreSQL 9.2.

Sfide affrontate durante l'unione

Anche l'effettiva fusione con il ramo principale di PostgreSQL non è stato un compito facile. Nota che stavamo saltando 3 versioni principali di PostgreSQL, che rappresentavano quasi 3 anni di lavoro di sviluppo. Per fortuna, git-mergetool è molto utile per unioni su larga scala. Puoi usare il tuo editor preferito (vimdiff nel nostro caso) per vedere bene i conflitti di unione e risolverli. Mentre alcuni dei conflitti sono diretti e richiedono piccoli aggiustamenti, molti richiedono un'attenta lettura e comprensione del codice. Sebbene non sia banale supportare tutte le nuove funzionalità, abbiamo cercato di preservare il più possibile e ci siamo riusciti.

L'altra grande sfida era l'unione delle modifiche alla documentazione. Poiché il progetto Postgres-XL aveva creato una copia della documentazione SGML esistente, l'unione di GIT con il ramo principale non ha prodotto alcun aggiornamento alla copia. Questa ha richiesto l'unione manuale. Per garantire che ciò non sia più necessario in future fusioni, apportiamo ora le modifiche alla documentazione sul posto.

Qual ​​è il prossimo passo?

Ci sono molte cose che devono essere completate prima di poter rilasciare Postgres-XL 9.5 al pubblico in generale:

  1. Migliora la copertura dei test di regressione per Postgres-XL
  2. Correggi i bug e aggiungi il supporto per le nuove funzionalità
  3. Esegui test sistematici delle prestazioni e messa a punto
  4. Crea un ramo Postgres-XL 9.5 e uniscilo all'ultimo ramo PostgreSQL 9.5 stabile

Non siamo ancora pronti per la revisione di Postgres-XL, ma prevediamo che Postgres-XL 9.5 Beta sarà pronto più o meno nello stesso periodo di PostgreSQL 9.5 Beta.

Cerca il mio prossimo post sul blog tra circa un mese per il prossimo aggiornamento.