Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Βάσεις Δεδομένων και Παγκόσμιος Ιστός

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Βάσεις Δεδομένων και Παγκόσμιος Ιστός"— Μεταγράφημα παρουσίασης:

1 Βάσεις Δεδομένων και Παγκόσμιος Ιστός
Data-intensive εφαρμογές στον Ιστό

2 Αρχιτεκτονικές data-intensive εφαρμογών
Τεχνολογίες ανάπτυξης Παράδειγμα: on-line βιβλιοπωλείο

3 Αρχιτεκτονικές εφαρμογών
Αρχιτεκτονικές “data-intensive” εφαρμογών: Εφαρμογών που υποστηρίζονται από ΣΔΒΔ Κλασσικές αρχιτεκτονικές: Single-tier Client-server (ή two-tier) Αρχιτεκτονική για data-intensive εφαρμογές Internet: Three-tier Τμήματα αρχιτεκτονικών: Διαχείριση δεδομένων Λογική εφαρμογής Παρουσίαση (User Interface) Βάσεις Δεδομένων και Παγκόσμιος Ιστός

4 Single-tier Ενσωμάτωση του ΣΔΒΔ, της λογικής της εφαρμογής (business logic), και του UI σε ένα «στρώμα» Η αρχική αρχιτεκτονική των data-intensive εφαρμογών Τρέχει σε mainframe Πρόσβαση χρηστών μέσω «κουτών τερματικών» (dump terminals) Μόνο για είσοδο δεδομένων και παρουσίαση δεδομένων Πλεονέκτημα: κεντρική διαχείριση και συντήρηση της εφαρμογής Μειονέκτημα: τα dump terminals είναι dump Οι χρήστες όμως απαιτούν γραφικές διεπαφές (GUI) Ενα mainframe δεν μπορεί να υποστηρίξει μεγάλο αριθμό χρηστών αν επιφορτιστεί με τα GUI Λύση: φθηνά client PCs, και αρχιτεκτονική two-tier Βάσεις Δεδομένων και Παγκόσμιος Ιστός

5 Two-tier Πιο γνωστή σαν αρχιτεκτονική client-server
Ανάγκη για πρωτόκολλο επικοινωνίας ανάμεσα από τα δύο μηχανήματα Τι κάνει ο client και τι ο server; Εξαρτάται από την περίπτωση: thin clients ή thick clients Thin clients: περιέχουν μόνο το τμήμα του GUI O server υπεύθυνος και για την λογική της εφαρμογής και για την διαχείριση των δεδομένων Thick clients: περιέχουν το GUI, αλλά και τμήμα (ή ολόκληρη) της λογικής της εφαρμογής Ο server υπεύθυνος για ότι απομένει Βάσεις Δεδομένων και Παγκόσμιος Ιστός

6 Σχήματα για single-tier και two-tier
Βάσεις Δεδομένων και Παγκόσμιος Ιστός

7 Σύγκριση Αρχιτεκτονικές single-tier και client-server:
Η client-server διαχωρίζει το UI από την διαχείριση των δεδομένων σε φυσικό επίπεδο (διαφορετικά μηχανήματα)... ...με το κόστος της ανάγκης για αυστηρά καθορισμένο πρωτόκολλο επικοινωνίας... ...αλλά και υπολογιστών ικανών να τρέξουν GUIs (ακριβότερων από dump terminals) Η επιτυχία του client-server μοντέλου οφείλεται και στην πληθώρα καλών εργαλείων ανάπτυξης εφαρμογών πχ. Visual Basic, PowerBuilder, κτλ Βάσεις Δεδομένων και Παγκόσμιος Ιστός

8 Σύγκριση (2) Μειονεκτήματα thick client ως προς thin client:
Μη κεντρική διαχείριση και συντήρηση της λογικής της εφαρμογής (τρέχει σε πολλούς ξεχωριστούς clients) Ο server πρέπει να εμπιστευτεί τους clients οτι δεν θα δημιουργούν ασυνέπειες στα δεδομένα του (μια λύση: όλες οι επαφές με την ΒΔ μέσω stored procedures) Ασχημη κλιμάκωση: μέχρι μερικές εκατοντάδες clients (επεξεργασία και μεταφορά μεγάλων αποτελεσμάτων από queries για επεξεργασία στον client) Πρόβλημα απόδοσης αν Χ clients προσπελεύνουν Y βάσεις δεδομένων: Χ * Υ μόνιμα ανοιχτές συνδέσεις Πλεονέκτημα thick client: παίρνει τον φόρτο από τον server Την υιοθέτηση της αρχιτεκτονικής thin client διευκόλυνε και η επικράτηση των Web browsers Βάσεις Δεδομένων και Παγκόσμιος Ιστός

