Vraťme se ale k Linuxu. Důvod, proč jsme si udělali rychlou procházku do nitra databázové hantýrky byl jediný, a to abyste získali alespoň letmou představu o používaných pojmech – i na Linuxu se totiž provozují moderní technologie a se vším zmiňovaným se tam (pokud budete chtít) setkáte.
Nejznámějšími databázovými systémy, které se na Linuxu používají a navíc, které patří mezi tzv. „svobodný software“ s otevřenými zdrojovými kódy, jsou MySQL a PostgreSQL. MySQL je šířeno pod licencí GNU GPL, která vás mimo jiné opravňuje systém zdarma používat, číst jeho zdrojáky a modifikovat. Licence PostgreSQL je ještě volnější.
Root.cz pořádá školení Linuxu:
Oba systémy jsou relačními (přesněji: PostgreSQL je objektově-relační), komunikují vSQL a oba jsou postaveny na architektuře klient/server. Jak pro MySQL tak i pro PostgreSQL platí, že to jsou systémy multi-threadové (více vláknové), takže jsou schopny v jednom okamžiku obsluhovat několik klientů najednou. Obecně mohou server i klienti běžet na různých počítačích a přes síť se spolu dorozumívat, ale samozřejmě nic vám nebrání spustit všechny programy na jednom jediném stroji.
MySQL
Kořeny MySQL sahají na sever Evropy. Systém vznikl v dílně švédské firmy MySQL AB, která se v současnosti živí především tím, že poskytuje profesionální řešení na bázi MySQL, konzultacemi, reklamou a já nevím čím ještě. To, že se rozhodli SŘBD MySQL šířit jako „free“ software, je vneslo do světového povědomí.
MySQL je multiplatformní s API pro mnoho programovacích jazyků. Pro platformy Windows disponuje také rozhraním ODBC 2.5, takže můžete dělat i takové psí kusy jako přistupovat k MySQL zMS Accessu.
Systém MySQL se snaží vyhovovat standardu ANSI SQL92 – v něčem ho rozšiřuje, ale v určitých ohledech ho ještě nenaplňuje. Má stejně jako jiná SŘBD pěkný repertoár datových typů a funkcí, které lze použít v příkazech SELECT
. Umí seřazovat, seskupovat a spojovat tabulky ( INNER/LEFT/RIGHT JOIN
). Samozřejmostí je indexování sloupců pomocí B-stromů. Na druhou stranu, MySQL dodnes podporuje tzv. vnořený SELECT
pouze u příkazů INSERT
a REPLACE
. Dotaz typu
SELECT * FROM tabulka1 WHERE id IN (SELECT id FROM tabulka2)
v MySQL nevykonáte. Lze pomoci různými berličkami typu LEFT JOIN
nebo celou věc oprogramovat ručně, ale je to samozřejmě pro programátora složitější.
V současnosti začalo MySQL podporovat i transakce a zamykání tabulek. Tzv. uložené procedury a možnost použití triggerů od něj ale nečekejte. (Uložených procedur se možná někdy v budoucnu dočkáme, podpora triggerů v MySQL však není ani plánována.)
Pro zajištění bezpečnosti má v sobě MySQL zabudovaný systém uživatelů a práv. Přístup k databázi je chráněn hesly, přičemž každý uživatel může mít definovánu množinu operací, které je oprávněn vykonat. Tj. někdo může jen číst, jiný i zapisovat či měnit strukturu tabulek. Pro zvýšení ochrany se hesla přenášejí výhradně v kryptovaném tvaru.
Limity co do velikosti tabulky byly u MySQL nastaveny na 4 GB. Od verze 3.23 však díky MyISAMtento teoretický limit posunuli až na hranici 8 miliónů terabajtů (263 bajtů)! V praxi to znamená, že MySQL je co do objemu dat omezováno pouze operačním systémem, protože právě on se stává tím nejužžím místem při práci s tak obrovskými kvanty dat. (Linux-Intel: 2 GB, 4 GB nebo víc, Linux-Alpha: 8 TB.) Tvůrci uvádějí, že sami používají MySQL pro správu databáze o 50 miliónech záznamů a že znají uživatele, který do MySQL nacpal na 60 tisíc tabulek s více než pěti miliardami záznamů!
Nevýhodou MySQL je takřka nulová kontrola složitějších integritních omezení. Vazby mezi tabulkami si musíte pamatovat sami a hlídat se, abyste vztahy neporušili. Při definici nové tabulky sice MySQL přečte konstrukci FOREIGN KEY
, ta je však mrtvá a systém ji nikdy nezohlední.
Nejsilnější zbraní MySQL je rychlost. Oproti později zmiňovanému PostgreSQL je několikrát rychlejší. Autoři se netají, že právě rychlost je jejich hlavní prioritou a že se kvůli ní ani nechystají implementovat některé funkce (třeba triggery).
PostgreSQL
PostgreSQL je objektově-relačním systémem řízení báze dat, založený na projektu POSTGRES verze 4.2 Berkeleyské katedry počítačových věd Kalifornské univerzity v USA. Projekt sponzorovaly mnohé státní organizace Spojených států a výsledkem byla řada nově objevených objektově-relačních konceptů, které se nyní začínají vyskytovat i v komerčních produktech velkých firem. PostgreSQL je přímý open-source následník původního kódu z Berkeley.
PostgreSQL je asi nejpropracovanějším SŘBD mezi databázovými systémy s otevřeným zdrojovým kódem. Také on je multiplatformní a poskytuje API rozličným programovacím jazykům.
Jeho podpora SQL konstrukcí je takřka kompletní. V PostgreSQL si vychutnáte i transakce a vnořené SELECT
y, máte možnost si definovat vlastní funkce a triggery. K zajištění integrity dat si můžete vytvořit houf všelijakých integritních omezení včetně cizích klíčů atd.
PostgreSQL je už tak daleko, že zamykání tabulek nahradil systémem spravujícím více verzí dat. V praxi to znamená, že zatímco jedno vlákno nějaké záznamy přepisuje, jiné může bez přerušení ze stejné tabulky číst konzistentní data. Mezi opravdové lahůdky, jež z PostgreSQL dělají objektově-relační databázi, je možnost dědit definice tabulek. Také vytváření si vlastních datových typů není k zahození.
Bezpečnostní politika PostgreSQL je na mnohem vyšší úrovni než u MySQL. Kromě klasického přístupu chráněným heslem umožňuje PostgreSQL použití autentikace pomocí Kerberosu nebo tzv. „Identifikačního protokolu“ (ident-based authentication). Samozřejmostí je vytváření různých uživatelů s různými právy a jejich sdružování do skupin.
Národní specifika (locales) jsou v PostgreSQL dobře podporována. Systém umí přečíst různá kódování včetně multi-bajtového Unicode. Pokud server i klienti používají různá kódování, PostgreSQL je dokáže automaticky převádět.