psp i inne


Technologie skryptowe w Oracle-analiza porównawcza cz.2
PSP - Wstęp
W wielu wypadkach statyczne strony dostępne poprzez serwer WWW okazują
się niewystarczające. Założenie to dotyczy szczególnie elektronicznego handlu,
systemów zarządzania treścią czy korporacyjnych portali. Technologie dynamicznej
generacji stron WWW w znacznym stopniu rozwiązują problem publikacji tych
danych, które często ulegają zmianie lub tych uzyskiwanych dzięki interakcji z
użytkownikiem. Jak próbowano pokazać w rozdziale drugim serwer bazy danych
Oracle9i i produkty towarzyszące oferują bogate narzędzia do zadań tego typu. W
istocie każdy program, którego wyjście można przekierować do przeglądarki
internetowej może posłużyć jako zródło danych dla serwera WWW. Dzięki takim
mechanizmom takim jak CGI i FastCGI można użyć to tego celu tradycyjne języki
programowania takie jak C, Fortran czy C++. Jednak pewne narzędzia wydają się
atrakcyjniejsze od pozostałych, a ich dodatkowe mechanizmy przeznaczone do
budowy aplikacji webowych sprawiają, że można o nich mówić jako o technologiach
internetowych. Z szerokiej gamy dostępnych rozwiązań zaprezentowane zostaną
cztery najbardziej rozpowszechnione, kolejno PSP, JSP, PHP i Perl. Choć wyrosły
one z różnych korzeni, koncepcja ich działania pozostaje taka sama. W oparciu o
dane pochodzące z różnych zródeł (bazy danych, pliki XML, formularze), generują
dynamiczną treść w postaci dokumentów. HTML, XML czy WML (Wireless Markup
Language). Ponadto wszystkie działają w warstwie drugiej trójwarstwowego modelu
budowy aplikacji. Jako pierwsza zostanie przedstawiona technologia PSP.
Serwer WWW w systemie Oracle charakteryzuje się większą funkcjonalnością
w porównaniu do zwykłego serwera Apache. Dzięki integracji z bazą danych Oracle
jest możliwe generowanie stron w języku HTML za pomocą procedur składowanych
PL/SQL, wywołujących funkcje ze specjalnie do tego przeznaczonych pakietów.
Krótki opis dostępnych pakietów narzędziowych przedstawia tabela 4.1.
Pakiet Opis
HTP Procedury hipertekstowe, generujące znaczniki HTML.
HTF Definicje funkcji, które są odpowiednikami procedur z pakietu HTP.
OWA_CACHE Zapewnia kontrole buforowania danych.
Funkcje do obsługi daty, dynamicznego SQL i zwracania wartości
OWA_UTIL
zmiennych środowiskowych CGI.
OWA_OPT_LOCK Zapewnia procedury do określenia strategii blokowania danych.
OWA_PATTERN Funkcje implementujące operacje na wyrażeniach regularnych.
Procedury, funkcje i typy danych za pomocą których można manipulować
OWA_TEXT
dużymi zapisami tekstowymi.
OWA_IMAGE Narzędzia do obsługi obrazów po stronie serwera.
OWA_COOKIE Narzędzia do obsługi cookies.
Tabela 4.1 Wybrane pakiety narzędziowe PL/SQL przeznaczone dla środowiska WWW.
Elementem serwera WWW, za pomocą którego można wywoływać procedury
magazynowe bazy danych Oracle jest mod_plsql. Po otrzymaniu żądania,
wymagającego uruchomienia mod_plsql, ustanawiane jest połączenie z bazą danych
i zostaje wywołana odpowiednia procedura składowana. Przekazywane dane mogą
być zawarte zarówno w adresie URL (Uniform Resource Locators) jak i pochodzić z
formularza HTML. Należy dodać, że moduł PL/SQL domyślnie buforuje połączenia z
bazą na poziomie procesów serwera, co ma niebagatelne znaczenie przy dużej
liczbie jednoczesnych żądań ze strony użytkowników, stwarzając jednocześnie
niebezpieczeństwo przekroczenia limitu otwartych połączeń ze strony serwera.
Do ustanowienia samego połączenia z bazą danych potrzebne są informacje o
nazwie użytkownika, haśle, uchwycie bazy (SID) lub opisie połączenia SQL*Net.
Dane te przechowywane są w deskryptorze połączenia z bazą danych (ang. DAD 
Database Access Descriptor). Do jego utworzenia lub modyfikacji służy "Menu
konfiguracyjne bramki", dostępne ze strony administracyjnej serwera. Istnieje także
możliwość "ręcznej" modyfikacji pól deskryptora poprzez edycję pliku
konfiguracyjnego serwera ORACLE_HOME/Apache/modplsql/conf/dads.conf.
Tworzenie znaczników HTML poprzez każdorazowe wywoływanie funkcji
HTP.PRINT jest operacją czasochłonną i podatną na błędy. Od wersji systemu
Oracle8i Relese 2 (wersja 8.1.6) dostępna jest warstwa programowa, która daje
możliwość zorganizowania kodu w odwrotny sposób tzn. poprzez "zagnieżdżanie "
kodu PL/SQL w kodzie HTML. Mechanizm ten ma nazwę PL/SQL Serwer Pages w
skrócie PSP.
Dokumenty PSP składają się z kodu HTML, w którym za pomocą
ograniczników <% oraz %> wstawione są fragmenty kodu PL/SQL, zwane
pageletami generujące dynamiczną część strony. Tak przygotowany skrypt o
rozszerzeniu  psp należy "załadować" do bazy narzędziem loadpsp, które odczytuje
plik psp i przekształca go do procedury magazynowej. Poniżej znajduje się opis
parametrów programu i schemat działania mechanizmu PL/SQL Server Pages.
loadpsp  replace  user nazwa_użytkownika / hasło error_nazwa_pliku
nazwa_pliku.psp
Gdzie:
" -replace  parametr opcjonalny, który pozwala na usunięcie istniejącej
procedury magazynowej o tej samej nazwie, co tworzona,
" -user nazwa_użytkownika / hasło  parametr obowiązkowy, który określa
użytkownika systemu Oracle, będącego właścicielem generowanej procedury
" -error_nazwa_pliku, nazwa_pliku.psp  parametr nazwa_pliku_error jest
wymagany, jeśli określono atrybut errorPage w derektywie procedure. W
przeciwnym razie jest to parametr opcjonalny. Jeśli nie wyspecyfikowano
nazwy procedury program loadpsp nada jej nazwę taką samą jak nazwa pliku
(bez rozszerzenia .psp)
Rys. 4.1 Mechanizm PSP.
Fakt izolacji kodu PL/SQL od pozostałej treści dokumentu pozwala używać do
jego edycji wygodnych narzędzi typu WYSIWIG np. Macromedia Dreamvawer.
Skrypt PSP to w większości dokument HTML wraz z odpowiednimi dyrektywami
(tagami). Najczęściej z nich używane zawiera tabela 4.2.
Funkcja Wyrażenie
Określenie pliku jako zródła kodu dla PL/SQL
<%@ page language= PL/SQL %>
Server Pages
<%@
Obsługa wyjątku na stronie WWW. page errorPage= nazwa_pliku.psp
%>
<%@ plsql procedure= nazwa_procedury
Podanie nazwy wynikowej procedury PL/SQL
%>
Wyświetlenie zmiennej lub wyrażenia
<%= wyrażenie_plsql %>
PL/SQL
<% instrukcja1;
Wykonanie jednej lub więcej instrukcji
instrukcja2;
PL/SQL
instrukcjaN; %>
<%@ plsql parameter= nazwa
Przekazanie do procedury wartości type= typ_danych_plsql
defoult= wartość %>
Zadeklarowanie jednej lub więcej zmiennych <%! nazwa zmiennej1 TYP_DANYCH
lokalnych nazwa zmiennej2 TYP_DANYCH %>
Tabela 4.2 Podstawowe elementy składni PSP.
Instrukcje PL/SQL mogą być bezpośrednio umieszczane w bloku programu. Do
obsługi błędów w języku PL/SQL służą mechanizm wyjątków i programy obsługi
wyjątków. Wyjątki mogą być związane z błędami systemu Oracle lub z błędami
zdefiniowanymi przez użytkownika.
XML
Interfejsów do wykonywania działań oraz konwersji w formacie XML dostarczają
trzy pakiety DBMS_XMLQUERY, DBMS_XMLSLAVE i XMLGEN. Przykład skryptu
xml_find.psp tworzy zapytanie z parametrów przekazywanych do procedury a wyniki
zapisuje w pliku tytuly.xml.
Cookies
Śledzenie stanu aplikacji w programach PL/SQL działających w środowisku
WWW, odbywa się za pomocą zmiennych cookies. Pakiet owa_cookie dostarcza
podstawowych mechanizmów do ich obsługi.
4.3 Wnioski
" Mechanizm PSP jest sposobem wykorzystania języka PL/SQL w środowisku
WWW.
" Technologia jest dość prosta i efektywna, składnia przypomina języki Pascal i
Ada.
" Możliwość wykorzystania zaawansowanych funkcji systemu i bezpośrednia
współpraca z motorem bazodanowym Oracle.
" Dobre wsparcie dla XML  a.
" Wadą jest brak przenaszalności i ograniczona możliwość integracji z innymi
rozwiązaniami programistycznymi.
" Częsta konieczność wykorzystywania niskopoziomowych mechanizmów np. w
przypadku protokołu SMTP lepszym rozwiązaniem wydaje się być składowana
procedura Java (obecność doskonałej biblioteki Java Mail) i dostęp do niej za
pomocą interfejsu PL/SQL.
JSP
Wstęp
Kiedy w roku 1995 firma Sun Microsystem przedstawiła Javę jako wielo -
platformowe środowisko budowy i wdrażania aplikacji biznesowych nie od razu stało
się jasne, że trzyma w ręku klucz do rewolucji w handlu elektronicznym. Jednak
pełna obiektowość, mocny system typów i hasło "napisz raz uruchom wszędzie"
sprawiły, że Java w ciągu czterech lat osiągnęła pozycję w świecie IT taką, na jaką
C++ pracowało długie lata. Firma Oracle, która wniosła ogromną rolę w opracowaniu
koncepcji przenaszalnych aplikacji i której produkty "pracują" na 64 dostępnych
systemach operacyjnych naturalnie wspierała rozwój Javy od samego początku. W
raz z pojawieniem się produktu Oracle9iAS Oracle oferuje odnowioną i rozbudowaną
platformę J2EE do tworzenia i rozwijania oprogramowania klasy enterprise opartego
na języku Java. Jednak nie zawsze istnieje potrzeba korzystania z tego środowiska,
serwlety i dokumenty JSP można z powodzeniem tworzyć na mniej wymagających
platformach choćby na darmowym serwerze Apache/Tomcat. Bez względu gdzie są
tworzone aplikacje, rozdział ten zawiera podstawowe wiadomości o wykorzystaniu
języka Java w środowisku WWW.
Serwlety i JSP
Serwlety i strony JSP to aplikacje, uruchamiane po stronie serwera WWW,
dynamicznie generujące strony WWW. Serwlety jako odpowiedz technologii Java na
programy CGI (Common Gateway Interface) stanowią warstwę pośrednią pomiędzy
żądaniami przesyłanymi przez przeglądarkę WWW lub inny program używający
protokołu HTTP a bazami danych bądz aplikacjami wykonywanymi na serwerze. Są
szybciej wykonywane, gdyż wywołanie serwletu odbywa się nie poprzez
uruchomienie nowego wątku a nie procesu także kod wykonywalny jest ładowany do
serwera tylko raz, gdy po raz pierwszy żądania jest usługa oferowana przez dany
serwlet lub automatycznie, gdy zostanie on zmieniony. Potem serwlet pozostaje w
pamięci serwera i może równolegle obsługiwać wiele zapytań z możliwością
komunikacji pomiędzy nimi.
Technologia Java Server Pages (w skrócie JSP) pozwala na mieszanie
zwykłego, statycznego kodu HTML z informacjami generowanymi dynamicznie przez
serwlety. Dzięki temu umożliwia oddzielenie obu fragmentów stron, części
odpowiedzialnej za prezentację od logiki aplikacji. W skryptach JSP wykorzystuje się
tagi w stylu XML-a i skryplety napisane w Javie do  kapsułkowania logiki, która
generuje treść dokumentu. W rzeczywistości dokumenty JSP są automatycznie
tłumaczone do postaci serwletów podczas pierwszego żądania, jak to pokazano na
rys. 5.1. Znacznie wygodniej jest budować i modyfikować kod HTML niż dziesiątki
wywołań metody println stąd pisanie stron JSP jest efektywniejsze i mniej podatne na
błędy. Oprócz formatu HTML treść może być dynamicznie generowana w postaci
XML czy WML. Podstawowe znaczniki wykorzystywane w dokumentach JSP
przedstawia tabela 5.1.
Funkcja Wyrażenie
Skryplet  instrukcje języka Java. <% kod Javy %>
Wyświetlenie zmiennej lub wyrażenia. <%= wyrażenie %>
Deklaracja zmiennych. <%! deklaracja %>
Dołączenie dowolnej strony.
Przekierowanie na dowolną stronę.
Użycie komponentu JavaBean.
Określenie właściwości komponentu Java

