MySQL (1) - Pestrý svět databází
Tímto dílem začínáme seriál o MySQL databázi. Měli byste se v něm
dozvědět proč, jak a kde používat tento databázový software a také s
jakými problémy se přitom můžete setkat. Série bude zaměřena na
vývojáře pracující s MySQL, na své si však možná přijdou i kolegové
používající jiné databáze, protože řešení některých problémů bude
podobné.
Tento seriál si však především zaslouží, abychom jej začali nějakým
obecným pojednáním o databázích. Pojďme to rovnou udělat a podívejme
se, kde ve světě databází stojí MySQL.
Databáze, kam se podíváš
S databázemi se samozřejmě setkáváme denně. V nejširším slova smyslu
je databáze i seznam věcí, které mám koupit k obědu, výpis z účtu nebo
třebas seznam uskutečněných telefonních hovorů. V počítačovém slova
smyslu se pod výrazem "databáze" obvykle rozumí software, který
spravuje určitý "balík" dat a umožňuje uživatelům tento "balík" dat
nějak rozumně měnit a spravovat.
Když se například vrátím k výpisu telefonních hovorů, bude situace
následující:
- Někdo nebo něco (dejme tomu telefonní ústředna) bude zapisovat do
databáze údaje o uskutečněných hovorech.
- Někdo nebo něco jiného bude ze zapsaných údajů nějaké vybírat
(například program pro tisk výpisu bude vybírat podle telefonního čísla
a období)
- Někdo další může chtít data upravovat (třebas reklamační oddělení
může chtít změnit záznamy v případě oprávněné reklamace)
Z toho vidíme, že databáze není jen prosté shromaždiště, úložiště
dat, ale že většinou slouží zároveň k jejich organizaci, třídění,
prohledávání, seskupování a podobně. K typické dnešní databázi patří
rovněž to, že zároveň chce s daty pracovat více uživatelů.
S tím souvisí jiná důležitá věc: S rozvojem sítí a zejména internetu
se stalo obvyklé, že databáze mohou být přístupné vzdáleně. Taková
databáze umístěná centrálně může poskytovat data mnoha víceméně
nezávislým odběratelům. Z celého toho popisu bude pravděpodobně všem
zřejmé, že databázové programy obecně zažívají zlaté časy a že databází
bude existovat celá řada.
Dělení databází
Rozdělit databáze je kupodivu čím dál tím složitější, protože
jednotlivá kritéria se v poslední době vzájemně překrývají a mnoho
databází umí hodně podobných věcí. Nicméně, pokusím se alespoň
nastínit, jak různě se dají databáze dělit.
- Objektové a relační -
tam se databáze liší podle způsobu, jak ukládají data. Ve světě
převládá relační model, který ještě podrobněji vysvětlíme v některém z
následujících dílů. MySQL je relační databáze
- Jednouživatelské a
víceuživatelské - Podle toho, kolik uživatelů se k databázi může
připojit. Pochopitelně, v komerční sféře jednouživatelským databázím
prakticky odzvonilo. Je ale užitečné vědět, že i víceuživatelskou
databázi lze většinou nakonfigurovat jako jednouživatelskou a že to
může mít své opodstatnění. MySQL je víceuživatelská databáze.
- Souborové a systémové -
liší se tím, zda použijí pro uložení dat jeden soubor (např. dbf), nebo
zda je úložiště dat nějak zabudováno do systému. U souborových databází
typicky stačí příslušný soubor přenést na jiný stroj a může být ihned
používán, u systémových databází se musí záloha a obnova dělat nějak
jinak. V poslední době toto dělení poněkud ztratilo význam, protože
většina databází je systémových. MySQL je systémová databáze.
- Podle licence a ceny -
Asi víte, co tím myslím. Kód databáze může být uzavřený nebo otevřený,
šíření software může být svobodné nebo může podléhat nějakým podmínkám,
databáze se může využívat bez poplatků nebo může jít o placené
software. Licence MySQL je duální, je trochu složitá a nebudeme se jí
teď zabývat. Více byste se mohli dozvědět na stránkách projektu;
teď jen prohlásíme, že pokud budete vyvíjet software pod GPL
kompatibilní licencí, můžete použít MySQL pod licencí GPL.
- Podle toho, kde běží - na
jednoplatformní a multiplatformní. Jednoplatformní poběží jen na
některém systému (třeba na Windows), multiplatformní na více systémech.
MySQL je multiplatformní databáze a běží na systémech GNU/Linux,
Microsoft Windows, FreeBSD, Sun Solaris, IBM's AIX, Mac OS X, HP-UX,
AIX, QNX, Novell NetWare, SCO OpenUnix, SGI Irix, and Dec OSF.
- Podle velikosti, výkonu a
vhodnosti nasazení - Databáze mívají limity ve velikosti, počtu
současně přihlášených uživatelů, počtu současně probíhajících procesů a
podobně. Je těžké někam zařadit MySQL. Obecně je totiž obtížné nějak
rovnoprávně posoudit databáze. Diplomaticky můžeme říci, že MySQL je
někde uprostřed pomyslného žebříčku vhodnosti nasazení a že v malých až
středních projektech ji rozhodně použít můžete
Databáze lze samozřejmě dělit i podle celé řady dalších kritérií.
Nejdůležitější přitom je, co všechno daná databáze "umí" s daty
provádět. V seriálu budeme postupně mluvit o tom, co s daty "umí" dělat
MySQL, takže si toto téma necháme na později.
Popularita MySQL
MySQL je velmi populární databáze. Podle mnoha zdrojů je to rovněž
velmi rychlá databáze. Nemá však tolik funkcí a možností jako některé
konkurenční databázové systémy. Vybrat si vhodnou databázi je tedy
klasický kompromis mezi rychlostí softwaru a jeho schopnostmi. MySQL má
samozřejmě své zastánce a odpůrce. Odpůrci
například často tvrdí, že MySQL je tak rozšířená proto, že
webhostingové společnosti ji často nabízejí pro hostované weby jako
součást portfolia svých služeb. Kdyby se webhostingové společnosti
rozhodly upřednostnit jiný software, popularita MySQL by podle jejich
odpůrců podstatně klesla.
Naproti tomu zastánci MySQL
tvrdí, že webhostingové společnosti nabízejí MySQL proto, že je dobrá,
a kdyby existovala lepší databáze než MySQL, byla by nabízena. Zastánci
MySQL prostě tvrdí, že trh si MySQL vybral - a to podle nich jasně
poukazuje na její kvality.
Asi tušíte, že pravda bude někde uprostřed mezi těmito tvrzeními.
Nemám na to vyhraněný názor, ale MySQL podle mého ještě nějakou dobu
bude velmi rozšířená, takže se vyplatí ji používat. Abych byl ale
objektivní, podívejme se ještě na to, jaké nejvážnější konkurenty MySQL
ve světě databází má.
Konkurenční databáze
Pozor: Slovem "konkurenční" zde myslím rivaly MySQL z hlediska
možností, nikoli ceny. Jinými slovy, je to úvaha o softwaru, nikoli
marketingu. Jelikož marketing databází se rozvíjí tak prudce jako celé
toto odvětví, jen velmi dobře informovaní lidé by mohli předpovědět,
jakým směrem se bude vývoj ubírat (a ještě to není jisté).
Asi největším soupeřem MySQL o pozornost uživatelů byla donedávna
databáze PostgreSQL. Na linuxu o ní máme seriál.
PostgreSQL umí běžet na Windows NT (2000, XP) a na celé řadě UN*X
platforem a má podstatně více možností pro uživatele než MySQL. Je však
o něco pomalejší.
Podle výsledků
nedávného průzkumu firmy Evans Data
Corporation však v poslední době dobývá tento segment trhu poměrně
výrazným způsobem databáze Firebird.
To upřímě řečeno mnoho lidí překvapilo. Firebird je rovněž open-source
databáze, může běžet na systémech Windows, Linux, Mac OS X, HP-UX a
Solaris a má rovněž více možností než MySQL. Je také o něco pomalejší.
Pokud vím, na našem serveru o Firebirdu zatím žádné ucelené informace
nevyšly.
Bylo by asi zajímavé nějak fundovaně srovnat PostgreSQL a Firebird,
ale o tom náš seriál není. Troufnu si však tvrdit, že pokud někdy něco
vytlačí MySQL z pozice, kterou teď má, bude to jedna z dvojice
PostgreSQL | Firebird. Jiné vážné konkurenty MySQL podle mě v současné
době nemá.
Proč seriál o MySQL
Mezi systémy, na nichž běží MySQL je i GNU/Linux, takže na server
www.linuxsoft.cz tento seriál rozhodně patří. Mezi typická použití
databáze MySQL můžeme zařadit její nasazení na internetové servery
spolu s Apache a PHP. Tato řešení jsou poměrně často linuxová a fungují
velmi dobře. Není tedy divu, že mezi linuxovou komunitou je používání
MySQL relativně časté a že mnoho programátorů pracujících v linuxu sahá
práve po této databázi.