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.