Bean.
Dyrektywa page  określenie pliku jako
<% page ... %>
zródła kodu dla JSP.
Komentarz, który będzie widoczny w

kodzie HTML
Komentarz ukryty. zostanie usunięty
<%   komentarz   %>
przez serwer.
Tabela 5.1 Podstawowa składnia JSP.
Dostęp do baz danych z serwletów i JSP, podobnie jak z innych aplikacji Java,
realizowany jest w oparciu o standardy JDBC i SQLJ.
Rys. 5.1 Mechanizm Java Server Pages.
5.3 JDBC
JDBC jest standardową biblioteką opracowaną przez firmę SunMicrosystems
zapewniającą możliwość korzystania z baz danych podobnie jak ODBC, (na
którym jest wzorowana) jednak w sposób o wiele bardziej prostszy. API JDBC jest
zgodne ze standardem SQL  92 i jest powszechnie wspierane przez
producentów relacyjnych i relacyjno  obiektowych baz danych. Oracle dostarcza
dwóch rodzajów sterowników JDBC działających po stronie klienta:
" Oracle JDBC Thin Driver (typ 4) to 2 MB program napisany całkowicie w Javie,
komunikujący się z bazą Oracle używając protokołu Oracle Net Services, który
jest również zaimplementowany w tym języku.
" Oracle JDBC  OCI Driver (typ 2) jest domyślnym sterownikiem
wykorzystywanym przez aplikacje J2EE wykorzystującym bibliotekę OCI
(Oracle Call Interface).
Oba rodzaje sterowników w pełni wspierają standard JDBC 2.0, włączając w to
wsparcie dla wszystkich typów danych (również takich jak BLOB, CLOB, kolekcje),
przetwarzania transakcyjnego w standardzie JTA (Java Transation API) i
zarządzanie odzyskiem połączeń (tzw. pooling połączeń). Oracle dostarcza także
sterowników JDBC do takich baz danych jak IBM DB/2 UDB, Microsoft SQL Server,
Informix i Sybase.
W środowisku Oracle9iAS (wersja 9.0.2) serwlety i JSP, jako część J2EE,
uruchamiane są przez komponent OC4J, któremu Oracle HTTP Server przekazuje
żądania za pośrednictwem modułu mod_oc4j. Alternatywnym środowiskiem dla
serwletów i JSP jest Oracle HTTP Server, wyposażony w moduł mod_jserv.
Jedną z użyteczniejszych cech dokumentów JSP (ogólnie serwletów ) jest to, że
przetwarzanie danych formularzy odbywa się automatycznie. Aby pobrać wartość
parametru, wystarczy wywołać metodę getParameter obiektu request podając jako
argument jego nazwę (wielkość znaków ma znaczenie). Metody getParameter używa
się w identyczny sposób, niezależnie od tego czy dane zostały przesłane z
formularza metodą GET czy POST. Wartość zwracana przez metodę getParameter
jest łańcuchem znaków (obiektem typu string) odpowiadającym zdekodowanej
wartości pierwszego wystąpienia pary parametr  wartość, o podanej nazwie. Jeśli
parametr o podanej nazwie istnieje, lecz jest pusty, to metoda zwraca pusty łańcuch
znaków; natomiast, jeśli parametru nie ma, to zwracana jest wartość null. Niejawny
obiekt request jest tworzony automatycznie, podobnie jak pozostałe:
" response  odpowiedz przesyłana do klienta,
" pageContext  atrybuty strony,
" session  sesja skojarzona z żądaniem (chyba, że obsługa sesji została
wyłączona przy użyciu atrybutu session dyrektywy page),
" application  Kontekst w jakim działa serwlet,
" out  obiekt klasy JspWriter, wyposażonej w mechanizm buforowania, służący
do przekazywania informacji do przeglądarki,
" config  przechowuje dane konfiguracyjne serwleta,
" page  reprezentuje stronę JSP i jest używany do wywołań metod
zdefiniowanych klasie serwletu.
Znacznik akcji jsp:include powoduje dołączanie plików w czasie obsługi
żądania, dzięki czemu nie stwarza konieczności aktualizacji głównej strony, gdy
zostanie zmieniona zawartość jednego z dostarczanych do niej plików. Z drugiej
strony, w czasie obsługi żądania strona JSP została już przekształcona do postaci
serwletu, a zatem dołączany plik nie może zawierać kodu JSP. Jeżeli dołączane
pliki mają zawierać kod JSP, to powinno się skorzystać z dyrektywy include.
SQLJ
SQLJ to mechanizm za pomocą którego można osadzać instrukcje SQL
bezpośrednio w kodzie Javy. W porównaniu do JDBC SQLJ umożliwia sprawdzenie
poprawności instrukcji SQL na etapie kompilacji i kontrolę zgodności typów na etapie
przetwarzania wyników to wszystko przy jednocześnie mniejszym i bardziej
przejrzystym kodzie zródłowym. Niestety standard nie obsługuje dynamicznego SQL.
Bloki instrukcji zawarte są w nawiasach klamrowych poprzedzone klauzulą #sql.
Instrukcje generują ten sam typ wyjątków, co metody JDBC. SQLJ można z
powodzeniem wykorzystywać w różnych typach aplikacji Java (programy typu
desktop, aplety, serwlety, skrypty JSP). Poniższy skrypt (add_rec.sqljsp) dodaje
rekord do tabeli tytuły za pomocą instrukcji SQLJ.
XML
Poprzednio zaprezentowano zapis zawartości tabeli tytuły do pliku XML przy
pomocy pakietu PL/SQL DBMS_XMLQuery. W rzeczywistości jest to jedynie interfejs
bibloteki języka Java OracleXMLQuery należącej do pakietu XSU (XML SQL Utility
for Java). Stąd praca z dokumentami XML z poziomu JSP jest elastyczniejsza i
bardziej wydajna (pomija się jeden interfejs programowy).
Wnioski
" JSP to sposób wykorzystania technologii Java w środowisku WWW.
" W koncepcji i sposobie działania identyczne z serwletami, ale dzięki
odseparowaniu warstwy logiki od prezentacji znacznie bardziej efektywne.
" Doskonała przenaszalność.
" Zaawansowane sposoby dostępu do bazy danych JDBC, SQLJ i zarządzania
transakcjami.
" Możliwość wdrażania na platformie J2EE jako komponent webowy.
" Elastyczny mechanizm zarządzania sesją.
" Bardzo dobra możliwość współpracy z technologią XML.
" Wręcz nieograniczona rozszerzalność poprzez użycie JavaBeans czy
możliwość definiowania własnych tagów.
" Konieczność bardzo dobrej znajomości metodologii obiektowej oraz samej
Javy i jej mechanizmów (wyjątki, strumienie)
" Stosunkowo długi czas etapu translacji do serwletu i duża ilość kodu
potrzebnego do jego stworzenia
Skrypt xml_find.psp
<%@ page language="PL/SQL" %>
<%!
obj_loc clob;
c dbms_xmlquery.ctxType;
l INTEGER := 100;
pozycja INTEGER := 1;
str VARCHAR2(100);
uchwyt UTL_FILE.FILE_TYPE;
%>
<%
dbms_lob.createtemporary(obj_loc, TRUE);
c := dbms_xmlquery.newContext('select * from tytuly');
dbms_xmlquery.setRowTag(c, 'Tytul');
dbms_xmlquery.setRowsetTag(c, 'Tytuly');
dbms_xmlquery.setDateFormat(c, 'dd-mm-yyyy');
obj_loc := dbms_xmlquery.getXML(c);
DBMS_XMLquery.closeContext(c);
dbms_lob.open(obj_loc,DBMS_LOB.LOB_READONLY);
uchwyt :=UTL_FILE.FOPEN('D:\f1\','tytuly.xml','w');
LOOP
dbms_lob.read(obj_loc,l,pozycja,str);
UTL_FILE.PUT_LINE(uchwyt,str);
pozycja := pozycja + l;
END LOOP;
UTL_FILE.FCLOSE(uchwyt);
EXCEPTION
WHEN no_data_found THEN
dbms_lob.close(obj_loc);
dbms_lob.freetemporary(obj_loc);
%>
Skrypt tytuly.xml


02/12/15
Wyd. 2
PWN
410
Zawiera opis konstrukcjijezyka we wszystkich wersjach od
Oracle7 do Oracle9i

Oracle PL/SQL


04/06/30
Wyd. 1
Wyd. HELION
300
Popularny przewodnik po języku PHP
PHP - Pisanie dynamicznych stron WWW


05/01/30
Wyd 3 poprawione
Wyd. RMI
800
Książka poświęcona nauce programowania gier w Javie
Java - Tworzenie gier


00/05/20
Wyd. 1
PWN
250
Zawiera sposoby testowania połączeń i
metody oceny ścieżek w sieci lokalnej

Narzędzia administrowania siecią

Skrypt xml_jsp.jsp
<%@ page import = "java.sql.*,oracle.xml.sql.query.OracleXMLQuery"
%>

Tytuly XML

<%
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
FileOutputStream fo = null;
try {
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:oci:@beg9", "scott",
"tiger");
stmt = conn.createStatement ();
rset = stmt.executeQuery ("SELECT * FROM Tytuly");
OracleXMLQuery xq = new OracleXMLQuery(conn, rset);
xq.setRowTag("Tytul");
xq.setRowsetTag("Tytuly");
xq.setDateFormat("dd-mm-yyyy");
xq.setRowIdAttrName("Nr");
String buf = xq.getXMLString();
try {
fo=new FileOutputStream ("D:\\f1\\tytuly.xml");
} catch (Exception e){
out.println(e);
}
PrintStream psfo=new PrintStream(fo);
psfo.print(buf);
} catch (java.sql.SQLException e) { %>

SQL error:

 <%= e %> 


<% } finally {
if (stmt != null) stmt.close();
if (rset != null) rset.close();
if (conn != null) conn.close();
} %>


