Žádná pokročilejší aplikace se neobejde bez datové základny realizované formou nějaké databáze. V této kapitole si shrneme nejrozšířenější způsoby přístupu aplikace ke svým datům. Hned ze začátku je nutné vymezit a rozlišit následující pojmy:
Databázový stroj je podle [35] vrstva software mezi fyzickou databází a uživatelem. Řídí všechny žádosti o akci databáze (například dotazy nebo aktualizace). Programátor, který nad databází pracuje, je tedy ušetřen sledování fyzických detailů umístění souborů a formátů, indexovaných schémat atd. Databázový stroj navíc umožňuje centralizovanou kontrolu zabezpečení, kontroluje datovou integritu apod. Často se také nazývá jako Systém řízení báze dat (SŘBD) nebo anglicky Database Management System (DBMS). Typickými představiteli jsou například Oracle, Microsoft SQL Server, MySQL či Postgres.
Data zpřístupněná z databázového stoje přes nějaké definované rozhraní.
Samotná data, nějakým způsobem uložená a uspořádaná. Způsob jejich organizace závsí na použítém databázovém stroji, který je řídí (databáze relační, hierarchické, síťové, objektové apod.). Kromě aplikačních dat jako takových může databáze obsahovat i další údaje, metainformace, triggery apod.
Podoba samotné databáze, jejího rozdělení do konkrétních souborů apod. nemusí tedy programátora ve většině případů vůbec zajímat. Veškeré operace se provádí přes některé rozhraní pro přístup k databázovému stroji. Rozhraní se od sebe navzájem liší zejména mírou zobecnění a následně i vůbec stupněm odstínění od konkrétního SŘBD a jeho specifik. [36] Nejobecnější z nich tak umožňují vytvářet aplikace zcela nezávislé na aktuálně používaném databázovém stroji. Abstraktní databázová vrstva se také často považuje za jeden ze základních požadavků kladených na správně navrženou a vytvořenou webovou aplikací.
Na nejnižší úrovni lze pro práci s konkrétním databázovým strojem používat jeho nativní funkce. Jedná se o základní rozhraní (API), které je specifické pro každý jeden typ SŘBD. Nativní rozhraní je nabízeno zpravidla v podobě dynamických knihoven, které se linkují do výsledného programu. Přímé využívání nativních funkcí je dnes spíše výjimečné v aplikacích extrémně náročných na rychlost. Takové aplikace jsou samozřejmě zcela závislé na použitém typu databázového stroje a při jeho změně je nutné přepsat všechny související části kódu.
Mnohem častější je použití funkcí pro přístup ke konkrétnímu typu databázového stroje, které jsou nabízeny přímo v rámci prostředků daného programovacího jazyka či vývojového prostředí. Jejich podoba a způsob použití je konzistentní s konstrukcemi a postupy v daném jazyce běžnými. Tyto zapouzdřené funkce samozřejmě na svém pozadí volají příslušné nativní funkce nebo dokonce pracují s databází přímo, což však už programátora nemusí vůbec zajímat.
Stejnou nevýhodou jakou u nativních funkcí je i zde závislost na použitém SŘBD. Proto postupem času vznikly některé další koncepty a standardy, které přístup k databázovým strojům zobecňují a eliminují přímou vazbu na konkrétní databázový stroj. Většinou se jedná o další vrstvu, která je vkládána mezi samotnou aplikační logiku a mezi závislé nativní resp. zapouzdřené funkce. Některé novější databázové stroje ale dokonce s postupem času implementovaly tyto obecné mechanizmy jako své nativní rozhraní.
Dlouhou dobu nejpoužívanějším a nejrozšířenějším standardem pro obecný přístup k různým databázovým strojům byla sada ovladačů ODBC (Open Database Connectivity) od společnosti Microsoft. Programátorské rozhraní ODBC má podobu čistého céčkového API, je tedy přímo použitelné výhradně v C/C++ aplikacích. Ostatní vývojová prostředí je pak nabízejí nepřímo přes své vlastní zapouzdřené funkce. Nevýhodou ODBC je jeho neobjektový základ a značná nesystematičnost celého návrhu.
S uvedením jazyka Java a platformy J2EE byla představena i její technologie JDBC (Java Database Connectivity). Analogicky k ODBC poskytuje jednotné rozhraní pro přístup k různým databázovým strojům, tentokrát však pro aplikace psané v Javě. S pomocí speciálního JDBC ovladače lze dokonce přistupovat i k libovolnému ODBC zdroji.
Nicméně i Microsoft si časem uvědomil nedostatky návrhu ODBC. Proto přišel s novým standardem OLE DB a později i s technologií ADO. Ta poskytuje obecný přístup k různým databázovým strojům prostřednictvím standardní COM technologie. ADO existuje i ve verzi pro platformu .NET, kde dokonce v mnoha ohledech předstihuje JDBC v oblasti Javy.
Jazyk PHP prostřednictvím jednotlivých specifických sad zapouzdřených funkcí podporuje celou řadu databázových strojů včetně přístupu k ODBC datovému zdroji. Nicméně i zde se syntaxe a možnosti jednotlivých příkazů pro různé SŘBD značně liší. V zásadě se nabízejí dvě nejpoužívanější řešení abstraktní vrstvy.
První jsou standardní DBX funkce, které poskytuje sám interpret PHP. Pokrývají téměř všechny jinak podporované databázové stroje. Nevýhodou jsou jejich poměrně malé možnosti, které jsou zúženy jen na nejmenší společný funkční základ všech podporovaných SŘBD.
Druhou mnohem rozšířenější cestou je využití speciálních objektových tříd. Původně se využívaly třídy z kdysi populární PHP Base Library, dnes vede jednoznačně třída DB z projektu PEAR. Balík DB zajišťuje jednotný přístup ke všem podporovaným databázím postavený na objektovém základě. Navíc má širší možnosti než standardní DBX funkce, protože některé funkce, které konkrétní databázový stroj přímo nepodporuje, řeší transparentně na své aplikační úrovni.
Obsah stránek vyjadřuje osobní názory, postoje a zkušenosti autora. Copyright © 2004–2010 Jan Tichý.