Naše serverové služby sme rozšírili o jednu z najpopulárnejších databáz a výhercu ceny Databáza roka 2020 – PostgreSQL. V tomto článku si ukážeme, ako PostgreSQL vznikla, čo ponúka a v čom sa líši od obľúbenej MySQL databázy.
Obsah:
2. Čo je PostgreSQL databáza a ako vznikla?
4. Aký je rozdiel medzi PostgreSQL a MySQL?
5. Je PostgreSQL vhodná pre váš projekt?
Čo je to databáza?
V nedávnom článku sme sa pozreli na to, čo je to databáza a aký je rozdiel medzi MySQL a MariaDB – dvoma populárnymi favoritmi vo svete open-source databáz. Ani zďaleka však nie sú tým jediným, čo open-source ponúka. Na 4. mieste v rebríčku najpoužívanejších databáz nájdeme PostgreSQL, voľne šíriteľnú alternatívu nielen k MySQL a MariaDB, ale aj k proprietárnym (obmedzeným pre používanie a kopírovanie) databázam, ako je Oracle, IBM či Microsoft SQL Server.
Čo je PostgreSQL databáza a ako vznikla?
Vývoj PostgreSQL začal na univerzite Berkeley, v projekte Ingres, ktorý viedol Michael Stonebraker. Ten z neho v roku 1982 odišiel s ambíciou presadiť ho na komerčnom trhu, no čaro akademického prostredia ho o 3 roky neskôr prilákalo vrátiť sa. Po návrate založil post-Ingres, projekt, ktorý mal priniesť riešenia na mnohé problémy vtedajších DBMS (systémov na správu databáz). Výsledkom projektu bol v roku 1988 prototyp Postgres, objektovo-relačný DBMS, ktorý bol v júni 1989 uvedený malej skupine používateľov. V priebehu nasledujúcich 4 rokov vyšli ďalšie 3 verzie, a projekt v roku 1993 skončil.
Napriek jeho oficiálnemu ukončeniu umožňovala licencia BSD, pod ktorou bol uvoľnený, získavať a upravovať kópiu zdrojového kódu. Dobrovoľníci a nadšenci ho udržiavali aktívny a vykonávali zásadné zmeny – napríklad nahradenie pôvodného jazyka QUEL novším SQL a následnou zmenou názvu na PostgreSQL. Pod novým názvom vyšla verzia 6.0, od ktorej sme sa rokmi dostali až k aktuálnej 15.2. Dnes už sú názvy Postgres a PostgreSQL zameniteľné.
PostgreSQL využívajú napríklad Apple, Facebook, IMDB, Instagram či Yahoo. Medzi známe technológie, ktoré sa na Postgres spoliehajú, patrí Skype, Spotify, Twitch, Netflix či Uber.
Čo ponúka PostgreSQL?
Cena a licencia
Výhodou PostgreSQL je v prvom rade cena – je zadarmo. Open-source kód prináša aj flexibilitu a možnosť prispôsobiť si tento DBMS presne vašim potrebám. To je možné jednoducho napríklad aj vďaka tzv. extensions (rozšíreniam), ktorými si doplníte databázu o rôzne vylepšenia. Ak máte dostatočne technické znalosti, môžete si tieto rozšírenia vytvárať a implementovať sami. Medzi najznámejšie patria napríklad pg_stat_statements, PostGIS, TimescaleDB či unaccent.
Bezpečné dáta
PostgreSQL je v súlade s ACID (atomicity, consistency, isolation, durability), čo je súbor vlastností databázových transakcií, ktoré majú zaručovať integritu dát v prípade nečakaných chýb, výpadkov hardwaru a pod. Okrem iného sa na to používa WAL (Write-Ahead Log), do ktorého sa zapisujú všetky transakcie, ktoré sú nad databázou urobené.
Môžete sa preto spoľahnúť, že dáta uložené v databáze budú konzistentné a odolné voči nečakaným udalostiam, ktoré občas svet IT prináša. WAL tiež umožňuje tzv. point-in-time recovery (obnovenie databázy z akéhokoľvek konkrétneho času) a urýchľuje a zjednodušuje replikáciu.
PostgreSQL využíva MVCC (multiversion concurrency control), vďaka čomu môžu užívatelia interagovať s databázou v tom istom čase bez toho, aby sa navzájom blokovali. Robí tak bez nutnosti uzamykania v prípade read operácií (operácie, počas ktorých sa do databázy nič nezapisuje, iba sa z nej „číta“), ktoré by inak museli čakať, kým sa zápis dokončí.
Jazyk
Na prácu s databázou využijete tak ako pri MySQL jazyk SQL. Okrem toho ponúka PostgreSQL aj svoj vlastný psql so skratkami, ktoré urýchlia zadávanie najčastejšie používaných príkazov. Pre porovnanie, príkaz pre zobrazenie všetkých databáz v SQL:
show databases;
zvládnete v Postgres s jednoduchým:
\l
Tabuľky
Vaše dáta sú teda konzistentné a ľahko s nimi viete pracovať – ale čo ak ich máte veľa? Vďaka možnosti ukladať jednotlivé tabuľky na rôzne miesta v rámci jedného či viacerých diskov je PostgreSQL ako stvorená pre veľké datasety. Môžete si ich dokonca rozložiť podľa toho, či sa s tabuľkami veľa pracuje (dať ich na rýchlejší SSD disk) alebo nie (postačia aj pomalšie HDD).
Od verzie 10 má Postgres natívnu podporu pre delenie dát jednej tabuľky medzi viaceré podtabuľky, čím je možné získať ešte väčšiu kontrolu nad rozložením dát na vašom disku. Ak sa nachádzate v cloude, oceníte virtuálne tabuľky, ktoré vám sprístupnia dáta z inej Postgres databázy (dokonca aj z MongoDB, Redis-u či SQLite súborov).
Pre tých náročnejších PostgreSQL podporuje foreign keys (spojenie stĺpcov jednej tabuľky so stĺpcami druhej tabuľky), prednastavené procedúry, robustný join a view v rôznych jazykoch. Ak by vám to nestačilo, môžete si pridať aj vlastné data typy, operátory či indexové typy.
TIP: Zaujíma vás, ako si môžete PostgreSQL nainštalovať a pracovať s ňou na Ubuntu 18.04 LTS? Prečítajte si jednoduchý návod.
Aký je rozdiel medzi PostgreSQL a MySQL?
Základný rozdiel je v ich zaradení – MySQL je relačná databáza, PostgreSQL objektovo-relačná, vďaka čomu podporuje širší rozsah data typov. Patria k nim XML, dátové polia (arrays), geometria / GIS, sieťové adresy (cidr, inet, macaddr), indexovateľný JSONB, natívne UUID a iné. JSON je už podporovaný aj v MySQL, Postgres ho zaradilo zhruba o 3 roky skôr. Obe ukladajú dáta do tabuliek, takže v tomto smere pre vás nebude práca s PostgreSQL prekvapením.
MySQL má na výber z viacerých typov tabuliek (storage engine), tie relevantné sú MyISAM a InnoDB. Ak použijete InnoDB tabuľky, bude vaša databáza v súlade s ACID, ktorý sme spomínali vyššie. S inými typmi táto vlastnosť nie je zaručená. PostgreSQL má jeden typ tabuliek, spĺňajúci ACID.
V rýchlosti sú obe DBMS veľmi vyrovnané. MySQL bola historicky rýchlejšia pri čítaní dát (SELECT operácie). V súčasnosti sú rozdiely vo výkone iba minimálne. Vznikajú najmä pri veľkom množstve jednotlivých spojení na databázu, čo je spôsobené tým, ako pristupujú k spracovaniu nových spojení. MySQL má jeden proces, ktorý všetko spracúva vo vláknach. Naopak PostgreSQL vygeneruje pre každé spojenie nový proces, na čo potrebuje alokovať malú časť RAM. Čo však Postgres zvláda omnoho lepšie, sú komplexnejšie operácie, ktoré prepájajú viacero tabuliek, a analýzu a spracovanie veľkého množstva náročnejších dát.
S PostgreSQL si môžete na svojom serveri rozbehať simultánne viacero verzií. To vám uľahčí testovanie alebo migráciu na vyššiu verziu. S MySQL na to potrebujete znalosť kontajnerizácie, čo vás môže odradiť, najmä ak s databázami iba začínate.
Je PostgreSQL vhodná pre váš projekt?
Výhod PostgreSQL je veľa, ich relevancia ale záleží od kontextu. Ak staviate svoj web pomocou frameworku či CMS (WordPress, Laravel, Drupal…), uistite sa, s akými DBMS je kompatibilný. Ak ste vo svete databáz začiatočník a hľadáte ľahšie spravovateľnú databázu, zvoľte radšej MySQL či MariaDB. Pri učení vám určite pomôže množstvo návodov a podpory, ktorú na internete nájdete. MySQL komunita sa venuje skôr udržiavaniu už existujúceho softvéru. PostgreSQL nadšenci radi pracujú na nových rozšíreniach, čím neustále posúvajú hranice toho, čo Postgres dokáže.
Ak spúšťate projekt vyžadujúci DBMS plný funkcií, ktorý je pripravený zvládnuť komplexné úlohy a rast spolu s vami, určite dajte šancu PostgreSQL. Rovnako bude Postgres lepšia voľba, ak pracujete s neštandardnými data typmi či neštruktúrovanými dátami, a ak je pre vás dôležitá konzistencia vašich dát.
Pokiaľ s Postgres nemáte skúsenosti alebo si na ňu zatiaľ netrúfate, radi ju prevezmeme pod svoje krídla. S vytvorením a správou prostredia, v ktorom bude vaša PostgreSQL bežať, vám pomôžeme vo Websupport Managed services.
Vypočujte si na záver podcast o tom, či je no-code hrozbou pre programátorov: