Reklama
 
Blog | Pavel LM Chocholouš

Archivní recenze

Kdysi jsem psal oslavné recenze na různé produkty z oblasti výpočetní techniky. Jednu z nich zde předkládám napospas. Při kritickém čtení s několikaletým odstupem si říkám, že některé části mého textu museli čtenáři vlastnící recenzované produkty považovat za škodolibý sarkasmus. Příkladem buď věta: "Monitor se nejdravějším žraloků konkurence odtrhl daleko dopředu i v takových detailech, kterým je montáž podstavce. Úhly, do nichž se dá monitor po instalaci podstavce otáčet, jsou neuvěřitelné. Designér vymyslel konstrukci tak, že od otevření krabice do prvního filmu na něm stihne sotva uplynout pár minut." Tolik recenze. Realita? Tři hodiny přemýšlení nad nesmyslnými diagramy s čínskými popisky, vrzající podstavec, který měl dvě polohy, z nichž jedna otáčela monitor příliš nahoru a druhá zase příliš dolů... Berte text, prosím, s náležitou rezervou.

MySQL 5 vrací úder

„MySQL? To je taková hračka
pro webdesignery, vždyť ukládání do csv je podobně komfortní.“ Podobné názory
nejsou, respektive nebyly v diskuzích o volbě správné databázové platformy
žádnou výjimkou. Samozřejmě, že pravda byla trochu jinde. MySQL bylo i před
verzí 5 spolehlivým serverem výkonným především v aplikacích, kde
převažují čtecí operace a jednoduché výběry. V této oblasti dokonce
porazilo nejednoho konkurenta. Na druhou stranu absence elementárních vlastností
databázového serveru jej činilo vždy tím malým vzadu. Mnohé se změnilo
s aktuální verzí 5, pojďme se podívat, co všechno přinesla.

Uložené pohledy (view)

Reklama

Dlouho očekávanou
funkcionalitou byla možnost tvorby uložených editovatelných pohledů pro
zjednodušení práce aplikací s tabulkami v relacích. Nyní je
podporována syntaxe CREATE VIEW, tak jak ji známe z ostatních systémů.
S několika výjimkami, samozřejmě. Není možné vytvářet indexy nad pohledy
(materialised views). V pohledech je možné používat vnořené dotazy pouze
omezeně. Definice pohledů není plně dynamická. Pokud nad pohledem použijeme
například příkaz PREPARE, při spuštění připraveného SQL nebude brán ohled na
změny proběhlé od spuštění PREPARE. Editovatelnost pohledů je také omezena,
UPDATE lze použít vždy jen na sloupce z jedné tabulky, z nichž se
pohled skládá.

Další formáty datových souborů

Nový formát datových
souborů – Archive – přináší velmi zajímavé možnosti pro zálohování a archivaci.
Pokud má databáze nastavena tento typ ukládání, jsou všechna data v ní
komprimována algoritmem zlib. Pro tento typ databáze existuje velmi neobvyklý
typ omezení, můžeme používat jen příkazy INSERT a SELECT, ale nevybavuji si
systém, který by dokázal používat byť jen jeden z těchto příkazů přímo nad
zálohami. Algoritmus použitý pro kompresi využívá mezipaměť pro ukládání dat,
kterou po dokončení transakce komprimuje najednou. Existují i vestavěné
nástroje pro manuální optimizaci komprese.

Propojené databáze

Propojené databáze jsou
navenek jen dalším formátem datových souborů. Federated stored engine, jak je
tento formát nazýván, přináší možnost propojení databáze ze vzdáleného serveru,
aniž by aplikace měly šanci poznat, že nepracují nad lokální databází. Princip je jednoduchý, databáze se naplní
tabulkami, které jsou definovány jako SELECT a obsahují v sobě i nastavení
připojení ke vzdálenému serveru. Protože se jedná o první výkop v této
oblasti, jsou zatím podporovány jen servery MySQL, nejsou podporovány transakce
v těchto tabulkách a není používána optimalizace dotazů v mezipaměti.

Spouště (triggery)

Absence triggerů byla
jednou z nejčastěji vytýkaných vlastností MySQL. Nyní je možné používat
triggery pro všechny operace a to jak triggery před spuštěním operace tak po
jejím ukončení. Z triggerů mohou být omezeně spouštěny i uložené
procedury. Nevýhodou je, přímé odkazování se na tabulky, přístupné jsou pouze
nové/upravované/původní záznamy. Používání odkazů, ale bude dopracováno.

Uložené procedury a funkce

MySQL nyní podporuje
uložené procedury, tak jak je známe z ostatních implementací. Rozepisovat
se o jejich možnostech je nad kapacitu tohoto článku. Rozšířené (respektive
kompilované, externí) uložené procedury, jak je známe z MSSQL, Firebird,
Oracle podporovany nejsou v MySQL podporovány zatím vůbec.

Nástroje pro práci s metadaty

Nová systémová databáze
INFORMATION_SCHEMA, přináší standardní pohled na metadata do MySQL. Tyto nové
možnosti práce s metadaty zjednodušují vývoj aplikací, jejich dokumentaci
a celkovou správu serveru. Puvodni funkce show zustava, ale nenabizi všechny
udaje, které jsou uloženy v INFORMATION_SCHEMA.

Výkon

Samozřejmě, že nová verze
se chlubí vyšším výkonem a dokonce jsou na webu MySQL i příklady, které ukazují
kolikanásobně je nová verze výkonnější. Pravdu ukáže až nasazení
v jednotlivých reálných aplikacích. Podle dokumentace by měl velmi
pomoci nový optimizer dotazů, který díky
svým schopnostem rychleji zpracuje dotazy, lépe využije indexy a striktněji
(efektivněji) vyhodnotí podmínky where.

Shrnutí

Nová verze posunuje MySQL
na hřiště, kde bude hra velmi tvrdá. Ve verzi 5 srovnání s plnokrevnými
servery rozhodně skončí na ohonu, ale desetitisíce vývojářů, kteří tuto platformu používají, konečně
dostaly k dispozici dlouho očekávané vlastnosti, které jejich práci
v mnoha ohledech ulehčí. Pokud půjde vývoj MySQL pořád stejně hektickým
tempem, můžeme se za několik let těšit na konkurenta PgSQL, Microsoft SQL
serveru i Oracle. Nyní je MySQL nejpropracovanější odlehčenou implementací SQL,
která najde své uplatnění v milionech webových aplikací.