Analiza wydajnościowa rozwiązań skryptowych w środowisku Oracle 9i
(PHP, PSP, JSP, Perl)
Do analizy wydajności poszczególnych rozwiązań zastosowano narzędzie openload.
Openload to proste, narzędzie diagnostyczne rozwijane na zasadzie open source
dostępne pod adresem www.openload.sourceforge.net. Otwarty kod zródłowy
sprawia, że można go używać na prawie wszystkich platformach programowych,
dostępne są także pakiety rpm i deb dla systemów odpowiednio RedHat i Debian.
Program jako parametry wejściowe przyjmuje adres URL testowanej aplikacji (w
przykładzie jest to strona startowa lokalnego serwera) i liczbę użytkowników
żądających równoległego obsłużenia. Wyniki oznaczają odpowiednio:
" Tps (Transation Per Second)  liczba kompletnych transakcji na sekundę,
" Resp Time  czas odpowiedzi na żądanie,
" Err  procent błędnych odpowiedzi (tych, które nie zwróciły kodu
odpowiedzi protokołu HTTP 200),
" Count  liczba kompletnych odpowiedzi,
" Total Tps  średnia wartość TPS dla wszystkich żądań obsłużonych
podczas symulacji.
Wszystkie testy z wykorzystaniem opisanego narzędzia przeprowadzono na
komputerze klasy PC z procesorem Duron 800 Mhz i pamięcią RAM 256 Mhz.
Środowiskiem uruchomieniowym testowanych aplikacji był serwer OHS dostarczany
wraz z serwerem bazy danych Oracle9i Relase2 (wersja 2.0.1) pracujący pod
kontrolą systemu Windows 2000 SP4.
Test nr 1 polegał na żądaniu pobrania strony głównej zaprojektowanego systemu
w środowisku charakteryzującym się zmienną liczbą konkurujących użytkowników.
Wyniki testu przedstawia wykres na rysunku 8.1.
120
95,5
93
100
88,8
PSP
80
67,6
65,5
JSP
60
50,7
45
44
PHP
34,9
40 31,5
23,2
PERL
20
10,5
7,5
7,1 6,9 6,5 6,7
6,3 6 5,8 5,8
5,2
4,3 3,8
0
5 10 20 50 70 100
UŻYTKOWNICY
Rys. 8.1 Rezultaty testu nr 1.
TPS
Tym razem testowaną aplikacją był skrypt wyświetlający szczegółowe informacje o
tytule (przekazanym jako parametr metody get) i jego egzemplarzach. Ponieważ
skrypty odwołują się do bazy danych, a operacje ustanowienia połączenia i
wykonania instrukcji SQL są czasochłonne, wszystkie technologie osiąnęły wyniki
dużo gorsze niż poprzednio. Brak wśród nich technologii PSP, jest zrozumiały, jeśli
zauważyć, że moduł mod_pl/sql jest domyślnie skonfigurowany tak by buforował
połączenia z bazą danych. Przewaga PHP w stosunku do technologii Javy zmalała, a
w przypadku dużej liczby wirtualnych użytkowników JSP osiągnęło wynik
zdecydowanie lepszy.
8
7,3
6,9
6,7 6,7
7
6,4
6,2
6
JSP
5,1
5
4,4
4,2
4
PHP
3
2,5
3
1,6
1,5
2
1,4
1,3 Perl
1,2 1,2 1,2
1
0
5 10 20 50 70 100
UŻYTKOWNICY
Rys. 8.2 Rezultaty testu nr 2.
Kolejne dwa testy pokazują wydajność każdego języka skryptowego w zależności od
liczby zwróconych wierszy z tabeli wypożyczenia. Wyniki zaprezentowano na
rysunkach 8.3 i 8.4.
9
7,7
7,4
7,3
8
6,6 JSP
6,3
7
6,2
5,3
6
5
4,2
3,9 PHP
4
2,8
3
1,4
2
1,2
Perl
1 0,3
0,2
0,1
0
100 500 1000 5000 10000
WIERSZE
Rys 8.3 Wyniki testu nr 3.
TPS
TPS
40
36,4
35
PSP
27,4
27
30
24
25
17
20
JSP
12
15
8,3
8
7,4
7,3
6,6
10
4,2
3,6
3
1,9 PHP
5
0
100 500 1000 5000 10000
WIERSZE
Rys. 8.4 Wyniki testu nr 4.
TPS


Wyszukiwarka

Podobne podstrony:
examin C inne pytania 2
Wacław Potocki Ogród, ale nieplewiony i inne wiersze
Liderzy jedza na koncu Dlaczego niektore zespoly potrafia swietnie wspolpracowac a inne nie lidjed
strefa schengen i inne mozliwosci rozwoju wspolpracy transgranicznej w euroregionie slask cieszynski
Karty Drogowe i inne
inne Kształtowanie siły z wykorzystaniem piłek lekarskich
wil pl inne 05
Prawo budowlane Warunki techniczne i inne akty prawne(1)
Punkty topograficzne inne

więcej podobnych podstron