The paper presents some aspects concerning the quality improvement of the script design , using MySQL for the development of the e-Learning platforms . Also some methods and techniques are proposed for the optimisation of the execution time for query processing using these data bases. The performances of these methods and techniques are illustrated by experimental results. Key words: E-learning,Web Based Learning, query optimization, execution time, databases.
1. Introducere
Dezvoltarea exploziv a internetului a permis extinderea acestuia si pentru domeniul nvmntului la distant. Aceast nou abordare a constituit nceputul unei schimbri fundamentale a modului n care se nva, se pred sau se auto-nva, cu scopul formrii continue a studenilor, a cror vrst nu mai constituie a barier. Fa de nvmntul tradiional, care este organizat pe grupe de vrst, cel on-line este axat pe subiecte. In noua viziune la acelai curs on-line, pot participa studeni de vrste, pregtiri, si experiene profesionale diferite, provenind din zone geografice distincte. n esen, nvmntul la distanta (E-learning-ul) ofer accesul comod i eficient al studenilor la informaii i cunotine de ultim ora, metode moderne i eficiente de predare si nvare. In aceast nou abordare studenii pot beneficia de o instruire i o formare permanent precum i o evaluarea on-line a cunotinelor lor. n acest sens, E-learning-ul este o alternativ la educaia permanent n societatea informatizat de azi sau de mine.[1] Pentru termenul de E-learning nu se poate afirma c exist un consens clar privind nelesul intrinsec, dar in general E-learning este sinonim cu: On- line Learning, Distance Learning sau Web Based Learning Web-Based Training (WBT).[12] n cele ce urmeaz, se va face referire la E-learning n sensul de Web Based Learning, utiliznd facilitile oferite de ctre internet. Referindu-ne la aceste sisteme putem afirma cu certitudine ca regulile generale pentru o pagin Page 1 of 10 de web, sunt valabile att n privina realizrii ct i a exploatrii ulterioare. In continuare vom prezenta cele 2 aspecte menionate anterior.
2. Limbajul server-side
E-learning-ul fiind bazat pe web, pentru exemplificare am ales unul dintre posibilele limbaje, i anume cel mai rspndit , PHP-ul deoarece sistemele dedicate acestor procese sunt dinamice. n istoria tehnologiilor utilizate la realizarea site-urilor web, limbajul PHP a aprut in 1994 din nevoia lui Rasmus Lerdof de a afla cte persoane i vizualizeaz pagina de internet. El a denumit setul de scripturi create PHP, acronimul pentru Personal Home Page. Evoluia limbajului a fost spectaculoas n anii urmtori, dar adevratul succes a nceput s se concretizeze cnd Zeev Suraski i Andi Gutmans i-au adus contribuia la motorul PHP, motor care poart de la versiunea 4 a PHP numele Zend, o combinaie de litere din prenumele creatorilor si: Zeev i Andi. [4] Fiind open-source, PHP beneficiaz de un suport important i constant din partea comunitii on-line, foarte numeroase, fapt care a dus la rspndirea rapid a paginilor de internet care folosesc acest limbaj. Intre anii 2000 i 2002 numrul lor a crescut de peste 130 de ori, in timp ce numrul site-urilor bazate pe alte tehnologii cum sunt ASP(Active Server Pages), Java Server Pages (JSP) sau Cold Fusion s-a mrit de maxim 16 ori.[12] Pe lng multiplele avantaje pe care le are, cum ar fi funciile multimedia, manipularea coninutului, utilizarea variabilelor HTTP[6], cea mai semnificativ rmne totui uurina cu care acesta lucreaz cu bazele de date. Programatorul are la ndemn o serie de funcii dedicate pentru utilizarea bazelor de date i astfel din codurile PHP poate apela practic toate comenzile MySQL.
3. MySQL. Baze de date.
MySQL este cea mai folosita soluie pentru aplicaii cu baze de date. Rspndirea pe scar larg se datoreaz n principiu, faptului c MySQL este open-source dar si contribuiei, respectiv suportului companiei productoare [7]. Am putea enumera o serie de firme mari care utilizeaz popularul MySQL printre care este suficient dac re-amintim Google sau Yahoo. Se poate afirma c un procent semnificativ dintre aplicaiile care folosesc aceast soluie sunt bazate pe internet sau intranet, pagini de web, portaluri de web, aplicaii client server . MySQL se poate utiliza i la aplicaii desktop , chiar mai mult dect att, se poate folosi aproape cu toate limbajele de programare de nivel nalt , de la .NET pn la PHP. Page 2 of 10 Pe lng versiunea open-source[9], dac se intenioneaz utilizarea platformei n scopuri comerciale, atunci se impune achiziionarea unei versiuni cu licen. Una dintre cele mai rspndite soluii, ce sta la dispoziia utilizatorului bazelor de date este popularul PhpMyAdmin, care este realizat n ntregime in PHP si are o interfa foarte prietenoas, ca alternativ la linia de comand pentru executarea comenzilor MySQL[2]. PhpMyAdmin este foarte des utilizat ca i component integrant n pachetele de administrare ale servere-lor de web (pachetele de gzduire), mpreun cu aplicaia Cpanel. n cazul articolului de fa au fost utilizate n tandem att PhpMyAdmin cat i o aplicaie care ruleaz sub Windows, Navicat. Acesta are deja o serie de faciliti privind exportul i importul de date n diferite formate i poate fi chiar generator de query-uri[8].
4. Despre platformele E-learning.
n cazul nvmntului bazat pe internet, au aprut o serie de soluii comerciale, dar i gratuite sub incidena licenei open-source, dezvoltate de diferite firme sau comuniti, soluii care se pot defini mai exact prin denumirea de Learning (Content) Management System - L(C)MS. Un sistem de management al coninutului (SMC.) este procesul de aprovizionare sistematic i structurat, de creare, prelucrare, administrare, prezentare, procesare, publicare i reutilizare al coninutului [5]. Avantajele unor astfel de sisteme sunt multiple, dar poate cel mai relevant este acest "anytime, anywhere", adic accesibil oricnd i de oriunde, necesitnd doar un acces la internet prin intermediul unui navigator(browser)[12] de web.
Dintre facilitile, cerinele ridicate de un astfel de sistem, se pot meniona: crearea de coninut - permite generarea la orice moment a unor categorii noi de cursuri (materii), coninuturi aferente, prin importul ct mai uor al diferitelor formate electronice (MsWord, MsPowerPoint, Pdf, ...)[12]; managementul coninutului - aceste sisteme trebuie s asigure uneltele necesare organizrii eficiente a coninutului, trecerea la diferite versiuni, stocarea datelor i arhivarea acestora; compatibilitatea - un alt criteriu, menit s asigure schimbul facil de informaii ntre astfel de sisteme; flexibilitatea - modificri n definiiile entitilor i a relaiilor dintre acestea nu vor necesita modificri eseniale la nivelul structurii bazei de date; scalabilitatea - nu vor exista probleme de performant la mrirea volumului de date procesat; Page 3 of 10 abstractizarea - modelul trebuie s asigure gestiunea datelor pentru orice aplicaie similar orientat spre publicarea informaiei, structura tabelelor de baza trebuie sa fie similar. In utilizarea bazelor de date, servere de web, sisteme(site-uri) bazate pe web, se poate contura un scenariu limit Acest lucru se datoreaz accesrii prea lente a bazelor de date, a timpilor de rspuns prea mari, a cerinelor greite (fr rezultate), a creterii jurnalelor de erori si in consecin utilizatorii ncep s fie refuzai de la conectare. Aceste neajunsuri se pot ameliora i chiar elimina, dac sistemul n cauz este proiectat corespunztor condiiilor ulterioare de funcionare. Creterea calitii acestor platforme are o serie de parametri de care aceasta caracteristic depinde n mod direct. Satisfacerea cerinelor clienilor n acest context, se reflecta prin disponibilitatea continu a informaiilor n vederea consultrii acestora n ct mai bune condiii. De multe ori ns acest deziderat este foarte greu de atins n mediul internet. Dac ne gndim doar la rspndirea pe scar larg a mai multor tipuri (standarde) de motoare de cautare (IExplorer, Mozilla, Opera, etc.) i aici putem sublinia lipsa unui standard general valabil pentru HTML i CSS [12]. De asemenea putem remarca diferena dintre sistemele de operare, rezoluii i de ce nu, diferenele de code- pages, mai exact de caractere specifice unor regiuni sau ri. De asemenea exist in lumea virtual formate diversificate de documente, nu ntotdeauna cele standardizate, cum ar fi pdf-ul. Prin urmare, dac nu lum n considerare toi aceti factori, este foarte greu s se ating un nivel de calitate ct mai ridicat. n cadrul lucrrii de fa, se prezint unele aspecte i concluzii legate de partea de software (ansamblul de scripturi i baze de date). Acestea sunt rezultatul preocuprii autorilor n direcia mai sus mentionata, pentru asigurarea unei funcionri optime, prin care s se ating nivelul de calitate necesar acestor platforme. Sub aspectul optimizrii acestor sisteme, n lucrarea de fa factorul de interes este timpul de executare al scripturilor care se realizeaz pe partea de server, informaia returnndu-se utilizatorului prin intermediul unui navigator de internet. In continuare se prezint cteva dintre rezultatele obinute n acest sens.
5. Optimizarea procesrii
Pentru a face o analiz asupra timpilor de executare ai cerinelor MySQL i prin intermediul script-urilor PHP, s-a creat o baza de date simbolic , de 2000 de nregistrri a utilizatorilor, de tip e-learning prezentata in Tabelul 1.
Page 4 of 10 Tabelul 1: Coloana Tip Lungime Special ID INT 11 Unique NUMELE VARCHAR 255 PRENUMELE VARCHAR 255 EMAIL VARCHAR 255 TELEFON VARCHAR 255 ANUL VARCHAR 255 SECTIA VARCHAR 255 USERNAME VARCHAR 255 PAROLA VARCHAR 255
Msurarea timpilor de executare ale script-urilor rulate s-a fcut folosind funcia microtime() din PHP, care returneaz timpul UNIX curent. Insernd secvena de cod: $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime;
la nceputul fiierelor iar secvena
$mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = ($endtime - $starttime); la sfritul acestora, avem posibilitatea s determinm cu exactitate timpul scurs ntre cele dou secvene. Valoarea timpului de executare al script-ului analizat, este regsit n variabila $totaltime. n general, nainte de a scrie orice aplicaie web, trebuie foarte bine cunoscute cerinele i condiiile in care aceasta va fi folosit. n cele ce urmeaz prezentm cteva dintre rezultatele obinute, prin teste, folosind structura de baza de date ilustrata anterior. Se pot delimita dou direcii majore prin care se reduc timpii de executare, cnd se folosesc script-uri server-side, care lucreaz cu baze de date i deservesc utilizatorii prin intermediul unui browser web.
6. Optimizarea liniilor de cod
Ne referim n cazul nostru la optimizarea rulrii secvenelor de program PHP. Aceste secvene sunt imbricate n codul HTML, sau se regsesc individual, dar oricum rezultatul este tot un cod HTML. Page 5 of 10 Se poate afirma, ca este bine ca trecerea de la HTML la PHP n cadrul unui script s se fac de ct mai puine ori, adic secvena de deschidere <? > (una dintre cele patru posibile) s se reduc la minim. Pentru a verifica practic acest lucru am msurat timpii de executare pentru dou variante diferite ale unui script PHP, care ia anumite date din baza de date e-learning din Tabelul 1 i le afieaz sub o form convenabila(cod HTML) ntr-un browser.
Cazul 1. - Neoptimizat n interiorul buclei WHILE care parcurge rezultatele primite din baza de date, la fiecare pas se trece din PHP in HTML de mai multe ori pentru afiarea codului HTML corespunztor rndului de tabel, astfel:
Cazul 2. - Optimizat n interiorul buclei WHILE, codul HTML aferent rndului din tabel se pune ntr-un echo, astfel trecerea de la codul PHP la HTML nu se mai realizeaza.
Prezentm de asemenea rezultatele obinute pentru cazul cererii trimise de script-ul PHP ctre MySQL, n vederea afirii datelor cu care a fost populat[11] Prezentam tabelul utilizatori sub forma de mai jos.
Tabelul 3: Id Numele Prenumele Telefon 1
Se pornete de la premiza c se dorete afiarea tuturor utilizatorilor care satisfac o anumit condiie. Greeala major in asemenea cazuri, atunci cnd avem de a face cu un volum mare de date, este de a selecta toate nregistrrile, urmnd ca din tabloul n care acestea sunt plasate sa se afieze numai acelea care satisfac o anumit condiie. Soluia optim este oferit de interogarea optim a bazei de date cu scopul selectrii numai a acelor date care prezint interes. n cazul de fa, am modificat nregistrrile cmpurilor anul din Tabelul 1, care reprezint utilizatorii, la jumtatea numrului de nregistrri (1000) In acest mod valoarea coninut este 2 , deoarece se dorete afiarea acelor utilizatori (studeni) care sunt nscrii in anul de studiu 2.( valoarea implicit este 1).
Page 7 of 10 Cazul 1. - Neoptimizat
Cererea MySQL va selecta toate nregistrrile din Tabelul 1, dar se vor afia doar acele rnduri(nregistrri) unde anul este egal cu 2.
Cererea are forma: $query="SELECT * FROM utilizatori";
Iar secvena de afiare WHILE: while($row=mysql_fetch_array($result)) { if ($row['anul'] == 2) { echo " <tr> <td>$row[id]</td> <td>$row[numele]</td> <td>$row[prenumele]</td> <td>$row[telefon]</td> </tr> "; } }
Pagina cu rezultate a fost generat in 2.37645101547 secunde.
Cazul 2. - Optimizat
n acest caz cererea MySQL are forma: $query="SELECT * FROM utilizatori WHERE anul=2 ";
Iar secvena de afiare WHILE: while($row=mysql_fetch_array($result)) { echo " <tr> <td>$row[id]</td> <td>$row[numele]</td> <td>$row[prenumele]</td> <td>$row[telefon]</td> </tr> "; } Page 8 of 10 Astfel, pentru optimizarea fcut, am obinut un timp de generare al rezultatelor in 1.80704913139 secunde. Diferena fa de cererea anterioar este de 0,569401884080. Se poate observa, cum prin analiza atent a problemelor i alegerea variantelor optime se pot obine diferene semnificative. n cadrul lucrrii de fa s-a folosit ca platform de testare un calculator personal IBM, avnd ca sistem de operare Windows 2000 Profesional + Service Pack 4, cu pachetele necesare pentru realizarea de server web: - Apache 2.0.48 (Win32) ca server de web - PHP Versiunea 4.3.10 - procesor hypertext - MySQL Server 4.1 pentru baza de date Asupra msurtorilor efectuate cu diferite combinaii i sintaxe, atunci cand se ia n considerare si utilizarea script-urior PHP, se pot formula unele recomandri privind obinerea unor timpi minimi de executare pe platformele de acest gen. (Anexa 1)
Concluzii
In cazul cererilor optimizate, am obinut un timp de generare al rezultatelor in 1.80704913139 secunde, ctigul faa de cererea anterioara fiind 0,569401884080 secunde. Este evident faptul c printr-o analiza atent a problemelor i alegerea variantelor optime se pot obine avantaje semnificative.
Bibliografie
[1] M. Vlada, E-Learning i Software educaional, Conferina Naionala de nvmnt Virtual, 2003, pag. 12 http://fmi.unibuc.ro/cniv/ , accesat la 10.01.2007 [2] Matthew Norman, Database Design Manual, PHP i MySQL, Springer 2004, pag. 199-203 [3] Betsey Bruce, Building Online Learning Applications, Peachpit Press 2002, pag. 420-446 [4] Simon Stobart, Mike Vassileich, PHP and MySQL Manual, Springer 2004, pag. 29-35 [5] Farida Hasanali, Paige Leavitt, A Guide for Your Journey to Knowledge Management, APQC 2003, pag. 63-90 [6] Larry Edward, Php and MySQL for dinamic webpages, Peachpit Press 2003, pag. 107-112 [7] Hugh E. Williams, David Lane, Web Database Applications with PHP & MySQL, O'Reilly 2002, pag. 110-113 [8] Ben Forta. MySQL Crash Course , Computers 2005, pag. 121-131 [9] Andrew M. St. Lauren, Understanding Open Source and Free Software Licensing, O'Reilly 2004, pag. 1-11 [10] Larry Edward Ullman, Php and MySQL for dinamic webpages, Peachpit Press 2003, pag. 185-189 Page 9 of 10 [11] Julie C. Meloni, PHP Essentials, Second edition, Tomson Course Technology 2000, pag. 109-135 [12] E-Learning glossary - World's biggest e-Learning glossary - http://www.e- learningguru.com/gloss.htm, accesat la 11.01.2007
Anexa 1
1. Se vor selecta, n cadrul unei fraze SELECT, doar cmpurile de interes i se va evita folosirea SELECT *, ori de cate ori este posibil; 2. Se vor plasa cele mai semnificative argumente ct mai la dreapta posibil deoarece MySQL interpreteaz interogrile de la dreapta la stnga; 3. Se va evite folosirea unor valori care se schimb foarte rar ca nregistrri n baza de date. Este preferabil ca acestea s fie incluse n fiiere de unde vor fi ncrcate la nevoie; 4. Se recomanda folosirea index-urilor,[10] unde este cazul pentru a reduce timpii de acces, mai ales la utilizarea frecvent a SELECT-urilor; 5. Se recomanda folosirea parametrului LIMIT 1; in cazul cnd se dorete selectarea unei singure nregistrri, astfel MySQL se oprete dup ce a fost gsit nregistrarea [9]; 6. Selectarea din baza de date de face utilizand: $line=mysql_fetch_array($result), deoarece rezultatele se pot accesa n dou moduri: a) $line[0] sau b) $line['numecoloana']; in cazul in care se opteaz pentru $line['columnname'] este de preferat s se foloseasc $line = mysql_fetch_assoc($result), deoarece nu va mai exista nici un tablou $line[int_index]; 7. Se va evita interogarea bazei de date de mai multe ori consecutiv pentru aceleai date, este recomandabil ca rezultatele sa se salveze n variabile; 8. Se recomand pe ct posibil, folosirea valorii implicite NOT NULL, deoarece crescnd timpul de executare, se economiseste cte un bit; 9. Se vor folosi tipurile de date strict necesare pentru a acoperi plaja acestora, nu foarte mari, de exemplu INT poate acoperi pn la 4294967295 fr semn, lucru care de obicei nu este necesar (MEDIUMINT sau SMALLINT este preferabil); 10. Se va evita folosirea a prea multe tag-uri <?...?> fapt care ncetineste viteza de rulare; 11. irurile de caractere se vor pune ntre fa de deoarece PHP-ul nu trebuie s caute dup variabile; 12. Funcia echo este mai rapida dect print; 13. Se vor iniializa valorile maxime pentru bucle, nainte de a intra n bucl i n interiorul secvenei: $valoare_max = 100/10; for($i=0; $i<$ valoare_max; $i++){ // corp ciclu } este mai rapid dect, for($i=0; $i<100/10; $i++){ // corp ciclu }.
* Asist.drd.ing., Universitatea din Oradea ** Prof.univ.dr., Universitatea din Oradea