PostgreSQL je objektově relační databázový systém, který je vydáván pod licencí typu MIT a jedná se tak o open source software. Na jeho vývoji se podílí globální komunita firem a vývojářů. Primárně je vyvíjen pro GNU/Linux nebo spíše obecně unixové systémy, ale existují i balíčky, které jsou určené pro platformu Windows.
PostgreSQL využívají i giganti jako je Yahoo! – pro analýzu chování uživatelů, MySpace – pro svou sociální síť, OpenStreetMap – pro projekt společného vytváření volně editovatelné mapy světa nebo Skype pro svou VoIP aplikaci.
Historie
PostgreSQL vychází z projektu Ingres na Kalifornské univerzitě v Berkeley. Cílem byla implementace vlastností, které jsou potřebné pro kompletní podporu typů. Jednou z takových vlastností byla schopnost definovat nové typy a plně popsat vztahy. To bylo již dříve široce používáno, ale implementace byla plně v rukou uživatele. Postgres databáze, jak se původně jmenovala, takové vztahy přímo implementovala a dokázala načítat přirozeným způsobem informace ze souvisejících tabulek. Prototyp byl hotový v roce 1988.
Typické vlastnosti PostreSQL
Funkce. Funkce slouží ke spouštění bloků kódu na serveru. Dané bloky mohou být implementovány v jazyce SQL, avšak absence základních programovacích operací, mezi které patří například větvení nebo smyčky před verzí 8.4 vedla k tomu, že ve funkcích jsou podporované i další jazyky. Některé tyto jazyky je zároveň možné používat i v triggerech. Mezi podporované jazyky patří:
PL/pgSQL, který připomíná procedurální jazyk PL/SQL, který je známý z Oracle.
Skriptovací jazyky PL/Lua, PL/LOLCODE, PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh nebo PL/Scheme.
Kompilované jazyky C, C++, PL/Java a CommonLisp (skrze PostModern).
Statický jazyk R prostřednictvím PL/R.
Indexy. PostgreSQL umožňuje vestavěnou podporu pro B+ strom, hash, GiST a GiN indexy. Zároveň je možné doplnit uživatelské typy indexů. Plánovač má schopnost při vyhodnocování dotazů použít i více indexů současně za použití dočasných bitmap index operací v paměti.
Indexe nad výrazy jsou indexy, které jsou tvořené nad výsledky výrazů i funkcí.
Částečné indexy jsou indexy vytvářené pouze nad částí tabulky.
Triggery. Triggery jsou události, které spouští akce ze SQL DML příkazů. Jsou plně podporována a mohou být definovány na tabulkách, ale nikoliv na pohledech. Na těch lze definovat rules, tedy pravidla.
Pravidla. Pravidla dávají možnost přepisovat query tree dotazu, který je zpracováván. Často se používají pro pohledy.
Dědičnost. Tabulky je možné vytvářet tak, že dědí vlastnosti ze své „rodičovské“ tabulky. Data z takto podřízených tabulek se pak jeví, jako kdyby existovala v rodičovských tabulkách.
Výhody použití PostgreSQL
Komunita. Komunita používající PostgreSQL je velmi široká. Uživatelé sami vytvářejí moduly a navrhují je pak komunitě. Zároveň je tato komunita bohatým zdrojem inspirace a rad.
Imunita vůči naddeploymentu. Proprietární databáze přináší problémy s licencováním. Tyto problémy u PostgreSQL nevznikají, protože s jeho použitím nejsou spojeny žádné licenční poplatky.
Spolehlivost a stabilita. Mnoho společností prohlásilo, že nikdy neměli problém s výpadkem databáze využívající PosrgreSQL.
Navržený pro vysoké objemy. Za použití MVCC je PosgreSQL velmi responzivní ve vysokoobjemových prostředích.
Nevýhody použití PostgreSQL
Instalace a konfigurace. Instalace a konfigurace je relativně složitá a to zvláště pro začínající uživatele.
Příkazová řádka. V případě přechodu z MySQL je příkazová řádka málo intuitivní.
Složitost. Široká paleta funkcionalit může vést k tomu, že trvá roky se je naučit.
Podpora. Na rozdíl od proprietárních databází neexistuje oficiální podpora, se kterou by bylo možné řešit případné problémy. Komunita tyto nedostatky částečně kompenzuje.