Na databáze s SQlite – díl 1.

Chtěl bych začít nový seriál, který bude mít patrně 3 díly, ale přesný počet nechci říkat buď z toho důvodu, že zatím nevím, jak se o tématu rozepíšu, nebo z důvodu, abyste sami zkoumali – v případě, že se Vám bude líbit díl první, samozřejmě – jestli už bylo napsáno nějaké to pokračování. Pokud jste dříve sledovali můj seriál nazvaný Vytváříme webové stránky, můžete toto brát jako hodně volné pokračování. Tento seriál by měl být o databázích, konkrétně o SQLite.

V prvním díle si povíme především o tom, co to vlastně SQLite je a stručně si nastíníme jeho možnosti. SQLlite je kompaktní databázový systém, který navzdory svým malým nárokům a velmi vysoké rychlosti implementuje většinu možností standardu SQL92. Kompaktnost posuďte sami: s přehledem se celá jeho knihovna s přehledem vejde do půl MB. Jeho zvláštností a v mnohých případech výhodou (některých možná nevýhodou) je uložení veškerých dat do souboru. Ačkoli se budu s největší pravděpodobností zmiňovat pouze v kombinaci s jazykem PHP (od jisté verze je již jeho součástí, ve verzi PHP 5.3.6 zde najdete verzi sqlite2 i sqlite3), je to v podstatě malá knihovna napsaná v jazyce C, kterou můžete použít pro celou škálu jazyků.Dokonce se obejdete i bez použití serveru. Ba co víc, o SQLite můžete nyní často slýchat už i u mobilních telefonů (zatím s Google Android).

Nevýhody SQL však zabraňují jeho nasazení ve velkém. Jedna z největších nevýhod tkví především v malé bezpečnost dat. Druhou nejspíše nevýhodou je, že jak procházel SQLite vývojem, postupně se rozvětvily druhy souborů, do kterých se databáze ukládá. Jsou to soubory .dbm, .sqlite, .db2 a .db3 (snad mám všechny). A do třetice SQLite nedělá kontrolu typů při vstupu. Pokud už se bavíme o typech, SQLite nezná DATE, pouze DATETIME.

Popsaná implementace jednoho z SQL standardu je velkou výhodou, nicméně alespoň já jsem se při vytváření databáze docela nadřel, než jsem odladil správnou syntaxi (přestože původní před změnou by třeba Firebird zkousnul bez problému). Problémy začnou už při definování cizích klíčů.

Existuje několik zajímavých nástrojů pro správu databáze SQLite, z nichž nejvíce mě zaujal doplněk pro Mozillu Firefox SQLite Manager, nyní ve verzi 0.7.7. Tyto prográmky nabízí obvykle samozřejmě základní možnosti práce s databází, možnost spustit vlastní SQL dotaz (otestovat funkčnost), definování primárního klíče, často i definici indexů, ale možnost přidání cizích klíčů obvykle chybí – ani nevím proč, taková důležitá věc. Ve starších verzích se dokonce musela tato funkčnost teprve manuálně nastavit).

S SQlite si přijdou na své zastánci jak klasického procedurálního programování, tak i zastánci objektů. Nejvíce podstatných informací o tvorbě SQL dotazů se můžete dozvědět na, nejvíce informací, co se připojení databáze a práci s SQLite z příkazového řádku se můžete dozvědět na stránkách php.net, a to jak, tak.

V SQlite tabulkách můžete použít kódování UTF-8 nebo ISO 8859-1. Pozor, velmi oblíbené ISO 8859-2 podporované není, takže pokud budete chtít mít stránky v něm, musíte při každém volání dotazu z databáze i při každém uložení zakódovat nebo dekódovat do nebo ze správného kódování.

Nicméně i přes nevýhody se SQLite pro malé a menší projekty hodí. Dokonce si umím představit i kombinaci SQLite s MySQL, třeba svěřit SQLite více časově náročnou úlohu, kde bezpečnost nehraje primární roli, nicméně který návrhář by se patlal se dvěma návrhy databází. Příště bychom si měli napsat příklad SQL, který by měl -alespoň konkrétní verzi SQLite- fungovat. Něco z toho budou to přesně ty části kódu, nad kterými jsem zprvu dlouho dumal.

O Petr Fořt

Student ČVUT FJFI KSE ASI (Softwarové inženýrství v ekonomii). Zajímám se o počítače (programování, diagnostika chyb hw), hudbu. Mám rád grilování, táboráky, hraní na kytaru a srandu v dobré společnosti.