9 Client Program (Web Browser)
Three-tier Client Program (Web Browser) Presentation tier Application Server Middle tier Database System Data management tier Βάσεις Δεδομένων και Παγκόσμιος Ιστός

10 Αρχιτεκτονική three-tier
Ενα βήμα μακρύτερα από thin client Ξεχωριστά μηχανήματα για: presentation tier, middle tier, data management tier Presentation tier: συνήθως κάποιο web-based UI HTML σαν γλώσσα παρουσίασης δεδομένων Είσοδος δεδομένων + requests χρηστών προς το middle tier μέσω HTML φορμών Παρουσιάζει απαντήσεις που κατασκευάζονται στο middle tier Προσαρμογή στις διαφορετικές δυνατότητες των συσκευών (PCs, palm, κινητά, κλπ) είτε από το middle tier είτε στο presentation tier μέσω stylesheets Βάσεις Δεδομένων και Παγκόσμιος Ιστός

11 Αρχιτεκτονική three-tier (2)
Middle tier: εκτελεί την λογική της εφαρμογής Σε κάποια προγραμματιστική γλώσσα (C++, Java, …) Ελέγχει τα δεδομένα εισόδου, την σωστή ροή της κάθε διαδικασίας, την πρόσβαση στην ΒΔ Γεννάει δυναμικά HTML σελίδες με βάση τα αποτελέσματα των queries απο την ΒΔ Υλοποιεί όλους τους ρόλους σε μια εφαρμογή: πχ. πελάτης, πωλητής, administrator, guest... Data management tier: τυπικά κάποιο DBMS Βάσεις Δεδομένων και Παγκόσμιος Ιστός

12 Σχήμα για three-tier Βάσεις Δεδομένων και Παγκόσμιος Ιστός

13 Παραδειγμα 1: αεροπορικές κρατήσεις
Υλοποίηση συστήματος για αεροπορικές κρατήσεις Τι κάνει το κάθε tier; Σύστημα βάσης δεδομένων Πληροφορίες για δρομολόγια, διαθέσιμες θέσεις, πληροφορίες για τους πελάτες, κτλ Application server Υλοποίηση κρατήσεων, ακυρώσεις, προσθήκη δρομολογίων, κτλ Client Login για διάφορους χρήστες, παρουσίαση δεδομένων, είσοδος μέσω φορμών Βάσεις Δεδομένων και Παγκόσμιος Ιστός

14 Παραδειγμα 2: εγγραφή σε μαθήματα
Υλοποίηση συστήματος πού επιτρέπει σε φοιτητές να γραφτούν σε μαθήματα επιλογής Σύστημα βάσης δεδομένων Πληροφορίες για φοιτητές, για τα μαθήματα, για τους διδάσκοντες, για την διαθεσιμότητα των μαθημάτων, για προαπαιτούμενα, κτλ Application server Υλοποίηση για προσθήκη μαθημάτων, εγγραφή σε μάθημα, κτλ Client Login για διάφορους ρόλους (φοιτητές, διδάσκοντες, προσωπικό), παρουσίαση δεδομένων, είσοδος μέσω φορμών Βάσεις Δεδομένων και Παγκόσμιος Ιστός

15 Πλεονεκτήματα three-tier
Thin clients: φθηνοί, μόνο για παρουσίαση πληροφορίας Πρόσβαση στα δεδομένα: για εφαρμογές που χρειάζονται πρόσβαση σε πολλές πηγές, το middle tier διαχειρίζεται κεντρικά όλα τα connections στις διάφορες ΒΔ Κλιμάκωση σε πολλούς clients: ο κώδικας του middle tier μπορεί να τρέχει σε πολλά μηχανήματα ταυτόχρονα Ομοιοτυπία (replication) και στο επίπεδο του data management tier αν είναι απαραιτητο Ευκολότερη ανάπτυξη λογισμικού: ευκολη η αλλαγή / συντήρηση της λογικής της εφαρμογής Βάσεις Δεδομένων και Παγκόσμιος Ιστός

16 Αρχιτεκτονικές data-intensive εφαρμογών
Τεχνολογίες ανάπτυξης Παράδειγμα: on-line βιβλιοπωλείο

17 Τεχνολογίες ανα tier HTML Client Program (Web Browser)
JavaScript, Applets CSS, XSLT Client Program (Web Browser) HTTP CGI Java Servlets JSP Cookies Application Server (Tomcat, Apache) JDBC, SQLJ Database System (Oracle, DB2) XML Stored Procedures Βάσεις Δεδομένων και Παγκόσμιος Ιστός

