Jak již bylo řečeno, databázové technologie jsou široce
rozšířeny a jejich vzestup stále pokračuje. S tím vyvstává požadavek
na to, aby data byla zpřístupněna v co nejširším měřítku. Prostředkem,
který toto spojení zajišťuje je „všudypřítomný“ Internet, resp.
World Wide Web - WWW. Zpočátku se jednalo jen o stránky s neměnným
obsahem, ale dnes se odhaduje, že přibližně polovina stránek je generována
dynamicky [14] – tj. obsah většiny z nich se vytváří na základě
informací poskytovaných nějakým databázovým systémem. Uživatel tak může
komunikovat s databázovou aplikací jen prostřednictvím webového prohlížeče.
Oracle8i standardně obsahuje komponentu Web Publishing Assistant s jehož
pomocí je možno vytvářet „pseudodynamické“ webové stránky na základě
SQL dotazů. Dalším nástrojem, už samostatně dodávaným, je Oracle
WebDB, což je kompletní vývojové prostředí nabízející řešení,
jak vytvářet dynamické webové stránky založené na datech z databáze.
Tyto produkty a zejména WebDB budou popsány v následujících kapitolách.
Tento asistent umožňuje vytvářet sestavy ve formátu
HTML na základě databázových tabulek nebo konkrétních SQL dotazů. Takto
vygenerované webové stránky je možno v pravidelných intervalech
obnovovat a udržovat je tak v aktuálním stavu. Možnosti obnovování
budou popsány níže.
Výsledky můžeme formátovat s využitím přednastavených šablon (templates.HTX)
(více viz. kapitola 4.2.3).
Práce s ním je velmi jednoduchá a v několika minutách se dají požadovaná
data připravit ke zveřejnění na Internetu. To vše bez nutnosti programovat
v Javě nebo HTML. Navíc možnosti nastavení obnovování jsou velmi široké
– stránky se mohou obnovovat i po několika minutách a tím se již v
principu blíží dynamickým.
Aby obnovování stránek probíhalo, musí být aktivní služba (pod Windows
NT) OracleWebAssistant – viz. Start Þ
Settings Þ
Control Panel Þ
Services.
Proces vytvoření nové webové stránky je rozdělen do čtyř základních kroků – každý v samostatném okně. Spustí se tlačítkem New v nástrojové liště nebo Create Web Page z uvítací stránky:
Šablony umožňují formátovat výstupy dat do webové
stránky. Jedná se o soubory s příponou HTX. Obsahují HTML kód doplněný
o klíčová slova, která jsou podobná standardním HTML tagům[1]
ve tvaru <%KEYWORD%>. Web Publishing Assistant při použití šablony
(viz. bod 4 předchozí kapitoly) vygeneruje běžný HTML soubor (standardně web.htm).
Implicitní (default) šablona využívá k formátování dat Javovský
applet[2].
Jeho výhodou je hlavně nezávislost na platformě (operačním systému i
hardwaru) a webovém browseru (různé browsery obsahují odlišnosti v
interpretaci HTML kódu). Šablony je možno upravovat (měnit barvu pozadí,
textu, hlavičky atd.) přímo ve zdrojovém kódu nebo v libovolném HTML
editoru – to vše i je-li už stránka vytvořena (v závislosti na nastavení
obnovování se příště již vygeneruje podle změněné šablony v nové
podobě). Podrobnější informace viz. [18].
Tato klíčová slova ohraničují oblast, která se generuje cyklicky pro každý datový záznam. Jednotlivé hodnoty každého záznamu se umísťují prostřednictvím klíčových slov ve tvaru <%jméno_sloupce%>.
Tímto způsobem můžeme do šablony vložit podmínku. Používá se např. pro případ vypsání hlášení pokud zadanému dotazu nevyhoví ani jeden záznam. V podmínkách se používají operátory EQ (=), LT (<), GT (>), CONTAINS (obsahuje).
<%CurrentRecord%> - obsahuje číslo,
které udává kolikátý záznam se právě vypisuje. To je kolikrát proběhl
„cyklus begindetail – enddetail“. Při prvním průběhu má
hodnotu nula (0).
<%CurrentDate%> - obsahuje datum a čas, kdy byla stránka
vygenerována. Formát lze měnit množstvím parametrů – viz. [18].
<%MaxColumn%> - udává počet sloupců ve výsledku daného
dotazu.
<%QueryId%> - obsahuje unikátní číslo vygenerované stránky
(dotazu).
Prakticky bude funkce Web Publishing Assistenta ukázána na tabulkách STUDENTI a TESTY. Bude vytvořena webová stránka s číslem, jménem, příjmením studenta a výsledky všech testů – viz. bod 2. Postup odpovídá bodům z kapitoly 4.2.2 .
SELECT
studenti.id, prijmeni || ' ' || jmeno AS "Jméno", test1, test2,
test3, test4
FROM studenti, testy
WHERE studenti.id = testy.id
ORDER BY prijmeni;
3. Obnovování nastavíme na každou neděli v půlnoci – na kartě On Day(s) of the Week, zvolíme neděli (SUN) a čas 12:00 PM – viz. obrázek 4.2.4 – 1.
Oracle WebDB je kompletní řešení pro vytváření, rozvíjení
a monitorování webových databázových aplikací a webů obsahově závislých
na databázi [19]. Dále umožňuje spravovat databázové objekty (tabulky,
pohledy, funkce, uživatele, role, práva atd.), vytvářet prvky HTML rozhraní
(formuláře, grafy, menu a reporty[4])
nebo nastavovat web server. To vše přes jednoduché rozhraní založené na
HTML s použitím standardního webového prohlížeče (bez znalosti HTML
a Java).
Výsledná aplikace tedy spojuje výhody Internetu (snadný přístup k informacím)
a databáze[5]
Oracle (vysoká úroveň zabezpečení proti neautorizovanému přístupu).
Produkt Oracle WebDB byl v dalších verzích přejmenován na Oracle
Portal[6].
WebDB je založena na třívrstvém modelu [14]. Aplikaci není nutné
instalovat a spravovat v mnoha kopiích na každém počítači, ale stačí
pouze jednou na aplikačním severu. Díky tomu může být klientem libovolné
zařízení vybavené pouze webovým prohlížečem (první vrstva). Druhou
vrstvu představuje web server. Tím může být standardně dodávaný Oracle
WebDB Listener (pod Windows NT musí „běžet“ stejnojmenná služba –
viz. Dodatek B) nebo libovolný HTTP[7]
server podporující rozhraní CGI[8]
(např. Microsoft IIS nebo Apache). Třetí vrstvou je databázový
server Oracle 8i, 8.0.5 nebo 7.3.4 (s některými omezeními).
Uživatelské rozhraní WebDB je představováno sadou dynamicky generovaných
HTML stránek s Java skriptem – obsahuje jen čistý HTML kód[9]
bez přítomnosti Javy. Proto je možné použít na straně klienta i méně výkonný
počítač – veškerá řídící a kontrolní činnost je přesunuta na
aplikační server, kde je nainstalováno WebDB.
Po úspěšném vstupu do WebDB (viz. dále kapitola 4.3.3) se objeví úvodní obrazovka s hlavním menu, které obsahuje pět položek pokrývajících všechny základní funkce celé aplikace. Dále sadu ikon pro rychlejší přístup k některým funkcím a pole pro vyhledávání v položkách menu.
Tato volba poskytuje grafický přehled objektů v databázi (tabulky, pohledy, synonyma, funkce atd.). Lze je třídit podle jména, typu objektu nebo schémat (vlastnictví). Jakmile najdeme konkrétní objekt, můžeme s ním (podle jeho typu) provádět např.:
Uživatel je oprávněn prohlížet komponenty jen ve schématu, ve kterém má právo prohlížení (Browse In privileges).
Zde jsou soustředěny nástroje pro vytváření a editaci jednotlivých komponent[10] a objektů. K dispozici jsou průvodci, kteří krok po kroku vedou uživatele procesem vytvoření jednotlivých komponent. Uživatel může vytvářet komponenty jen ve schématu, ve kterém má oprávnění (Build In privileges).
Všechny funkce jsou rozděleny do následujících podskupin:
ú Forms – formuláře poskytují rozhraní pro úpravu dat v tabulce
ú Menus – menu sestavené z hypertextových odkazů (viz. dále)
ú Frame Drivers – rozdělení stránky na více částí pomocí rámců (frames)
ú Dynamic Pages – vytváření dynamických stránek pomocí speciálního tagu <ORACLE>, do kterého je možno přímo vkládat PL/SQL kód
ú Reports – výstupy hodnot databázových tabulek a pohledů
ú Charts – vytváření grafů založených na datech databázové tabulky
ú Calendars – zobrazení výsledku SQL dotazu ve formě kalendáře
ú Hierarchies – vytváření hierarchických modelů
V této sekci najdeme nástroje pro správu uživatelů, rolí a práv – včetně specifických oprávnění Browse In a Build In (viz. výše).
§ User Manager – pomocí tohoto nástroje lze vytvářet nové uživatele nebo vyhledávat a měnit parametry stávajících. Měnit lze všechny standardní vlastnosti jako heslo nebo role a navíc oprávnění Browse In a Build In.
§ Grant Manager – umožňuje přiřazovat či odebírat oprávnění uživatelům resp. rolím na databázové objekty. Klasickým způsobem (viz. výše) můžeme vyhledat objekt a podle jeho typu mu přiřadit nebo odebrat oprávnění na dotazování (SELECT), vkládání (INSERT), změnu (UPDATE), mazání (DELETE) nebo spouštění (EXECUTE).
§ Role Manager – slouží k vytváření nových rolí nebo k vyhledávání a správě stávajících (přiřazování či odebírání uživatelů).
§ Change Your Password – umožňuje změnit heslo aktuálního uživatele („vlastní heslo“).
§ Report WebDB Privileges – poskytuje přehled uživatelů, kteří mají přiřazenu roli WEBDB_DEVELOPER (viz. dále) a oprávnění Browse In a Build In.
§ Configure WebDB Activity Log – umožňuje nastavit dobu platnosti a prohlížet tabulku záznamů o „žádostech“ uživatele na objekty (obsahuje přehled objektů a dobu jejich první a poslední aktivity atd. viz. Monitor).
§ Listener Settings – dovoluje spravovat vstupní parametry (viz. více v kapitole 4.3.3) a webový server (Oracle WebDB Listener).
Obsahuje nástroje pro monitorování aktivit uživatelů a samotné databáze. Tak lze vyhodnocovat zatížení systému a výkon jednotlivých komponent.
§ User Interface Components – ve formě grafů poskytuje informace o využití komponent jako je doba odezvy a počet záznamů ve výsledku, jmenný seznam komponent, denní a hodinové využití, seznam koncových uživatelů včetně jejich IP adresy a typu browseru.
§ Browse Activity Log – umožňuje procházet (hledat, třídit apod.) tabulku se záznamy o využití komponent – viz. předchozí bod.
§ Database Objects – obsahuje nástroje pro sledování parametrů a aktivit samotné Oracle databáze jako např. informace o databázi a objektech v ní, spotřebě paměti, statistiky využití prostoru datovými soubory atd.
Tato položka, prostřednictvím nástroje Site Builder,
slouží k logickému uspořádání informací do ucelených webových sídel
(Websites). Součástí této struktury mohou být existující
komponenty (reporty, formuláře apod.), ale i libovolné dokumenty uložené přímo
v databázi. Po vložení nových informací či celého dokumentu je tento
automaticky indexován pro vyhledávací mechanismus. Před publikováním lze
požadovat schválení nebo nastavit dobu, po kterou bude dokument přístupný.
Při změně obsahu je možno uchovávat i jednotlivé verze.
Při tvorbě designu website lze využívat všechny standardní prvky jako obrázky,
menu z hypertextových odkazů či rámce (frames). Správa lze provádět z prostředí
website samotné.
Obsahově je website rozdělena do tzv. folderů (obvykle položky hlavního
menu), přičemž pro každý je možno nastavit individuální přístupová práva.
Některé informace tak mohou být veřejně přístupné (Public) a jiné
vyžadovat přihlášení uživatelským jménem a heslem.
Ve webovém browseru zadáme adresu[11]
pro přístup na úvodní stranu WebDB (resp. WebSite), která se skládá ze tří
částí:
jméno_serveru.doména:port/Database_Access_Descriptor
Část adresy |
Popis |
„Naše“ hodnota |
Jméno serveru |
Jméno serveru, na kterém je nainstalována WebDB |
SERVER |
Doména |
Síťová doména serveru |
DOMAIN |
Port |
Číslo portu pro přístup k webserveru (je-li port 80, může být vynechán). |
(80) |
Database Access Descriptor (DAD) |
Hodnota sloužící jako vstupní brána do databáze. Je různá pro každou instanci[12] WebDB nebo WebSite v databázi. |
WebDB |
Poté se objeví okno pro zadání uživatelského jména a hesla – po úspěšném přihlášení se objeví úvodní obrazovka WebDB (viz. obr. 4.3.2). Uživatelský účet je týž jako v databázi Oracle, na které je WebDB nainstalována. Pokud DAD ukazuje na veřejně přístupnou část WebSite, přihlášení je vynecháno.
Pro pohyb ve struktuře WebDB a dosažení jednotlivých funkcích jsou k dispozici následujícími způsoby:
§ Pohled s rámci – kliknutím na ikonu v pravém horním rohu okna se obrazovka rozdělí na dvě části, přičemž v levé je stále k dispozici hlavní struktura WebDB a vyhledávací pole – v pravé části se zobrazuje obsah
Z jakéhokoli místa se lze vrátit na úvodní stranu ikonou v pravém horním rohu okna. Mezi jednotlivými stránkami lze přecházet i pomocí tlačítek Vpřed (Forward), Vzad (Back) webového prohlížeče, avšak ne v průběhu vytváření objektů pomocí průvodců (Wizards). V takovém případě je nutno používat šipky a .
Aby uživatel WebDB mohl vytvářet komponenty a databázové objekty, musí mít přiřazenu roli WEBDB_DEVELOPER. Proto ji nyní přiřadíme uživateli HELMUT.
Roli lze rovněž uživateli přiřadit standardními administrátorskými nástroji (nebo SQL příkazem) v prostředí Oracle8i (viz. kapitola 3).
Všechny vytvořené komponenty lze i po vytvoření kdykoli spravovat.
§ Edit – změny všech parametrů zvolených při vytvoření
K zobrazení komponenty ve webovém prohlížeči slouží adresa ve tvaru:
http://jméno_serveru.doména/DAD/SCHÉMA.KOMPONENTA.show
Kliknutím na symbol zeměkoule v levém horním rohu
okna se zobrazí stránka s informacemi o aktuálním uživateli. Jsou to
mimo jiné identifikace uživatele, jeho IP adresa, typ prohlížeče, přidělené
role apod.
Dále je zde odkaz na funkci změna hesla (Change Password) a odhlášení
ze systému (Log off).
Tvorba ucelené aplikace pomocí WebDB spočívá ve vytvoření
jednotlivých komponent na základě dat v databázi a jejich vzájemném
propojení. Pro získání dat z databázových tabulek můžeme použít
reporty (Reports), popřípadě dynamické stránky (Dynamic Pages).
Editaci, vkládání nebo mazání dat zajistíme
prostřednictvím formulářových polí (Forms). Pro vzájemné propojení
komponent slouží hypertextové odkazy (Links). Menu (Menus) poslouží
k jejich logickému uspořádání a šablony (User Interface Templates)
k úpravě vzhledu jednotlivých stránek.
Nyní zde budou stručně uvedeny postupy vytvoření základních komponent s běžným
nastavením, které jsou použity v ukázkové aplikaci. Seznam a popis
jednotlivých komponent je uveden v kapitole 4.3.2. Vzhledem k celkové
šíři možností WebDB odkazuji například na [19, 20].
13. Potvrdíme vytvoření Þ OK
10. Potvrdíme vytvoření Þ OK
Výchozí stránka prostřednictvím reportu ukazuje výsledky
testů. Report je založený na tabulkách STUDENTI, TESTY a zobrazuje pouze
sloupce ID, Prijmeni, Test1 – Test4 (obr. 4.3.4 –1).
Hodnoty ve sloupci ID tvoří zároveň odkaz na formulář pro úpravu výsledků
testů (obr. 4.3.4 – 2) a ve sloupci Prijmeni odkaz na formulář pro
úpravu údajů o studentech (obr. 4.3.4 – 3).
Po kliknutí na odkaz se ve formulářových polích díky parametrům odkazu (Link)
rovnou zobrazí údaje z příslušného záznamu. Tlačítka umožňují záznamy
prohlížet (Query), aktualizovat (Update), mazat (Delete)
popřípadě přidávat (Insert).
Ve formuláři pro úpravu výsledků testů jsou pole vytvořena ve formě výběru
z hodnot 1 – 4 (List of Values) a položka ID nelze měnit
(pouze ve formuláři pro údaje studentů).
U každé komponenty lze individuálně
nastavit přístupová práva (viz. správa komponent – Privileges v předchozí
kapitole). Tímto způsobem lze nastavit report zobrazující výsledky jako veřejně
přístupný (Public) a formuláře pro úpravu dat ponechat přístupný
jen pro konkrétního uživatele (správce).
Úspěšná změna (vložení nebo mazání) dat se projeví příslušným hlášením.
Pro úplnost je nutno uvést i nejobecnější způsob přístupu k databázi. V roli klientské aplikace může stát libovolný program, který s databází komunikuje prostřednictvím příslušného (nativního) aplikačního rozhraní (API – Application Programming Interface) [31]. Každá databáze má svůj vlastní API. Aby byl program schopen komunikovat s více databázemi, musí podporovat více aplikačních rozhraní, což je velmi nepohodlné řešení. Proto (původně na platformě Microsoft Windows) vzniklo univerzální aplikační rozhraní (API) ODBC. Jeho obdobou je JDBC, které je charakteristické pro databázi Oracle díky široké podpoře Javy (viz. kapitola 2.1.4).
[2] ODBC (Open DataBase Connectivity) je dnes nejrozšířenějším rozhraním pro přístup k databázím a je také téměř všemi databázemi podporováno. Slouží jako prostředník mezi klientskou aplikací a databázovým serverem. Rozhraní ODBC se volá jednotně a ODBC-ovladač pak požadavek předá databázovému serveru pomocí správného protokolu.
Počáteční nevýhodou byl nižší výkon oproti nativním ovladačům. Staré ODBC ovladače sloužily pouze jako mezistupeň mezi aplikací a nativním protokolem databáze. Novější ODBC ovladače však přistupují k databázovému serveru přímo a jejich výkon je srovnatelný s nativními ovladači. Některé databázové systémy používají ODBC jako svůj jediný nativní protokol.
[9, 21] JDBC (Java DataBase Connectivity) je standardizované rozhraní pro přístup k relačním databázím z programů napsaných v Javě. Ve své podstatě je podobné rozhraní ODBC, ale v javových programech není z důvodu bezpečnosti a přenositelnosti programu žádoucí volat kód v jazyce C (ve kterém je napsáno ODBC).
Práce s databází prostřednictvím JDBC se dá charakterizovat následující posloupností akcí [9]:
Pro vlastní implementaci přístupu k databázím slouží tzv. ovladače JDBC, které provádějí veškerou komunikaci s cílovou databází. Vzhledem k tomu, že Java je silně objektově orientovaný jazyk, probíhá vše prostřednictvím objektů. Objektem je jak příkaz SQL předávaný databázi, tak výsledek příkazu. Jednotlivé řádky výsledku příkazu SQL jsou přístupné sekvenčně – po spuštění dotazu SQL je přístupný první řádek výsledku a po zavolání příslušné metody se zpřístupňují další řádky.
[1] Tag je značka HTML ohraničená ostrými závorkami <začátek_tagu> </konec_tagu>.
[2] Applet je malý program nebo aplikace napsaná v Javě.
[3] Ke spojování řetězců v SQL používá systém Oracle dvojznak „ || “ (CONCATENATE).
[4] Reporty poskytují výsledky SQL dotazů ve formě tabulky.
[5] Vlastní data mohou být uložena v libovolné relační databázi [29].
[6] Všechny změny ve jménech produktů Oracle Corporation jsou uvedeny např. na http://programovanie.pc.sk/databazy/clanok.ltc?ID=151
[7] HTTP (HyperText Transfer Protocol) je [2] protokol zajišťující přenos HTML stránek z WWW serveru do prohlížeče.
[8] CGI (Common Gateway Interface) je [2] rozhraní definující způsob spouštění programů a předávání dat mezi WWW-serverem a programem.
[9] Další vývoj směřuje ke generování výstupu v XML, což umožní provoz aplikací i na speciálních zařízeních jako jsou například mobilní telefony [11].
[10] WebDB odlišuje termín komponenty (components) a objekty (objects). Komponenty jsou dynamicky generované webové stránky a obsah, který vytvoří WebDB. Objekty se rozumí objekty databáze Oracle, na kterých jsou komponenty založeny.
[11] Máme-li všechny 3 vrstvy systému zprovozněny na jednom počítači (jako v tomto případě), stačí zadat doménové jméno „localhost“ nebo IP adresu 127.0.0.1
[12] Instancí rozumíme jednu konkrétní instalaci WebDB pod určitým uživatelským jménem.