PostgreSQL (1) - Historie a pohledy jinam

Dnes začínáme seriál o databázích, zpočátku pokud možno obecný, ale postupem času se budeme stále více věnovat mému oblíbenému PostgreSQL serveru.

12.8.2004 08:00 | MaReK Olšavský | přečteno 37022×

Databáze a databázové servery prý patří na třetí místo v prodejnosti software za hry a kancelářské aplikace. Vývoj jednoznačně směřuje k jejich potřebě v jakékoliv formě, ať už té nejjednodušší souborové (například účetnictví), nebo sofistikovanější SQL serveru (třeba www aplikace).

Tento seriál bude orientovaný na SQL jazyk, zaměříme se na nějaké detaily použití. Bude o optimalizaci dat v databázi o možnostech zrychlení a udržení konzistence dat v ní. Později se dostaneme i k programování stored procedur a teprve v tento moment bude jednoznačná orientace na PostgreSQL server, případně se podíváme i na FirebirdSQL. Bohužel se nebudu věnovat instalaci některého ze serverů, protože to je mimo obsahovou linii tohoto seriálu. Seriál o instalaci, nastavení a práci s MySQL se již připravuje a já mohu udělat totéž pro PostgreSQL.

Databázi můžeme přirovnat ke kartotéce, kde každý záznam (ve správné db terminologii věta) je jedinečný a organizovaně nalezitelný (jak to počítači usnadnit si povíme, až budeme u indexů) lístek. V dobách prvních počítačů tomu tak opravdu bylo, protože záznamy byly uloženy na děrných štítcích...

V dobách, kdy se počítače začali šířit trochu masívněji vládla poměrně anarchie, protože takřka každý výrobce software, měl vlastní, z jeho hlediska nejlepší, systém, jak věty ukládat. Třeba použitím jednoho odělovače pro věty a druhého pro položky ve větách.

Z těchto pionýrských dob přežilo pár souborových databázových formátů - dbf (program dBase, ale třeba i FoxPro), db (Paradox) a mdb (MS Access). I dnes jsou tyto formáty často využívány a nejsou hodné zatracení. Jejich využití je zejména v "jednodušších" aplikacích.

Souborové databáze mají omezené možnosti optimalizace výkonu (indexace) a zabezpečení přístupu k datům v nich uložených. Neumožňují transakční zpracování dat a řešení relací mezi tabulkami není také snadný úkol, pokud nepracujete přímo ve FoxPro, dBase, nebo Accessu. Většinou do nich nelze uložit i nestrukturovaná, či binární data.

Mají ale i své výhody. Řada vývojových nástrojů je umí použít ve Vašem programu (třeba přes DAO), nebo existují knihovny či třídy pro přístup k těmto datům (třeba pro Perl, Javu a PHP), anebo si je můžete napsat sami ;-). Většina moderních SQL serverů umí data v nich uložená naimportovat, případně do nich exportovat, využití už ctěného čtenáře snad napadne.

Dalším krokem jsou relační databáze. Pokud budeme zkoumat vše do podrobna i ony si ukládají data do nějakého svého formátu na disky, ale nás jako uživatele, případně programátora od tohoto odstiňují. V další kapitole se budeme věnovat základním pojmům kolem databází, prozatím bude stačit, když budete vědět, že relace je propojení několika tabulek dohromady, které umožňuje i poměrně rozsáhlou optimalizaci jak z hlediska prostoru obsazeného daty, tak z hlediska výkonu.

V 60. letech firma IBM vytvořila systém hierarchického modelu uspořádání dat. Data byla uspořádána ve stromech. Později se začaly propojovat data mezi stromy, ale složitost tohoto uspořádání dat neumožňovala vystihnout všechny možné vazby, které byly třeba. Proto se v 70. letech začali objevovat systémy, které byly založeny na relační algebře. Od 80. let se rozvíjí naplno relační databáze a jazyk SQL.

Relativní novinkou ve světě databází je grid databáze. Pokud nevíte o co se jedná, jde o rozložení výpočetního výkonu mezi více počítačů, či serverů. Také tomuto tématu hodlám věnovat jednu kapitolu, ale až trochu později, protože se zatím jedná o specialitu nabízenou pouze Oracle 10g.

V letech 74-76 minulého století firma IBM vytvořila sadu příkazů (jazyk) SEQUEL (Structured English Query Language) následovaný SEQUEL/2, použit v databázovém systému SYSTEM R, pro ovládání databáze. Počátkem 80. let vstoupila na trh firma Realational Software Inc. (přejmenovala se pak po svém produktu na Oracle Corporation), IBM vytvořila DB2 a vyrojili se další firmy se svými databázemi, jako Informix, SyBase, ... K ovládání databází se začal používat jazyk SQL, který je následníkem SEQUELu. ANSI chtělo vytvořit standard na základě jazyka RDL, ale SQL již bylo natolik rozšířené, že standardem se stalo SQL86, později následované SQL92 a SQL99.

SQL se překládá jako Structured Query Language, ale viděl jsem překlad i jako Simple Query Language. Já souhlasím spíše s tou druhou variantou, protože jak uvidíte sami, je to jazyk velice jednoduchý. Hlavní síla nezávisí na tomto jazyce, ale v celkové organizaci dat a administraci serveru.

