LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> MySQL (51) - Metadata

Dnes se podíváme na to, jak nám práci s databází MySQL může usnadnit systémový katalog. Řeč tedy bude o metadatech.

23.12.2005 06:00 | Petr Zajíc | Články autora | přečteno 14646×

Když jsme v seriálu probírali ty důležité změny, které přináší MySQL 5.0, přece jen jsme něco vynechali. Hovořili jsme o uložených procedurách, spouštích, uživatelsky definovaných funkcích a pohledech. "Pětka" má však ještě další významnou novinku, a tou je systémový katalog.

Definice

Pro systémový katalog se běžně používá několik vzájemně se překrývajících termínů. Proto v této souvislosti můžete slyšet výrazy jako databázová metadata (database metadata), datový slovník (data dictionary) nebo systémový katalog (system catalog). Pokaždé se však jedná o to samé - metadata popisují strukturu samotné databáze. Proto se pojem metadata vysvětluje jako "data o datech".

Celá myšlenka metadat spočívá v tom, že údaje o jednotlivých databázích, tabulkách, sloupcích, indexech, uložených procedurách a tak dále jsou uloženy na jednom místě. Asi už tušíte kde - jsou uložena v samostatné databázi. Tato logika implementující sama sebe má svoji výhodu - uvědomte si, že mezi databázemi, tabulkami a sloupci jsou vlastně relační vztahy. Není tedy nic jednoduššího, než na uložení metadat použít stejný způsob jako na uložení samotných dat.

Myšlenka metadat pochopitelně není nová a MySQL není jediná databáze, která obsahuje systémový katalog. Ve skutečnosti téměř každá soudobá databáze nějaký ten katalog obsahuje. Koho to zajímá, pro toho můžeme uvést, že informační schéma je rovněž součástí SQL standardu ANSI/ISO SQL:2003.

Katalog v MySQL

Už jsme uvedli, že katalog je reprezentován databází. A v MySQL je touto databází information_schema. Protože je systémový katalog v MySQL až od verze 5.0, je pochopitelně i tato databáze přítomna až od verze 5.0. Krátký pohled na tuto databázi nám objasní, co všechno obsahuje:

  • informace o znakových sadách a způsobech řazení
  • informace o jednotlivých sloupcích tabulek databází
  • informace o klíčích a indexech
  • informace o uložených procedurách
  • seznam databází na daném serveru
  • seznam tabulek v těchto databázích
  • informace o triggerech
  • informace o pohledech
  • seznam uživatelů a jejich oprávnění

Jak to funguje

Celý katalog si pochopitelně databázový server obhospodařuje sám. To znamená, že informační bude žít svým vlastním životem, aniž byste se o ni museli nějakým způsobem starat. V praxi to vypadá tak, že když provedete nějaký ten definiční příkaz (dejme tomu CREATE TABLE), tak se v databázi nejen vytvoří potřebná tabulka, ale rovněž se do katalogu zapíší všechna metadata.

Manuál k MySQL podrobně popisuje, jaká je struktura jednotlivých tabulek v informační databázi a rovněž poskytuje příklady toho, jak tyto informace smysluplně použít. My se za chvíli podíváme na některé praktické příklady.

Důležitá věc: Informační databáze slouží pouze k prohlížení, nemůžete do ní zapisovat. Všechny změny v databázi je tedy potřeba dělat pomocí definičních příkazů. Stojí rovněž za zmínku, že některé tabulky v informační databázi fyzicky neexistují, jsou pouze virtuální. Jak bystrý čtenář usoudí, je pro ně použit typ tabulky MEMORY. Přístup do systémového katalogu rovněž může být upraven pomocí oprávnění uživatelů.

Použití

Protože jsou metadata v tabulkách, lze s nimi pracovat pomocí příkazu SELECT. To znamená, že je můžeme seskupovat, třídit, spojovat, filtrovat a podobně. Jestliže tedy budu chtít znát názvy všech tabulek v databázi test, mohu použít něco ve smyslu:

select * from tables where table_schema = 'test'

V praxi používám systémový katalog na několik věcí. Především, je třeba si uvědomit, že katalog obsahuje zdrojový kód všech uložených procedur a pohledů, takže pokud jsem někde ztratil zdrojový kód procedury, není nic jednoduššího než přepnout se do informační databáze a napsat:

select routine_name, routine_definition from routines;

A kódy procedur jsou na světě. Druhá věc, na níž metadata používám je zjišťování údajů o sloupcích. Tak například sloupec typu varchar má zcela jistě definovánu nějakou maximální délku řetězce, kterou do něj lze uložit. Tuto délku asi budete chtít znát pro případnou kontrolu, zda uživatel nezadal více dat, než je zdrávo. Kýžený údaj se dozvíte takto (použil jsem zjišťování údajů o tabulce z minulého dílu seriálu):

select column_name, character_maximum_length from columns
where table_name = 'lidi' and data_type='varchar';

Pozn.: Tohle má mnoho využití. Ve webových formulářích například často budete sbírat údaje od uživatelů s pomocí prvků typu TEXT nebo TEXTAREA. Pokud se mají údaje uložit do databáze, bude jen žádoucí zkontrolovat jejich délku.

A třetí věc, na níž používám metadata je tvorba "automatických" kusů kódu. Obecně se dá říci, že databázový software trpí častým opakováním kódu. Vybíráte data z rozevíracích seznamů, zobrazujete tabulky na základě sad záznamů a tak dále. Používané kódy se často podobají jeden druhému jako vejce vejci, a rozdíl bývá jen v textech dotazů získávajících data. Do aplikace však většinou není třeba nic "natvrdo" zadávat - postačí pár šikovných dotazů na metadata a univerzální rozhraní pro zobrazení prakticky čehokoliv je na světě.

Metadata se dají pužít i k mnoha dalším věcem. Můžete například snadno zjistit, která tabulka ve vaší databázi má nejvíce sloupců nebo která nemá primární klíč. Platí samozřejmě, že výhody systémového katalogu jsou tím zřejmější, čím větší databázi máte. Nic se nesmí přehánět; pokud vaše databáze obsahuje dvě tabulky, nejspíš se bez služeb katalogu obejdete.

MySQL 4

V MySQL 4 sice katalog není k dispozici, ale částečně jej nahrazuje sada příkazů show. Tak například informace o sloupcích tabulky lidi můžete zobrazit pomocí něčeho jako:

show full columns from lidi;

Není to sice zdaleka tak pružné jako použití systémového katalogu, ale v mnoha případech to bohatě postačí.

Závěr

Katalog je v MySQL až od verze 5.0. Což znamená, že až dosud se vývojáři museli obejít bez něj a byli tak nuceni používat příkazy SHOW TABLES, SHOW DATABASES a podobně. Protože dotazy na metadata nebývají stežejními částmi aplikací, pravděpodobně se příkazy SHOW nebudou s nástupem "pětky" masivně předělávat; spíše při vývoji nových věcí bude možné použít namísto toho katalog. Neboli - nakládání s metadaty je třeba znát, ale svět na tom nestojí.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera

Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.


Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze