Hlavní navigace

MySQL na konci léta (2)

Lukáš Zapletal

Databázový server MySQL je jedničkou na poli otevřených databázových systémů již řadu let. V poslední době však klepe na dveře nová verze 4.0, která přináší mnoho novinek. Dnes si něco povíme o transakčních tabulkách BDB a InnoDB a popíšeme si také, co bude ve čtverkové řadě nového.

InnoDB

tabulky představují zcela jiný svět. Na stránkách InnoDB se praví: „Transactions, row level locking, hot backup, and foreign keys for MySQL – without compromising the speed of MySQL“. Toto tvrzení vše vystihuje. Vývoj InnoDB tabulek jde mimo MySQL a probíhá pod licencí GPL. Standardní binárky podporu InnoDB tabulek nemají a musíte si je stáhnout nebo překompilovat. Pro Windows se dodává ve standardní distribuci démon mysqld-max, který je s podporou již sestaven.

Nejprve si shrneme, co všechno InnoDB nabízí. Nejžhavější novinkou je určitě plná podpora transakcí a cizích klíčů. Mezi další zajímavé věci patří zamykání na úrovni záznamů (MyISAM umí zamykat pouze tabulky), konzistentní čtení dat (tzv. multiverzování – každý výběr vidí celou databázi ve stejném tvaru, jak na začátku výběru dat, tak na jeho konci), nelimitovaná velikost dat, automatické opravování po havárii a také vysoká rychlost srovnatelná s MyISAM. Při vkládání dat by měl být dle vývojářů InnoDB dokonce rychlejší než MyISAM, což dokazují všemi možnými testy na svých stránkách. Opět ale platí pravidlo „něco za něco“. InnoDB nepodporuje některá rozšíření MySQL, jako například FULLTEXT indexy, indexy na TEXT a BLOB sloupcích a podobně.

Organizace dat a konfigurace serveru je u InnoDB zcela odlišná. InnoDB používá jeden (nebo více) databázových souborů, které je třeba alokovat předem, a samozřejmě transakční logy, které se také musejí někam ukládat. Naštěstí soubor nesoucí data a indexy můžeme nastavit tak, aby rostl automaticky, takže odpadají případné problémy s přibývajícími daty, které je často nutno řešit na jiných databázích. Ovšem toto je krajní řešení, je doporučeno alokovat tolik místa, kolik bude potřeba. Nastavení InnoDB tedy není tak jednoduché a přímočaré jako u standardních tabulek MySQL – MyISAM.

Práce s InnoDB tabulkami je stejná jako s MyISAM tabulkami. Vytvoříte je standardním příkazem a pomocí modifikátoru TYPE určíte jejich typ. Z dokumentace vyplývá, že byste se měli uchýlit k InnoDB tabulkám v případě, když nutně potřebujete transakce (které MyISAM neumí), případně cizí klíče (které zatím neumí). Nasazení InnoDB je také vhodné u často aktualizované databáze s mnoha uživatelskými přístupy a konečně také u databází s obrovskými počty záznamů. Zde MyISAM tabulky často narážejí na problém s maximální velikostí souboru na hostitelském operačním systému.

Druhou možností, pokud potřebujete transakce, je tabulkový typ BDB. BDB je postavený na Berkeley_DB, kterou dobře znají zejména programátoři v Perlu. Jediné, co BDB nabízí, jsou však transakce. Na druhé straně je zde řada nevýhod, BDB neumí mnoho rozšíření MySQL a rychlost není zrovna závratná. Jedná se spíše o nouzové řešení pro ty, kteří by nemohli z nějakého důvodu použít InnoDB.

Do verze 4.x, která je právě ve fázi testování, přibude několik dalších novinek. Základní novinkou bude zbrusu nový formát pro deskriptor tabulek (.frm), který umožní implementaci cizích klíčů. Tato implementace bude v první fázi jednodušší a nebude podporovat všechno to, co konkurenční servery. V první řadě to pravděpodobně bude pouze kaskádové mazání záznamů. Další připravovanou věcí bude možnost zakompilování mysql serveru přímo do aplikace. Vylepšena bude také podpora replikace a zálohování.