Malý přehled databází

Zmíním se jen o pár nejvýznamějších, protože asi ani není v silách jednotlivce znát a vyhledat vše, navíc u některých produktů by se jednalo o jméno známé pouze pár znalcům. Komerční databáze mají své místo, protože kvůli podpoře si instituce, jako například banky nedovolí běžně nasadit open source produkty.

Komerční databáze

Oracle

Pravděpodobně leader ve světě databází. Jejich server se stal jakýmsi nepsaným standardem pro velké systémy. V Česku jej používá například Komerční Banka. Firma jako jedna z prvních ve velkém produkovala relační databáze.

Microsoft

Neušklíbejte se prosím, Microsoft SQL server patří také k těm rozšířenějším. V Česku jej používá třeba Česká Spořitelna. Rychlostně na tom není špatně, podpora a bezpečnost už se mi jeví jako trochu slabší.

IBM

Maji vlastní DB2, ale v době zcela nedávné koupili Informix. Produkty jsou používány spíše v menší míře.

Borland/Inprise

Ty mají Interbase server. Dalo by se říci, že je to poklad, který chránili před světem tak, že jej skoro nikdo nezná. Rychlý, stabilní. Donedávna jen pro Microsoftí systémy. To se změnilo, když měl chvíli opensource vývoj a odštěpili se od něj FirebirdSQL a Yaffil.

Open Source Databáze

MySQL

Databázový server oblíbený zejména v nasazení na pro WWW aplikace. Je velice rychlý, má dobrou podporu standardů jazyka SQL, ale v základnám módu (nad svými nativními tabulkami) postrádá některé vlastnosti, například transakce, vnořené SELECTy, uložené procedury a pohledy, čímže je v podstatě diskvalifikován z vážnějšího nasazení. Ale to že postrádá tyto features je vyváženo jeho rychlostí. Je plnohodně použitelná v UN*Xech i Windows, což nahrává webtvůrcům, kteří nemají extra servřík, ale zodpovědně testují pod hlavními prohlížeči.

PostgreSQL

Tento server vyniká stabilitou, rychlostí, dobrou podporou a dobrou integrací pokročilých technologií. Některé webhostingy ho mají v nabídce vedle MySQL, znám i aplikace ve finančním světě, které se o něj opírají. Tento server je primárně určen pro použití v UN*Xových OS, donedávna existovala jen alfa verze pro Windows, nebo se dal spustit pod Cygwinem, od verze 7.5 je i v tomto přístupu změna. V tomto seriálu se budu orientovat v pozdějších kapitolách (stored procedury, transakce, triggery) převážně na tento server. PostgreSQL patří k tomu oblíbenějšímu, s čím jsem přišel do styku.

FirebirdSQL

Server, který vznikl po dočasném uvolnění Interbase, s nímž je vysoce kompatibilní, dokonce používá i stejné soubory pro uložení dat. Od počátku roku 2004 ve verzi 1.5, která je o cca 30% rychlejší, než původní verze 1. Bezproblémový chod jak na Windows, tak UN*Xech, i když hned po uvedení verze 1.5 jsme měli problémy s jeho kompilací pro 64bit Solaris, protože v balíku chyběli některé zdroje, jako třeba configure, nebo make. Existuje ve dvou verzích jako Classic Server a Super Server a pro kterou se rozhodnout je jen na uživateli/správci. Využívá se i jako lokální databázový server pro aplikace, třeba systém POK firmy MSBI s.r.o., nebo účetnictví Cesar.

Yaffil

SQL server taktéž vzešlý z původní Borlandí Interbase, velmi rychlý, ale se špatnou podporou a stránky ani nejeví známky, že by se vůbec ještě vyvíjel.

miniSQL

Light weight (lehkovážní) databáze, nesetkal jsem se s jejím produkčním nasazením, spíše vhodná, pokud se potřebujete naučit SQL jazyk. Zase na druhou proč se zatěžovat její instalací, když většina distribucí už s sebou přináší i MySQL, či dokonce postgreSQL.

SQLite

SQLite není databáze v pravém slova smyslu, ale knihovna, která vám pomocí SQL jazyka umožní pracovat se soubory dbm. Všechna data jsou v jediném souboru, který třeba můžete sdílet z několika operačních systémů (budete ale muset řešit kódování). Zajímavé a příjemné je, že umí třeba transakce.

Historie PostgreSQL

Tento seriál bude orientovaný především na práci s PotgreSQL, jak jsem již předeslal, takže by bylo možná příjemné vědět něco o historii tohoto serveru.

Původně byl server vyvíjen v Berkeley na kalifornské univerzitě v letech 1986 až 1993. Vývoj se rozpadl komerčním směrem (sloučení s Informixem) i nekomerčním směrem, jako Postgres95. V roce 1996 je projekt přejmenován na PostgreSQL, je uvedena verze 6.0.

Závěrem

Pro tento díl je to vše. Nemohu tu vypsat podrobně pokus o zmapování vývoje databází a všechny SQL servery, které se na světě vyskytují. Pokud jsem Vás tímto miniúvodem neotrávil, ale naopak nalákal k přečtení dalších dílů, tak mohu být spokojen. Zatím neuvedu seznam odkazů, protože ty jsem průběžně rozesel v textu.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=304