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 17910×
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
|
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ů
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
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ář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|