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

> MySQL (40) - další typy tabulek

MySQL nabízí několik typů tabulek pro uložení dat. Některé jsme vzpomenuli minule, na jiné dojde řada dnes.

30.9.2005 08:00 | Petr Zajíc | Články autora | přečteno 19146×

V tomto díle seriálu budeme pokračovat ve výčtu a rozboru těch typů tabulek, které MySQL nabízí.

Tabulky umožňující transakce

MySQL nabízí dva typy tabulek, které umožňují transakční zpracování. O transakcích ještě v seriálu řeč nebyla, ale na teorii se můžete podívat do "sesterského" seriálu o PostgreSQL. Teorie databázových transakcí je totiž pro všechny databáze vlastně stejná. U transakcí jde o to, že jeden nebo více příkazů pro databázi může být považováno za logický celek a jako takový mohou být potvrzeny nebo zamítnuty. Následující dva typy tabulek podporují transakce:

InnoDB

Aby mohla MySQL podporovat InnoDB, musí být zkompilována s jejich podporou. To je od verze 4.0 MySQL již samozřejmé. Tabulky InnoDB používají při zpracování dat techniku zamykání dat na úrovni řádků. Hodí se pro prostředí, kde je vysoký podíl akčních dotazů vůči výběrovým (tedy, často se data mění a méně často vybírají). Technologii InnoDB vyvinula finská firma Innobase Oy.

Tabulky InnoDB nejsou na databázovém serveru uloženy v jednotlivých souborech. Spíše jsou v prostoru tabulek, který je navenek reprezentován jako jediný soubor (typicky ibdata1) v adresáři data vaší instalace MySQL.

Pokud budete chtít založit tabulku typu InnoDB, použijte definiční příkaz ve stylu:

create table tabulka (id int, nazev varchar(30)) type=innodb;

InnoDB je možné doladit pomocí celé řady konfiguračních voleb a spustit s celou řadou parametrů. Nebudeme je tady do podrobna rozebírat, pouze připomenu zásady, kterými byste se při ladění výkonu InnoDB měli řídit:

  • Všechny případné testy dělejte na podobném objemu dat, jaký bude používat reálný systém.
  • Jestliže půjde o hodně zatěžovaný systém, je třeba simulovat pečlivě i zátěž - například zapisováním dat do tabulky z více klientů najednou a podobně.
  • Máme funkci BENCHMARK
  • InnoDB tabulky lze v dotazech spojovat s tabulkami jiných typů - MyISAM například - ale můžete tím přijít o výhodu transakcí

Je rovněž dobré vědět, že tabulky InnoDB mají svá omezení. Nemůžete na nich například provádět fulltextové vyhledávání. Kompletní seznam omezení tabulek tohoto typu najdete v dokumentaci k MySQL.

BDB

Rovněž tabulky typu BDB podporují transakce. BDB je zkratka z "Berkeley database" a jedná se o databázi, původně vyvinutou na University of California ve městě Berkeley. Teď se o vývoj BDB stará firma Sleepycat software. O použití jádra BDB v MySQL platí zhruba to, co bylo řečeno o InnoDB - totiž že se hodí pro servery s vysokým podílem akčních dotazů oproti výběrovým. Přestože je BDB sama o sobě vyspělý produkt, rozhraní mezi MySQL a BDB je stále ve fázi intenzivního vývoje a proto by tento typ tabulek měl být nasazován opatrně.

Tabulku typu BDB založíte použitím následujícího definičního příkazu:

create table tabulka (id int, nazev varchar(30)) type=bdb;

Manuál k MySQL obsahuje volby, s nimiž je možné upravit chování tabulek typu BDB a omezení, které BDB tabulky mají.

Upřímně řečeno nechápu, proč se MySQL zabývá souběžnou podporou InnoDB a BDB, když jejich filozofie je tak podobná. Pokud byste někdo měl nějaké zkušenosti nebo srovnání výhod a nevýhod tabulek BDB oproti InnoDB, můžete přispět do diskuse pod článkem.

Méně časté typy tabulek

S tabulkami, které jsme až dosud probrali se můežte setkávat relativně často. Zejména to platí o typech MyISAM a InnoDB. Existují však i další, exotické typy tabulek. Kráce je shrňme.

Memory

Tabulky typu MEMORY (synonymum je HEAP) existují pouze v paměti počítače. Abych byl přesný dodám, že v paměti jsou jen data, definice tabulky je uložena na disku. To znamená, že při restartu serveru je obsah tabulek HEAP ztracen. Asi si říkáte, k čemu taková vymoženost vůbec je - ale tabulky MEMORY mohou mít své opodstatnění.

