Az egyik legismertebb open source adatbázis motor, a PostgreSQL , mely kiváló adattárházak futtatására és BI eszközök adatokkal történő kiszolgálására is, megjelentette legújabb, 9.5-ös verzióját számos olyan hiánypótló megoldással, mind a „beépített” UPSERT lehetőséggel, illetve a párhuzamosan több szálon futó VACUUM lehetőségével.
A PostgreSQL mindig is személyes kedvenc open source adatbázis megoldásom volt, amióta csak RDBMS-ekkel foglalkozok. Tudom, hogy a MySQL az elmúlt másfél évtizedben rengeteg újításon és fejlesztésen esett át, különösen mióta a Sun és az Oracle tulajdonába került, illetve az is tény, hogy eltérő célú a felhasználása és a fejlesztési iránya a két relációs adatbázis kezelőnek, de előszeretettel hasonlítják egymáshoz a két motort és számomra bizony mindig is a „Postgre” volt a befutó.
Ha megnézzük a PostgreSQL fejlesztési irányát, egyértelműen látszik, hogy próbál lépést tartani mind a szaporodó noSQL adatbázis-kezelőkkel, mind a közvetlen konkurenciát jelentő RDBMS-ekkel. Az elmúlt kiadásokban számos újítás jelent meg, mint például az XML és JSON tárolás/feldolgozás megkönnyítése, vagy a foreign data wrapper-ek bevezetése (még a dokumentum alapú népszerű MongoDB adatbázissal is képes integrálódni) és igyekeztek számos olyan funkciót átvenni a „nagyoktól” (lásd window functions), melyek hatására egy projekt tervezésekor számottevő alternatívaként fordulhat meg a szoftvertechnológiával és adatbázis-tervezéssel foglalkozók fejében a PostgreSQL, ha a feldolgozandó adatok mennyisége maximum pár terrabájtban mérhető.
A mostani kiadása is ezt az utat járja, hiszen tovább csiszoltak a JSON adattípus kezelésén és feldolgozásán, egyszerűsítették más szervereken tanyázó külső adatbázistáblák becsatolását (IMPORT FOREIGN SCHEMA), valamint ezekből lokális táblák származtatását, bővítették az SQL utasításkészletet egy UPSERT jellegű szerkezettel (ez elég hiánypótló), szintén bővítették az adatok aggregálási és csoportosítási lehetőségeit a CUBE és SET utasításokkal, hogy csak a legfontosabbakról beszéljünk.
Számomra a legérdekesebbnek az UPSERT, valamint a GROUP BY CUBE(), GROUP BY SETS() utasítások tűnnek, mivel számos projektben kellett már adatokat analitikai célokra előkészíteni és ezek hiánya sokszor állított kihívások elé. Az adatok ábrázolása ugyanis korántsem olyan bonyolult, mind azok megfelelő előkészítése az egyes analitikai céloknak megfelelően, ahol alapvető elvárás a szükséges adatszettek gyors elkészítése, folyamatos frissítésük biztosítása és a kiugró szerverterhelések minimalizálása, de legalábbis kontrollálása. Remélem, a mindennapi gyakorlatban nagy hasznomra lesz ez a kiadás, úgyhogy most ALT+TAB és irány a pgAdmin.