18 JavaScript Στόχος: να προσθέσουμε λειτουργικότητα στο presentation tier Συνήθεις ανάγκες: Form validation - για τα input fields μιας HTML φόρμας Ελεγχος του browser – άνοιγμα και κλείσιμο παραθύρων (πχ pop-up διαφημίσεις) Αναγνώριση του τύπου του browser και φόρτωμα ειδικής σελίδας για τον συγκεκριμένο browser Μοιάζει συντακτικά με την Java, αλλα διαφορετική στην φιλοσοφία Object-based, σαν την Visual Basic Προσανατολισμένη στην «συνύπαρξη» με HTML έγγραφα Προκαθορισμένα («έτοιμα») αντικείμενα και events δίνουν πρόσβαση από τον κώδικα σε κάθε στοιχείο της συγκεκριμένης HTML σελίδας Παράδειγμα: hotel.html Βάσεις Δεδομένων και Παγκόσμιος Ιστός

19 JavaScript: παράδειγμα
<HTML> <HEAD> <TITLE>HOTEL ROOM</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- Hide script from non-JavaScript browsers function calc_total (form) { var ammount = 0 if (form.Room.selectedIndex == 0) ammount = 300 if (form.Room.selectedIndex == 1) ammount = 320 if (form.Room.selectedIndex == 2) ammount = 400 if (form.Room.selectedIndex == 3) ammount = 700 if (form.Breakfast.checked) ammount += 30 if (form.Lunch.checked) ammount += 80 if (form.Dinner.checked) ammount += 130 ammount *= parseInt (form.Day.value, 10) form.Price.value = ammount } // --> </SCRIPT> </HEAD> <BODY ONLOAD="calc_total (document.forms[0])"> ... <FORM NAME=RoomOrder"> Select between these room types: <SELECT NAME="Room" ONCHANGE="calc_total (this.form)"> <INPUT TYPE="button" VALUE="Calculate Price" ONCLICK="calc_total (this.form)"> </FORM> </BODY> </HTML> Βάσεις Δεδομένων και Παγκόσμιος Ιστός

20 Java Applets Σε αντίθεση με την JavaScript, τα applets είναι πραγματική Java Οπως με την JavaScript, τα applets χρειαζονται μια HTML σελίδα σαν πλαίσιο για να «τρέξουν» Ενω τα Java applications «τρέχουν» εντελώς ανεξάρτητα, σαν τα εκτελέσιμα αρχεία Διαφορά με JavaScript: Το applet δεν «ενσωματώνεται» στην δομή της HTML, αλλά καταλαμβάνει ένα συγκεκριμένο χώρο τον οποίο ελέγχει απόλυτα. Τα Java applets μοιαζουν πάρα πολύ με τα Java applications Σχετικά εύκολο να μετατρέψεις ενα applet σε application και αντίστροφα, αλλάζοντας λίγες γραμμές κώδικα Ομως: Για λόγους ασφάλειας ένα applet δεν έχει τις ιδιες δυνατότητες πρόσβασης στον σκληρό δίσκο (εγγραφή / ανάγνωση) και στο δίκτυο όπως ένα application Βάσεις Δεδομένων και Παγκόσμιος Ιστός

21 Η δομή των applets Ενα applet κληρονομεί το class Applet, και μπορεί να κάνει override τέσσερις προκαθορισμένες μεθόδους... ...που καλούνται αυτόματα από τον browser την κατάλληλη στιγμή init() Καλείται μια φορά στην αρχή, πχ. φορτώνει μια εικόνα start() Κύρια λειτουργία μπαίνει εδώ, πχ. παίζει κάποιος ήχος σε loop, κτλ. stop() Σταματά την λειτουργία (πχ. τον ήχο), καλείται όταν αλλάζει η σελίδα ή όταν ο browser γίνεται minimized destroy() Πιθανή χρήση για καθαρισμό μνήμης και garbage collection, συνήθως όμως δεν χρησιμοποιείται Ενα απλό applet… Βάσεις Δεδομένων και Παγκόσμιος Ιστός

