4 Veeb kui infosüsteem
Veebi eesmärgiks oli algselt lihtsalt staatilise info edastamine, seejärel tekkis üha enam vajadus klientidega interaktiivse suhtlemise järele – veeb muutus dünaamiliseks. Võeti kasutusele andmebaasisüsteemid veebis näidatavate ja veebist saadavate andmete säilituseks – veebi võib vaadelda ühe andmebaasiliidesena, veebi kaudu saab kasutajale andmebaasi sisu suvalisel kujul esitada ja kasutajal on võimalus andmeid reaalajas muuta. Tänapäeva veebi võib vaadelda ka kui infosüsteemi, mis kasutab ühe komponendina andmebaasi.
4.1 Mitmekihiline infosüsteem
Infosüsteeme vaadeldakse tavaliselt mitmekihilistena, kus erinevad kihid tegelevad eri taseme töödega: andmebaasidega suhtlemisega, kliendiga suhtlemisega, nende kahe kihi omavahelise suhtlusega. Infosüsteem võib olla ühekihiline (kõik tegevused on ühes programmis koos) või näiteks kasvõi kuuekihiline (turvalisuse tagamiseks toimub andmebaaside ja kasutaja suhtlemine läbi mitme vahekihi).
4.1.1 Ühekihilised süsteemid
Ühekihilistes rakendustes on kogu funktsionaalsus kokku kogutud ühte programmi:
- programm suhtleb kasutajaga (kasutajaliides);
- programm töötleb kasutajalt saadud andmeid;
- ja programm haldab kasutajalt saadud andmeid (on ka andmebaasiks).
Veebi puhul on väga raske ühekihilisi süsteeme leida, kuid kui näiteks vaadelda kõige esimest veebi mudelit, kus kogu veeb oli staatiline, siis seda võib ette kujutada kui ühekihilist süsteemi. Samas veebiserver kui selline on sellel juhul ainult rakenduse tarnijaks. Samas kui lisada staatilisele HTML-ile mingi funktsionaalsus (dünaamilise HTMLi – DHTML – näol), siis kihte juurde ei teki, aga süsteem omandab juba ka mingi ilme. Sama efekti võib saavutada koostades Java rakendusi.
Järgmine pilt illustreerib sellist veebisüsteemi:
Sellised süsteemid on näiteks mõned veebis tegutsevad kalkulaatorid, pangad kasutavad sellist süsteemi näiteks laenutestides – lihtsad programmid, mis ei vaja oma tööks serverit.
4.1.2 Kahekihilised süsteemid
Kahekihilise süsteemi puhul eksisteerib tavaliselt mingi andmebaas ja kasutajaliides, mis suhtleb selle andmebaasiga. Seega esineb siin kaks kihti: andmebaasisüsteem haldab andmebaasi; programm suhtleb kasutajaga (kasutajaliides) ja töötleb kasutaja poolt saadetud andmeid ning vahendab neid andmebaasi.
Veebi puhul on kahekihilise süsteemi ülesehitus natuke teine. Nimelt on sel juhul veebisüsteemi töö jaotatud kaheks:
- Andmebaas, mis teatud aja tagant moodustab oma andmetest väljundi ja paigutab selle veebi. Selleks on andmebaasisüsteemis defineeritud teatavad protseduurid andmete saamiseks ja nende veebi jaoks kujundamiseks.
- Kasutajaliideseks on selle andmebaasi poolt väljastatud HTML, mis võib sisaldada ka näiteks dünaamilisi elemente (DHTML, Java) andmetega kliendi pool manipuleerimaks.
Järgnev pilt illustreerib antud olukorda:
Näiteks Microsoft SQL Server (alates versioonist 6.5) omab spetsiaalset liidest andmete veebis avaldamiseks (Web Assistant), mis lubab andmeid HTMLina avaldada ja seda protseduuri ka automaatselt teatud aegadel käivitada. Seda tüüpi süsteeme on väga kasulik kasutada olukordades, kus andmebaasidest tehakse palju sarnaseid päringuid. Siis on kasulik luua süsteem, mis teatud aja tagant saadab andmebaasi väljundi veebi staatiliste HTML lehtedena. Sellist süsteemi on soovitatav kasutada näiteks rahvaloenduse reaalajas jälgimiseks – andmebaasi koormuse vähendamiseks tehakse iga minuti tagant valmis kõik HTML lehed ja vahetatakse need veebiserveris.
4.1.3 Kolmekihilised süsteemid
Kolmekihilise infosüsteemi puhul lahutatakse kasutajaliides ja äriloogika (kogu töö andmetega on kasutajaliidesest eraldi komponenti viidud). Sellisel juhul eksisteerivad kolm kihti on järgmised:
- Andmebaasi kiht, mille ülesandeks on andmete haldamine ja ärikihile juurdepääsu võimaldamine.
- Ärikiht sisaldab ärireeglistikku, mille alusel toimub andmebaasist andmete leidmine ja nende sinna panemine. Kihi ülesandeks on andmete vahendamine kasutajaliidese ja andmebaasi vahel. Sellesse kihti ehitatakse tavaliselt kogu süsteemi funktsionaalsus.
- Kasutajaliides, mille ülesandeks on andmete näitamine ja muutmise jaoks liidese loomine. Kõik andmed saadetakse ja saadakse ärikihilt.
Veebi süsteemides on kolmekihiline süsteem väga tavaline. Sellisel juhul on kihtideks:
- Andmebaas, mis haldab andmeid.
- Veebiserver koos seal töötavate programmidega (CGI, ISAPI, serveripoolsed skriptid), mis loevad andmebaasist andmeid, kujundavad neid ja saadavad kujundatud tulemuse kliendile; lisaks loevad nad kliendi poolt saadetud andmeid ja võimaldavad nende andmete salvestamist andmebaasi.
- Kasutajaliideseks on tavalised HTML lehed kliendi brauseris.
Kolmekihilist süsteemi kasutavad väga paljud veebisüsteemid (otsingumootorid, andmebaasid, ajalehtede veebiväljaanded, jne). Veebiserveris võib sel juhul kasutada suvalist veebi programmeerimise vahendit, tänapäevastes süsteemides toimub kliendi pool andmete kujundamine DHTMLi vahenditega vähendamaks serveripoolset koormust – sel juhul saadetakse suur hulk andmeid korraga kliendile ja seal näidatakse neid vastavalt kliendi soovidele. Sellise süsteemi puhul hajub ärikiht küll kliendi ja serveri vahele.
4.1.4 Mitmekihilised süsteemid
Kui süsteem muutub suuremaks, andmeid tekib üha enam, andmemahud suurenevad, funktsionaalsust on vaja suurendada jne võib kolmekihilisest süsteemist väheseks jääda. Kolmekihilise süsteemi korral on kogu funktsionaalsus ja andmetega suhtlemine koondatud ühte vahekihti, kui aga andmete mahud lähevad suureks, kõikide andmetega on vaja midagi teha (funktsionaalsus suureneb), siis saab vahekiht väga suure koormuse ja selle haldamine võib muutuda raskeks. Sellisel puhul luuakse tavaliselt neljakihiline süsteem:
- Andmebaas.
- Andmebaasidega suhtlemise komponendid tegelevad ainult andmete vahendamisega andmebaasi ja ärikihi vahel.
- Ärikiht sisaldab ainult süsteemi funktsionaalsust, seda kihti ei huvita, kus tabelis andmed reaalselt asuvad ja kuidas nad andmebaasi ja sealt tagasi saavad, tema töötleb andmeid ja saadab (või saab) need andmebaasi komponentide kihile ning teiselt poolt saadab andmed otse kliendile.
- Kasutajaliides.
Veebi puhul leiab kasutamist ka viiekihiline süsteem. Nimelt kui soovitakse lahku lüüa äriloogika ja veebi disainimine, siis luuakse eraldi kiht, mis tegeleb süsteemi funktsionaalsusega. Kihid on sel juhul:
- Andmebaas.
- Andmebaasidega suhtlemise komponendid.
- Ärikiht tegeleb süsteemi funktsionaalsuse realiseerimisega.
- Kujunduse kiht tegeleb ärikihi poolt tagastatud andmete kujundamisega ja veebi saatmisega ning kasutajalt saadud info ärikihile vahendamisega.
- Kasutajaliides.
Lisaks neile kihtidele võivad mõned spetsiifilised süsteemid (näiteks panga infosüsteem) nõuda spetsiaalset lisakihti (või ka mitut) turvalisuse tagamiseks (kasutajate tuvastamine, õiguste kontroll, kasutajategevuste logimine).
4.2 Milline vahend valida?
Millist veebiinfosüsteemi siis luua? Ja millest see koosnema peaks? Kas kasutada andmebaasi? Kui, siis kui palju kasutada andmebaasi? Sellised küsimused tekivad kindlasti iga veebi süsteemi looja peas kõigepealt. Kõigepealt peab panema paika vahendid ja server-süsteemid, mida kasutatakse: andmebaasisüsteem, veebiserver, veebiserveris programmeerimise vahendid, andmebaasidega suhtlusvahendid.
Tänapäeval on andmebaasiservereid niivõrd palju, et valik ei tohiks mingil juhul väike olla. Kasutada võib alates väga lihtsatest süsteemidest nagu MySQL ja lõpetades suurte andmebaasisüsteemidega nagu Oracle ja Microsoft SQL Server. Valikul saavad tavaliselt määravateks toote hind, hallatavus ja lisavõimaluste rohkus. Näiteks MySQL süsteem on Linux keskkonnas kasutamiseks tasuta, Windows keskkonnas aga mitte. Suurte süsteemide korral nagu Oracle ja MS SQL Server tuleb tähele panna, et lisaks andmebaasiserverile tuleb osta veel ka spetsiaalne litsents andmebaasi veebirakendustest kasutamiseks (MS SQL Serveri puhul tuleb näiteks osta Internet Connectori nime kandev litsents). Seega võib öelda, et andmebaasiserveri valik on täiesti vabalt valitav, kuna näiteks Windows keskkonnas on pea kõikidele andmebaasisüsteemidele olemas ODBC draiverid.
Veebiserveri valik tehakse põhiliselt isikliku meeldimise järgi. Windows keskkonnas kasutatakse väga palju Microsoft Internet Information Serverit, kuid kes on varem töötanud UNIX keskkonnas, eelistab tavaliselt kasutada Apache serverit. Netscape serverit kasutatakse ka palju, aga selle juures on määrav asjaolu, et see server ei ole vabavara. Kõik veebiserverid võimaldavad serveri laiendamist, serveripoolseid skripte ja loomulikult CGId.
Veebi programmeerimise vahend valitakse tavaliselt harjumuse järgi. Kui veebi looja omab CGI harjumust, siis ta selle ka valib. Siin tasuks aga mainida, et CGI lahenduste kasutamise vajalikkust tuleb väga tõsiselt arutada, kuna CGI on kõige aeglasem vahend veebi programmeerimiseks. Kindlasti leidub süsteeme, kus ka CGI end õigustab, aga kui süsteem omab vähegi suuremat funktsionaalsust, tasuks kaaluda mõne ISAPI sarnase lahenduse kasutuselevõttu. Peamiseks põhjenduseks võib tuua just kiiruse; lisaks võimaldab ISAPI palju enamat kui CGI, näiteks serveri laiendamise võimalus. Ka serveripoolsete skriptide kasutuselevõtt on mõttekas. Kuigi skriptid on aeglasemad kui puhas ISAPI, on neid palju kergem luua ja hallata.
Andmebaasidega suhtlemisel Windows keskkonnas on valida kas ODBC, OLE DB, ADO või andmebaasi vahendite vahel. ODBC üheks suurimaks miinuseks peetakse ühenduse loomise aeglust. Kuid sellele puudusele võib pakkuda lahenduseks tööskeemi, kus rakenduse töö alguses luuakse vajalikud ODBC ühendused ja neid kasutatakse kogu töö käigus. Näiteks võimaldab ISAPI rakenduste loomine sellist skeemi kasutada, kuna ISAPI rakendused laetakse tavaliselt ainult ühe korra. OLE DB ja ADO on väga võimsad ja palju kasutust leidvad vahendid. Nende suurteks plussideks on mugavalt kasutatavad üldised liidesed ja objektid – andmebaasiserveri vahetusel tuleb muuta väga vähe. Andebaasiserveri vahendite kasutamise kasuks räägib asjaolu, et need on väga kiired, kuid miinuseks on see, et andmebaasiserveri vahetuse korral tuleb süsteemi uuesti töölesaamiseks väga palju lisatööd teha.