Především, díky tomu, že jsou celé v paměti, může být práce s HEAP tabulkami velmi rychlá. Pak je třeba vzít v úvahu, že tabulky typu HEAP mohou být ideálními kandidáty na dočasné (temporary) tabulky. A konečně je třeba vědět, že HEAP tabulku lze vytovřit jako kopii existující "trvalé" tabulky takto:

create table tabulka_v_pameti type=memory select * from tabulka_na_disku;

Také tyto tabulky mají svá specifika a omezení, o nichž byste si mohli přečíst v manuálu.

Federated

Tento naprosto nový typ tabulek lze použít až od verze 5.0.3 MySQL. Funguje tak, že definice tabulky určí pouze její strukturu, data jsou umístěna na vzdáleném serveru a při dotazu na tuto tabulku jsou přenesena po síti na požádání. U tabulek typu FEDERATED je při definici tabulky třeba zadat informace sloužící k připojení ke vzdálenému serveru:

create table tabulka (id int, nazev varchar(30))
connection='mysql://jmeno:heslo@192.168.0.2:3306/database/tablename';

Myšlenka je to zajímavá. Nicméně než se něco takového rozšíří, je třeba mít na paměti následující věci:

  • Definice vytvářené tabulky musí odpovídat definici vzdálené tabulky
  • Výkon takových tabulek bude notnou měrou záviset na rychlosti spojení mezi servery
  • Součástí definice tabulky jsou připojovací informace ke vzdálenému serveru. Pozor na bezpečnost.

CSV

Jak asi tušíte, tento typ tabulek ukládá data oddělené čárkami do textového souboru. Je to méně obvyklý způsob, funguje od verze 4.1.4 a musí se při kompilaci MySQL povolit (ve výchozím stavu není k dispozici a není k dispozici ani u typických binárních distribucí). CSV má více nevýhod - například takto uložená data nelze indexovat.

Závěr

Takový počet typů tabulek u jednoho produktu vás možná překvapil (a to jsem některé exotické typy vynechal). Nic si z toho nedělejte, v praxi se používají většinou pouze dva. MyISAM na data, z nichž se často vybírá pomocí SELECT a InnoDB na data, která se často mění. Je to sice zjednodušující, ale pro orientaci by to mělo stačit.

Verze pro tisk

pridej.cz

 

DISKUZE

BDB vs. InnoDB 30.9.2005 12:49 MaReK Olšavský
L Re: BDB vs. InnoDB 30.9.2005 16:54 Aleš Hakl
  L Re: BDB vs. InnoDB 30.9.2005 22:54 Petr Zajíc
    |- Re: BDB vs. InnoDB 1.10.2005 06:28 MaReK Olšavský
    | L Re: BDB vs. InnoDB 1.10.2005 08:35 Petr Zajíc
    |   |- Re: BDB vs. InnoDB 2.10.2005 13:22 MaReK Olšavský
    |   L Re: BDB vs. InnoDB 2.10.2005 23:15 Michal Čihař
    |     L Re: BDB vs. InnoDB 26.10.2007 12:38 Peter Senigla
    L Re: BDB vs. InnoDB 2.10.2005 19:34 Aleš Hakl
Archive 2.10.2005 14:27 Michal Molhanec
L Re: Archive 2.10.2005 22:29 Petr Zajíc
pivo 3.5.2011 11:52 Josef Karásek
L Re: pivo 3.5.2011 11:59 Ales Bechr
neco 3.5.2011 12:10 Jarda Hrubý
L Re: neco 3.5.2011 12:10 Jarda Hrubý
  L Re: neco 3.5.2011 12:16 Ales Bechr
TESTÍČEK PRO AJŤÁKY 3.5.2011 12:23 Jarda Hrubý
L Re: TESTÍČEK PRO AJŤÁKY 3.5.2011 12:25 Jarda Hrubý
afgsdfg 3.5.2011 12:23 ffffffffffffffffffffffffffff
oprava 3.5.2011 12:28 ffffffffffffffffffffffffffff
ŠESTKA NAVÍC VOLOVÉ 3.5.2011 12:29 Jarda Hrubý
B sk 3.5.2011 13:01 Jarda Hrubý
  L Re: B sk 3.5.2011 13:01 Jarda Hrubý
    L Re: B sk 3.5.2011 13:21 Jarda Hrubý




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