22 Παράδειγμα: Java Applet
<HTML> <HEAD> <TITLE>Text Scroll</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> Start of page. <HR> <CENTER> <APPLET CODE="MarqueeApplet.class" ALIGN="middle" WIDTH=760 HEIGHT=30> <PARAM NAME=width VALUE="760"> <PARAM NAME=height VALUE="30"> <PARAM NAME=msg VALUE="The marquee message!"> </APPLET> </CENTER> End of page. </BODY> </HTML> public class MarqueeApplet extends Applet { int w, h; //fixed applet width and height String message; MarqueeCanvas marquee; Continued... Βάσεις Δεδομένων και Παγκόσμιος Ιστός

23 Παράδειγμα: Java Applet (2)
//standard applet methods public void init() { //set html-file-dependent values w = Integer.parseInt(getParameter("width")); h = Integer.parseInt(getParameter("height")); message = getParameter("msg"); setBackground(Color.white); marquee = new MarqueeCanvas(w, h); } public void start() { setLayout(new BorderLayout()); add("Center", marquee); marquee.setMsg(message); marquee.initPos(); marquee.move(); public void stop() { marquee.hold(); remove(marquee); public void destroy() { String[][] parameterInfo = { {"width", "int", "the applet width"}, {"height", "int", "the applet height"}, {"msg", "String", "the marquee message"} }; class MarqueeCanvas extends Canvas implements Runnable { ... Βάσεις Δεδομένων και Παγκόσμιος Ιστός

24 Stylesheets Ιδέα: διαχωρισμός παρουσίασης απο περιεχόμενο, και προσαρμογή παρουσίασης σε διάφορα formats Δύο πλευρές στην χρήση των stylesheets 1. Μετασχηματισμός εγγραφου για να δείξουμε μόνο μερικά τμήματα του εγγράφου με την σειρά της επιλογής μας (πχ. από XML με χρήση XSLT σχηματίζουμε διάφορα HTML) 2. Rendering του εγγράφου καθορίζει πως εμφανίζονται τα διάφορα μέρη του εγγράφου Γιατί είναι καλά τα stylesheets; Επαναχρησιμοποίηση του ίδιου εγγράφου για διαφορετικές παρουσίασεις Προσαρμογή της παρουσίασης στις επιλογές του χρήστη, ή τις δυνατότητες της client συσκευής Δυο γλώσσες stylesheet Cascading Stylesheets (CSS): για την HTML Extensible Stylesheet Language (XSL): για την XML Βάσεις Δεδομένων και Παγκόσμιος Ιστός

25 CSS Ορίζει πως να εμφανίζονται τα έγγραφα HTML
Πολλά HTML μπορούν να αναφέρονται στο ίδιο CSS Αλλάζουμε την εμφάνιση ενός ολόκληρου site αλλάζοντας ένα και μόνο CSS Κάθε γραμμή στο CSS: selector {property: value} Selector: το HTML tag του οποίου ορίζουμε το format Property: η ιδιότητα του tag στην οποία αναθέτουμε τιμή Value: η τιμή της ιδιότητας του tag Βάσεις Δεδομένων και Παγκόσμιος Ιστός

26 CSS: παράδειγμα Παράδειγμα CSS
body {background-color: yellow} h1 {font-size: 36pt} h3 {color: blue} p {margin-left: 50px; color: red} Η πρώτη γραμμή έχει το ίδιο αποτέλεσμα με: <body background-color=“yellow> Κλήση από HTML Είτε ενσωμάτωση στο Header Είτε αναφορά σε εξωτερικό CSS αρχείο <LINK REL=“style sheet” TYPE=“text/css” HREF=“books.css”> Βάσεις Δεδομένων και Παγκόσμιος Ιστός

27 XSL Αποτελείται από τρια ξεχωριστα τμήματα XSL Formating Objects
Ορίζει το format παρουσίασης ενός εγγράφου XML XPath: XML Path Language Επιλέγει τμήματα ενός εγγράφου XML Απλοποιημένη μορφή, επιστρέφει τα βιβλία σε ένα XML (πίσω): database/biblio/book (ονόματα XML tags) Επιστρέφει τους πρώτους συγγραφείς των βιβλίων: root()/descendant::book/child::author[position()=first()] XSLT: XSL Transformation language Μετατρέπει ένα έγγραφο XML σε κάποιο άλλο έγγραφο Βάσεις Δεδομένων και Παγκόσμιος Ιστός

28 XSLT: παράδειγμα <database id=“db”> <biblio> <book id=“n1”> <author>Roux</author> <author>Combalusier</author> <date>1976</date> <title>Database Systems</title> </book> <book id=“n2”> <author>Smith</author> <date>1999</date> <paper>...</paper> </biblio> </database> Μετατρέπει το XML σε έναν HTML κατάλογο των τίτλων των βιβλίων <xsl:template match=“/”> <html> <head> <title>Book Titles</title> </head> <body> <h1>Book Titles</h1> <xsl:for-each select=“database/biblio/book”> <xsl:value-of select=“title”/> <br></br> </xsl:for-each> </body> </html> </xsl:template> Βάσεις Δεδομένων και Παγκόσμιος Ιστός

29 Τεχνολογίες ανα tier HTML Client Program (Web Browser)
JavaScript, Applets CSS, XSLT Client Program (Web Browser) HTTP CGI Java Servlets JSP Cookies Application Server (Tomcat, Apache) JDBC, SQLJ Database System (Oracle, DB2) XML Stored Procedures Βάσεις Δεδομένων και Παγκόσμιος Ιστός

30 CGI: Common Gateway Interface
Στόχος: μεταφορά arguments από τις HTML φόρμες στα προγράμματα που απαρτίζουν την εφαρμογή και που τρέχουν στο middle tier Μειονεκτήματα Το πρόγραμμα καλείται σε νέο process κάθε φορά που χρειάζεται για κάποιον client (ανασκευή: FastCGI) Τα προγράμματα που απαρτίζουν την εφαρμογή δεν μοιράζονται resources (πχ. DB connections) Τα μειονεκτήματα αυτά της απόδοσης αντιμετωπίζουν οι application servers Pool of threads of processes Manage pool of connections APIs for session management Βάσεις Δεδομένων και Παγκόσμιος Ιστός

31 CGI: παράδειγμα Φόρμα HTML: Κώδικας Perl:
<form action=“findbooks.cgi” method=POST> Type an author name: <input type=“text” name=“authorName”> <input type=“submit” value=“Send it”> <input type=“reset” value=“Clear form”> </form> Κώδικας Perl: use CGI; $dataIn=new CGI; $dataIn->header(); $authorName=$dataIn->param(‘authorName’); print(“<HTML><TITLE>Argument passing test</TITLE>”); print(“The author name is “ + $authorName); print(“</HTML>”); exit; Βάσεις Δεδομένων και Παγκόσμιος Ιστός

32 Application servers Process Structure HTTP Web Browser Web Server JDBC
DBMS 1 ODBC DBMS 2 Pool of Servlets Βάσεις Δεδομένων και Παγκόσμιος Ιστός

33 Servlets Java Servlets: κώδικας Java που τρέχει στο middle tier μέσω του web server Τρέχει ανεξαρτήτως πλατφόρμας Ολο το API της Java διαθέσιμο, συμπεριλαμβανομένου του JDBC Διαδικασία κλήσης ενός servlet Το servlet πρέπει να έχει δηλωθεί στον application server Ο web server στέλνει το request στο servlet container Το container δημιουργεί ένα instance του servlet, καλώντας την (overriden) μέθοδο init() – destroy() για deallocation Μετά την init() το container καλεί την service() Η service() καλεί την doGet() για το HTTP GET, ή την doPost() για το HTTP POST Συνήθως δεν κάνουμε override την service(), αλλά μια από τις doGet() και doPost() Βάσεις Δεδομένων και Παγκόσμιος Ιστός

34 Servlet: παράδειγμα import java.io.*; import java.servlet.*;
import java.servlet.http.*; public class ReadUserName extends HttpServlet { public void doGet(HttpServletRequest request, HttpSevletResponse response) throws ServletException, IOException { reponse.setContentType(“text/html”); PrintWriter out = response.getWriter(); out.println(“<HTML><BODY>\n <UL> \n” + “<LI>” + request.getParameter(“userid”) + “\n” + “<LI>” + request.getParameter(“password”) + “\n” + “<UL>\n<BODY></HTML>”); } public void doPost(HttpServletRequest request, doGet(request,response); Βάσεις Δεδομένων και Παγκόσμιος Ιστός

35 JSP: Java Server Pages Τα servlets: Τα Java Server Pages:
Δημιουργούν HTML γράφοντάς την στο αντικείμενο PrintWriter Γράφουμε πρώτα τον κώδικα, και την ιστοσελίδα στην συνέχεια (μέσα στον κώδικα) Φασαρία αν θέλουμε μια πολύπλοκη ιστοσελίδα με λίγο απλό κώδικα για δυναμική συμπεριφορα Λύση: JSP Τα Java Server Pages: Είναι γραμμένα σε HTML, αλλά με κώδικα σαν από servlet ενσωματωμένο στην HTML Γράφουμε πρώτα την ιστοσελίδα, και τον κώδικα Java στην συνέχεια (στα σημεία που θέλουμε) Συνήθως γίνονται compiled σε servlets Βάσεις Δεδομένων και Παγκόσμιος Ιστός

36 JSP: παράδειγμα <html> <head><title>Welcome to B&N</title></head> <body> <h1>Welcome back!</h1> <% String name=“NewUser”; if (request.getParameter(“username”) != null) { name=request.getParameter(“username”); } %> You are logged on as user <%=name%> <p> </body> </html> Αλλο παράδειγμα: JSP για καταγραφή σε αρχείο όσων επισκέπτονται μια ιστοσελίδα Για να δουλέψει με τον Apache πρέπει να εγκαταστήσει κανείς το αντίστοιχο ειδικό module επέκτασης Βάσεις Δεδομένων και Παγκόσμιος Ιστός

37 Το state της εφαρμογής Το HTTPείναι stateless: οχι carts, ούτε user logins Τρεις κατηγορίες λύσεων Client-side state Τα δεδομένα φυλάσσονται στον δίσκο του client με την μορφή cookie Hidden state Τα δεδομένα είναι κρυμμένα μέσα και ακολουθούν δυναμικά δημιουργημένες σελίδες HTML Server-side state Τα δεδομένα του state κρατούνται στην ΒΔ Εναλλακτικά στην τοπική μνήμη στο επίπεδο της εφαρμογής Βάσεις Δεδομένων και Παγκόσμιος Ιστός

38 Client-side state: cookies
Αποστέλλεται στην αντίστοιχη εφαρμογή με κάθε HTTP request Ο client μπορεί να το απενεργοποιήσει Θεωρούνται αδίκως «επικίνδυνα» Είναι μια συλλογή απο ζεύγη (όνομα, τιμή) Πλεονεκτήματα Ευκολη χρήση με τα Java Servlets και το JSP Δίνει την δυνατότητα κάποια πληροφορία να αποθηκευτεί εκεί που ανήκει (πχ. alias) Μειονεκτήματα Μέγιστο όριο τα 4 kilobytes Οι χρήστες συχνα τα απενεργοποιούν Βάσεις Δεδομένων και Παγκόσμιος Ιστός

39 Cookies: παράδειγμα Δημιουργία ενός cookie Πρόσβαση στο cookie
Cookie myCookie = new Cookie(“username", “jeffd"); response.addCookie(myCookie); Πρόσβαση στο cookie Cookie[] cookies = request.getCookies(); String theUser; for(int i=0; i<cookies.length; i++) { Cookie cookie = cookies[i]; if(cookie.getName().equals(“username”)) theUser = cookie.getValue(); } //at this point ‘theUser’ holds the username Βάσεις Δεδομένων και Παγκόσμιος Ιστός

40 Hidden & Server-side state
Hidden state: κρυφή ενσωμάτωση σε κάθε HTML σελίδα Τα hidden fields στις φορμες δεν φαίνονται στον χρήστη (εκτός αν δεί τον κώδικα) <input type=‘hidden’ name=‘user’ value=‘George’/> Η πληροφορία περνά στην εφαρμογή μέσω του URL, η εφαρμογή την ξαναστέλνει βάζοντάς την και στην επόμενη σελίδα Κακή λύση από πλευράς απόδοσης Server-side state: δύο κατηγορίες Αποθήκευση στην ΒΔ: καλή λύση αλλά σχετικά δαπανηρή λόγω της ανάγκης πρόσβασης στην ΒΔ Αποθήκευση στην μνήμη του application layer: το κακό είναι οτι δεν είναι μόνιμη, και ότι η μνήμη χρειάζεται για την εφαρμογή Βάσεις Δεδομένων και Παγκόσμιος Ιστός

41 Τι χρησιμοποιούμε, και που;
Χρησιμοποιούνται όλες οι μέθοδοι για state maintenance Ενδεικτικά: User logins σε cookies Το cart σε cookie, ή στην μνήμη της εφαρμογής Credit card στην ΒΔ Το click-stream ενός χρήστη στο log του web server (για μετέπειτα ανάλυση Παλιές παραγγελίες στην ΒΔ Μόνιμες επιλογές / προτιμήσεις ενός χρήστη στην ΒΔ Μη μονιμες επιλογές ενός χρήστη σε cookie Βάσεις Δεδομένων και Παγκόσμιος Ιστός

42 Τεχνολογίες ανα tier HTML Client Program (Web Browser)
JavaScript, Applets CSS, XSLT Client Program (Web Browser) HTTP CGI Java Servlets JSP Cookies Application Server (Tomcat, Apache) JDBC, SQLJ Database System (Oracle, DB2) XML Stored Procedures Βάσεις Δεδομένων και Παγκόσμιος Ιστός

43 ODBC και JDBC Τι είναι; Βιβλιοθήκες που επιτρέπουν την ενσωμάτωση SQL σε μια γλώσσα προγραμματισμού (το JDBC εξειδικεύει για Java) Παρέχουν στον προγραμματιστή ένα σταθερό API επικοινωνίας με (σχεδόν) οποιοδήποτε ΣΔΒΔ, και όχι μόνο (πχ. MS Excel) Μια εφαρμογή μπορεί να χρησιμοποιήσει ταυτόχρονα πολλά διαφορετικά ΣΔΒΔ Το εκτελέσιμο μπορεί να λειτουργήσει με διαφορετικά ΣΔΒΔ χωρις recompilation Τα ODBC / JDBC είναι DBMS-independent και στο επίπεδο του κώδικα, αλλά και στο επίπεδο του εκτελέσιμου Βελτίωση σε σχέση με την Embedded SQL Μεταφράζεται σε DBMS-specific calls κατά την διαρκεια ενός preprocessing Δηλ. DBMS-independent κώδικας, αλλά DBMS-dependent εκτελέσιμο Βάσεις Δεδομένων και Παγκόσμιος Ιστός

44 Πως λειτουργούν; Η ευελιξία αυτή οφείλεται στην εισαγωγή ενός επιπλέον «στρώματος» Κάθε επικοινωνία με ένα συγκεκριμένο ΣΔΒΔ λαμβάνει χώρα μέσω ενός DBMS-specific οδηγού (driver) Οι οδηγοί που χρειάζονται φορτώνονται at run time Ενας οδηγός μετατρέπει κλήσεις του ODBC / JDBC σε DBMS- specific calls για το αντίστοιχο DBMS Το DBMS δεν χρειαζεται καν να «μιλάει» SQL Ετσι, μιλάμε πια για data source αντί για DBMS 4 κύρια τμήματα Εφαρμογή: ανοίγει connection με το data source, υποβάλλει SQL, παίρνει τα αποτελέσματα Driver manager: φορτώνει τους κατάλληλους drivers, περνά τα calls Driver: συνδέεται με το data source, κάνει τον μεταφραστή, διαχειρίζεται λάθη Data source: εκτελεί εντολές του driver, επιστρέφει αποτελέσματα Βάσεις Δεδομένων και Παγκόσμιος Ιστός

45 Σενάρια αρχιτεκτονικής JDBC
Type I – bridges: DBMS-independent, no network Κλήσεις στο JDBC μεταφράζονται σε κλήσεις ODBC μέσω ενός και μόνο driver, του JDBC-ODBC bridge Το ODBC αναλαμβάνει από εκεί και μετά Απλό, αλλά όχι καλύτερο σε απόδοση, και ODBC περιοριστικό Type II – direct translation to the native API via non-Java driver: DBMS-dependent, no network Οι JDBC κλήσεις καλούν συναρτήσεις μιας DLL για ένα ΣΔΒΔ Καλή απόδοση, αλλά το DLL driver απαιτει ξεχωριστή εγκατάσταση Type III – network bridges: DBMS-independent, network Network bridge στον client μιλάει σε άλλον driver κάπου αλλού Type IV – direct translation to the native API via Java driver: DBMS-dependent, network Driver στον client μιλάει απευθείας στο DBMS μέσω sockets Βάσεις Δεδομένων και Παγκόσμιος Ιστός

46 JDBC: παράδειγμα Connection con = DriverManager.getConnection
(url, ”login", ”pass"); Statement stmt = con.createStatement(); String query = "SELECT name, rating FROM Sailors"; ResultSet rs = stmt.executeQuery(query); try { while (rs.next()) { String s = rs.getString(“name"); int n = rs.getFloat(“rating"); System.out.println(s + " " + n); } } catch(SQLException e) { System.out.println(e.getMessage () + e.getSQLState () + e.getErrorCode ()); rs.close(); ... stmt.close(); con.close(); Βάσεις Δεδομένων και Παγκόσμιος Ιστός

47 SQLJ Συμπληρώνει τον δυναμικό τρόπο δημιουργίας queries του JDBC με ένα πιο στατικό μοντέλο Μοιάζει στην φιλοσοφία με την Embedded SQL Σε αντίθεση με το JDBC: Ο compiler ελέγχει at compile time την ορθή σύνταξη της SQL και την συνέπειά της με το σχήμα της βάσης Οι μεταβλητές δεσμεύονται στατικά σε κάποια συγκεκριμένα arguments, χωρίς αναθέσεις όπως στο JDBC Πως δουλεύει Ο κώδικας SQLJ περνάει από preprocessor που αντικαθιστά τα τμήματα SQLJ με κλήσεις σε μια βιβλιοθήκη Java Συνήθως χρησιμοποιεί κάποιον JDBC driver για επαφή με την ΒΔ Βάσεις Δεδομένων και Παγκόσμιος Ιστός

48 SQLJ: παράδειγμα int sid; String name; int rating; rating = 8;
#sql iterator Sailors(int sid, String name); Sailors sailors; #sql sailors = { SELECT sid, sname INTO :sid, :name FROM Sailors WHERE rating = :rating }; while (sailors.next()) { System.out.println(sailors.sid + “ “ + sailors.name)); } sailors.close(); Βάσεις Δεδομένων και Παγκόσμιος Ιστός

49 Stored procedures Τι είναι τα stored procedures; Πλεονεκτήματα
Τμήματα της λογικής της εφαρμογής που αποθηκεύονται και εκτελούνται στο process space του συστήματος ΒΔ Μπορεί να είναι και functions Πλεονεκτήματα Ελαχιστοποίηση των δεδομένων που μεταφέρονται ανάμεσα από εφαρμογή και DB server (ο έλεγχος γίνεται στον DB server) Χρήση του DB server (δυνατό μηχάνημα) Αποφεύγεται η χρήση cursors που κρατούν επί μακρόν δεσμευμένα resources, όπως μνήμη και κλειδώματα Η λογική της εφαρμογής μπορεί να εκτελεστεί απευθείας στον DB server, χωρίς καθόλου επιστροφή αποτελεσμάτων Πλεονεκτήματα στην ανάπτυξη λογισμικού Εύκολη η επαναχρησιμοποίηση από διαφορετικούς developers Οι developers δεν χρειάζονται να ξέρουν το σχήμα της ΒΔ Βάσεις Δεδομένων και Παγκόσμιος Ιστός

50 Stored procedures: παράδειγμα
Παράμετροι: IN, OUT, και INOUT CREATE PROCEDURE IncreaseRating(IN sailor_sid INTEGER, IN increase INTEGER) UPDATE Sailors SET rating = rating + increase WHERE sid = sailor_sid Δεν χρειάζεται να είναι γραμμένη σε SQL CREATE PROCEDURE TopSailors(IN num INTEGER) LANGUAGE JAVA EXTERNAL NAME “file:///c:/storedProcs/rank.jar” Κλήση stored procedure από JDBC CallableStatement cstmt = con.prepareCall(“{call ShowSailors}”); ResultSet rs = cstmt.executeQuery(); while (rs.next()) ... Κλήση από SQLJ #sql iterator ShowSailors(...); ShowSailors showsailors; #sql showsailors={CALL ShowSailors}; while (showsailors.next()) ... Βάσεις Δεδομένων και Παγκόσμιος Ιστός

51 Αρχιτεκτονικές data-intensive εφαρμογών
Τεχνολογίες ανάπτυξης Παράδειγμα: on-line βιβλιοπωλείο

52 Περιγραφή client Web σελίδες στον client για τους πελάτες
Δυνατοτητα ανευρεσης προιοντων Συλλογη πληροφοριων για πελατες Καταγραφη παραγγελιων Παρακολουθηση πορειας παραγγελιων Ηλεκτρονικη πληρωμη Διαφημισεις - ενημερωτικες σελιδες Web σελίδες στον client για την διαχειριστικη εφαρμογη Ανανεωση βασης απο προσωπικο εταιριας Διαχειριση χρονικα μεταβαλλομενων στοιχειων των Web σελιδων (διαφημισεις, προσφορες, ...) Εκμεταλευση στοιχειων για χαραξη πολιτικης της εταιριας (marketing, decision-making) Βάσεις Δεδομένων και Παγκόσμιος Ιστός

53 Περιγραφή server Βασισμένο σε πραγματικό έργο του 1997 Βαση Δεδομενων
Legacy data Διαχειριση μεγαλου ογκου δεδομενων Διευκολυνση στην αναζητηση στοιχειων Λογικη εφαρμογης (αναμεσα σε client και server) Validation στοιχειων που εισαγει ο πελατης Transaction με βαση μετα απο καποια εντολη του πελατη Δημιουργια δυναμικων HTML σελιδων σαν απαντηση σε καποια επιλογη πελατη Βασισμένο σε πραγματικό έργο του 1997 Βάσεις Δεδομένων και Παγκόσμιος Ιστός

54 Εργαλεία Η τελικη εφαρμογη χρησιμοποιει Netscape Enterprise Web Server
Firewall... Informix DB Server 7.xx Ελληνικο εργαλειο full text search (“Αρχειον“) Εργαλεια αναπτυξης Netscape LiveWire (server-side JavaScript, κατι σαν Java Server Pages αλλα specific για τον Netscape Enterprise Web Server) JavaScript (client side) Βάσεις Δεδομένων και Παγκόσμιος Ιστός

55 Η Βάση Δεδομένων Βάσεις Δεδομένων και Παγκόσμιος Ιστός

56 Σχεδιασμός και υλοποίηση εφαρμογής
Από που αρχίζει κανείς; Οχι από το μηδεν Κατανόηση των απαιτήσεων Επιλογή hardware, εργαλείων Πρόνοια για να μην διαταραχθουν οι τρέχουσες λειτουργίες Τεχνικά Το εικαστικό μέρος ξεχωριστό και τελευταίο Μοντέλο βάσης Μοντέλο σελίδων Υλοποίηση βάσης Υλοποίηση σελίδων web_model Βάσεις Δεδομένων και Παγκόσμιος Ιστός


Κατέβασμα ppt "Βάσεις Δεδομένων και Παγκόσμιος Ιστός"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google