Možnost zakompilovat MySQL server do aplikace je nenápadná vlastnost, avšak umožňuje veliké věci. Představte si, že potřebujete svoji aplikaci (dejme tomu jednoduché účetnictví) distribuovat drobným klientům. Představa, že si každý uživatel nainstaluje nejprve MySQL server a pak danou aplikaci, není zrovna nejvhodnější. Toto se bohužel často děje ve Windows u aplikacích psaných v C++ Builderu od firmy Borland, kde se většinou nainstaluje FireBird SQL server. Aplikace jsou tak často dosti objemné. V MySQL však budeme mít možnost přikompilovat si server do aplikace. Jednoduchou změnou funkce, která se připojuje na databázi, úpravy zdrojového kódu končí. Nyní vše funguje tak, jako byste se připojovali na vzdálený server. Aplikace si sama otevírá MYD a MYI soubory a provádí dotazy. Velikost MySQL knihovny je zhruba 2MB, což se dá překousnout. Jinou možnost využití vidím ve www prostředí. Dejme tomu, že můj provider neumožňuje připojení do databáze. Nevadí. Vytvořím si vlastní knihovnu (případně JDBC či DBI ovladač), která bude operovat přímo nad soubory. Tu potom ve svých skriptech (JSP, Perl, PHP…) mohu využívat. Po vydání finální verze 4.0 se určitě objeví tyto „embeded“ knihovny pro mnoho webových prostředí (Perl, PHP a pod.).

V blízké budoucnosti bychom se měli dočkat také kurzorů na straně serveru, podpory UNICODE, plné podpory cizích klíčů a uložených procedur (ty jsou téměř až na samém konci TODO listu, protože autoři zatím čekají, jak se budou uložené procedury vyvíjet). Vývojáři chtějí v budoucnu dosáhnout ANSI SQL 99 a ODBC 3.0.

Mnoho novinek bude také u fulltextových indexů. Autoři slibují logické spojování slov (podobně jako v Google), optimalizovat vyhledávací algoritmus, implementovat seznam always-index slov (např. C++, root.cz), podporovat fulltexty i v MERGE tabulkách, stemming slov a podobně. Jak jsem již psal v předchozím dílu, fulltextové indexy jsou již dnes použitelné. Podrobil jsem je navíc výkonostním testům a můj dojem je dobrý. Vytváření indexu je snadné a rychlé (narozdíl od ručního indexování, kde si musíte navíc napsat vlastní program, který toto indexování provede). Rychlost provádění dotazů je velice slušná, a to i při složitějších podmínkách.

MySQL server je u nás (v České Republice) hojně používán a oblíben, a tak doufám, že jsem vás svým článkem potěšil. Root.cz vás samozřejmě bude informovat, až vyjde finální verze 4.0. Pravděpodobně se pak podíváme, co všechno vývojáři stihli do této verze vměstnat. Do té doby – nashledanou!

Našli jste v článku chybu?

8. 10. 2002 7:31

Pavel Stěhule (neregistrovaný)

To muzu napsat prave pro ty případy jednoduchých selectů a jednoduchých INSERTů a UPDATU. Bohužel fůra programátorů "na to nemá" by sestavili něco složitějšího a tak jim MySQL báječně vyhovuje. Díky rychlosti se můžou vyhnout i souběžnýmu zpracovaní, a tak jim jejich aplikace můžou i fungovat (viděl jsem funkční prasečiny i pro MSSQL). Sám s MySQL nedělám, a viděl jsem jen nějaké grafy publikované kýmsi. Pokud budete psát aplikaci, která bude od databáze vyžadovat pouze ověření, zda někdo je neb…

7. 10. 2002 14:43

PaJaSoft (neregistrovaný)

Jak proboha muzete napsat takovou ptakovinu, ze MySQL v rychlosti prevysuje Oracle i MSSQL?!?!?!

Ono SQL neni jen o jednoduchem SELECTu a jednom klientovi... to uz radsi pouzivejte hashovaci tabulky, BTree apod., vykon budete mit lepsi a nemusite se ucit novy jazyk, kde podle normy neudelate spoustu 'normalnich' veci... asi jako v ANSI Pascalu...



Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo