Cloud Computing Database with Amazon SimpleDB
Σύνολο από virtual online servers Δέχονται requests από χρήστες Προσφέρουν σειρά από υπηρεσίες Οι χρήστες δεν χρειάζεται να έχουν την γνώση, την εμπειρία και τον έλεγχο της τεχνολογίας που υποστηρίζεται από το cloud. Οι υπηρεσίες του cloud computing μπορούν να γίνουν προσβάσιμες μέσω ενός web browser Ο υπολογισμός είναι απομακρυσμένος(δεν γίνεται τοπικά) Απόκτηση υπολογιστικής ισχύς μέσω απομακρυσμένης σύνδεσης με το δίκτυο(on demand computing) Επέκταση δυνατοτήτων ενός ΙΤ συστήματος (on the fly) Τεράστιος αποθηκευτικός χώρος Supercomputer-level p power Είδη υπηρεσιών που προσφέρει το cloud Software as a service(saas)-api Provided Infrastructure-as-a-Service (IaaS) -API Provided Platform-as-a-Service (PaaS) Είδη cloud computing Public Cloud. Π.χ. Amazon Cloud Computing, GoogleAppEngine, Microsoft Azure. Private Cloud. Δημιουργούνται από ιδιωτικές εταιρείες και παρέχουν υπηρεσίες σε άλλες ιδιωτικές εταιρείες
DATA
Παροχή υποδομής πλατφόρμας για web services στο cloud Δυνατότητα μεγάλης υπολογιστικής ισχύς, αποθήκευσης Παροχή σουίτας από υπηρεσίες IT Με το AWS έχεις την ευελιξία να διαλέξεις ποια προγραμματιστική πλατφόρμα ή μοντέλο μπορεί να επιλύσει τα προβλήματα σου Χωρίς μακροπρόθεσμες δεσμεύσεις Πληρώνω μόνο ότι χρησιμοποιώ Δυνατότητα δημιουργίας cost-effective εφαρμογών για αλληλεπίδραση η με πελάτες
Amazon SimpleDB Amazon Simple Storage Service (Amazon S3) Amazon Relational Database Service (Amazon RDS) Amazon Elastic Compute Cloud (Amazon EC2) Amazon Simple Queue Service (Amazon SQS)
Αποτελεί πυρήνα συναρτήσεων βάσεων δεδομένων για indexing δεδομένων και δημιουργία queries Απελευθέρωση χρηστών από χρόνο-προσφέρει έτοιμες συναρτήσεις και έτοιμη υποδομή για χρήση Αυτόματα ταξινομεί τα δεδομένα και παρέχει API για αποθήκευση και πρόσβαση στην βάση Απαραίτητοι υπολογισμοί εκτελούνται από το (Elastic Cloud)EC2 Πρόσβαση μέσω υπολογιστικού περιβάλλοντος της Amazon (scratchpad, eclipse) Πληρώνεις μόνο ότι χρησιμοποιείς. First 1 GB of data transferred in per month is free $0.100 per GB all data transfer in thereafter First 1 GB of data transferred out per month is free; thereafter: $0.170 per GB first 10 TB / month data transfer out Χρησιμοποιείται από το iphone αλλά και το Android
Παρέχει χώρο για προσωπική αποθήκευση Παροχή απλού web interface όπου μέσω αυτού ο χρήστης μπορεί να έχει πρόσβαση στον αποθηκευτικό του χώρο(bucket) Αποθήκευση και ανάκτηση μεγάλης ποσότητας δεδομένων Δεδομένα κατανεμημένα σε διάφορους servers ανά τον κόσμο. Πρόσβαση οποιαδήποτε στιγμή, από οπουδήποτε στο Web Πρωτόκολλα πρόσβασης δεδομένων: SOAP REST BitTorrent Χρέωση: $0.150 per GB first 50 TB / month of storage used $0.170 per GB first 10 TB / month data transfer out Χρήση από Amazon για να τρέχει το δικό της παγκόσμιο δίκτυο των ιστοσελίδων της.
Λειτουργία S3 Παρουσίαση διαπροσωπείας στον χρήστη για χρήση S3 που περιέχει μια φόρμα με διάφορες λειτουργίες Ο χρήστης δημιουργεί ένα bucket μέσο της διαπροσωπείας. Το αίτημα του χρήστη προωθείται στην Amazon S3 ως ένα SOAP αίτημα. Δημιουργία bucket στην Amazon Χρήστης εντοπίζει ένα αρχείο στον υπολογιστή και το κάνει submit στην σελίδα. Το αρχείο μετατρέπεται σε stream και φορτώνεται στην εφαρμογή του Web Server O Web Server παίρνει το stream και το περνά στον server της Amazon S3 χρησιμοποιώντας SOAP πάνω από HTTP Ο Amazon S3 server αποθηκεύει το stream ως αρχείο σε ένα ασφαλή χώρο αποθήκευσης. Αρχείο συνδέεται με το bucket που ήδη δημιουργήθηκε.
Εφαρμογή ιστού που παρέχει εύκολη δημιουργία, διαχείριση και επέκταση μιας relational database μέσα στο cloud Διαχειρίζεται καθήκοντα διοίκησης βάσης δεδομένων Πρόσβαση σε όλες τις δυνατότητες που παρέχει και μία βάση MySQL H Amazon RDS παρέχει την δυνατότητα εισαγωγής έτοιμης relational MySQL database Αποθήκευση backups κάθε κάποια χρονική περίοδο Υπολογισμός πόρων και χώρου αποθήκευσης μέσω απλής κλήσης από το API Χρέωση: Small DB Instance: 1.7 GB memory: $0.11 per hour Large DB Instance: 7.5 GB memory: $0.44 per hour
Δυνατότητα εκτέλεσης υπολογισμών από απλούς μέχρι πολύ πολύπλοκους χρησιμοποιώντας τους πόρους του cloud Iδανικό για web-scale computing Γρήγορη εκτέλεση μεγάλων και χρονοβόρων εφαρμογών Χρήση παράλληλου προγραμματισμού Χρήστης έχει απόλυτο έλεγχο των διαφόρων υπολογιστικών πόρων που δεσμεύονται Χρήστης πληρώνει μόνο την χωρητικότητα που χρησιμοποιεί: Small Instance (Default) 1.7 GB of memory: -$0.12 per hour
Δημιουργία Amazon Machine Image(AMI) που περιέχει εφαρμογές, βιβλιοθήκες, δεδομένα και συσχετιζόμενα configuration settings Χρήση προκαθορισμένων, προσχεδιασμένων AMIs templates t για να χρησιμοποιηθούν και να τρέξουν αμέσως Φόρτωση του AMI στο Amazon S3 Amazon EC2 παρέχει εργαλεία που κάνουν την αποθήκευση του AMI εύκολη. Επιλογή instance types και λειτουργικού συστήματος που επιθυμούμε. Μπορούμε να ξεκινούμε, σταματούμε και διαχειριζόμαστε όσα instances του AMI χρειαζόμαστε, χρησιμοποιώντας το API και μια ποικιλία από εργαλεία διαχείρισης που παρέχονται από το EC2
Αξιόπιστή και επεκτάσιμη ουρά Προσφέρει αποθήκευση μηνυμάτων που ταξιδεύουν μεταξύ των υπολογιστών Εύκολη μεταφορά δεδομένων μέσω κατανεμημένων υπολογιστών Δεν χρειάζεται ο κάθε υπολογιστής να είναι συνεχώς διαθέσιμος Χρέωση: Requests:$0.01 per 10,000 Amazon SQS Requests Data Transfer:$0.100 per GB tranfer in
Βάση που θα κρατά πληροφορίες για τους φοιτητές της πληροφορικής, τα μαθήματα που προσφέρονται και τους καθηγητές που τα διδάσκουν Η εφαρμογή είναι online Βάση Δεδομένων βασισμένη στην υπηρεσία SimpleDB της Amazon που επιτρέπει τη δημιουργία και διαχείριση βάσεων υλοποιημένων σε cloud computing Domain βάσης Φοιτητές Μαθήματα Καθηγητές Ο χρήστης θα διαχειρίζεται τη βάση μέσω ενός interface (online εφαρμογή) Δυνατότητες χρήστη Δημιουργία domain Ανάκτηση υπάρχων Domains Παρουσίαση των attributes κάποιου Domain Εισαγωγή Δεδομένων σε πίνακα Εκτέλεση queries
Δημιουργία account στα AWS και εγγραφή στο Amazon SimpleDB Εγκατάσταση Tomcat( Servlet Container) Η Amazon προσφέρει ένα API που περιλαμβάνει σειρά από μεθόδους που υλοποιούν όλες τις προσφερόμενες λειτουργίες σε γλώσσα JAVA Μελέτη και χρήση αναγκαίων κλάσεων/μεθόδων από το API Για την υλοποίηση του interface χρησιμοποιήσαμε html φόρμες μέσω των οποίων ο χρήστης θα μπορεί να αλληλεπιδρά με τη βάση Χρήση servlet για κλήση μεθόδων και υλοποίηση όλων των απαιτούμενων λειτουργιών Παρουσίαση αποτελεσμάτων στο χρήστη πάλι μέσω των servlets σε html μορφή
Root folder of application i Contains WEB-INF and html code Classes: Binary αρχεία Lib: Packages και.jar αρχεία Src: Java source code Web.xml: XML αρχείο για χρήση των Servlets
Create Domain-Html Code <form method="post" action="createdomainsample"> <label for="accesskey">enter your Access Key</label> <input type="password" pass id="accesskey" ey name="accesskey"/> <label for="secretkey">enter your Secret Access Key </label> <input type="password" p id="br><br>secretkey" name="secretkey" <label for="name">enter name for Domain</label> <input type="text" id="name" name="name"/> <button type="submit" value="submit Form">Create Domain</button> <input type="reset" value="reset Form"/> <a href="formappearance.html" target="formappearance"><button type="button" value="back" name="back">back </BUTTON></a> </FORM> Create Domain-Java Code import java.io.printwriter; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import com.amazonaws.sdb.*; import com.amazonaws.sdb.model.*; import com.amazonaws.sdb.mock.amazonsimpledbmock; public class CreateDomainSample extends HttpServlet{ @Override public void init(servletconfig config { super.init(config); protected void dopost(httpservletrequest Httprequest, HttpServletResponse response) throws ServletException, IOException { String domainname = Httprequest.getParameter("name"); name); String accesskey = Httprequest.getParameter("AccessKey"); String secretkey = Httprequest.getParameter("SecretKey"); String accesskeyid = accesskey; String secretaccesskey = secretkey; AmazonSimpleDB service = new AmazonSimpleDBClient(accessKeyId, secretaccesskey); CreateDomainRequest request = new CreateDomainRequest(); request.setdomainname(domainname); td i N invokecreatedomain(service, request, response, domainname);
public static void invokecreatedomain(amazonsimpledb ( S p service, CreateDomainRequest request, HttpServletResponse httpresponse, String domainname) { CreateDomainResponse response = service.createdomain(request); if(response!=null){ httpresponse.setcontenttype("text/html"); PrintWriter out= httpresponse.getwriter(); out.println( println("<html>"); <html>); out.println("<head>"); out.println("<title>list Attributes</title>"); out.println("</head>"); out.println("<body>"); out.println("<br>"); out.println("the domain " + domainname + " has been successfully created to the Database"); out.println("</body>"); out.println("</html>"); out.close();
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>createdomainsample</servlet-name> l l <servlet-class>com.amazonaws.sdb.samples.createdomainsample</servlet-class> </servlet> <servlet-mapping> <servlet-name>createdomainsample</servlet-name> <url-pattern>/createdomainsample</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file> </welcome-file-list> </web-app>
HTML Code <form method="post" action="selectsample"> <label for="name">enter your Query </label> <input type="text" id="name" name="name"/> "/ <input type="submit" value="submit Form"/> <input type="reset" value="reset Form"/> <a href="formappearance" target="formappearance"><button type="button" value="back" name="back">back </BUTTON></a> / </FORM> Java Code public class SelectSample extends HttpServlet{ @Override public void init(servletconfig config) throws ServletException { super.init(config); protected void dopost(httpservletrequest request1, HttpServletResponse response1 { String accesskeyid = ****"; String secretaccesskey = *****"; String query = request1.getparameter("name"); AmazonSimpleDB service = new AmazonSimpleDBClient(accessKeyId, secretaccesskey); SelectRequest request = new SelectRequest(); request.withselectexpression(query); invokeselect(service, request,response1, query);
public static void invokeselect(amazonsimpledb service, SelectRequest request,httpservletresponse httpresponse, String query){ SelectResponse response = service.select(request); httpresponse.setcontenttype("text/html"); PrintWriter out=httpresponse.getwriter(); out.println( println("<html>"); <html>); out.println("<head>"); out.println("<title>query"); out.println("</head>"); out.println("<body>"); out.println ("<FONT align='center'>response for query" + "'" + query + "'</FONT>"); out.println("<br>"); out.println ("======================================"); out.println("<br>"); out.println("<br>"); out.println("<table border='1'>"); out.println( println("<tr>"); int count=1;
if (response.issetselectresult()) { SelectResult selectresult = response.getselectresult(); java.util.list<item> itemlist = selectresult.getitem(); for (Item item : itemlist) { if(count==1) { out.println("<th>item"); java.util.list<attribute> attributelist = item.getattribute(); if(count==1{ java.util.list<attribute> attributelist1=attributelist; for (Attribute attribute : attributelist1) { if (attribute.issetname()) { out.println("<th>" + attribute.getname()); out.println("<tr><td>" + count); for (Attribute attribute : attributelist) { if (attribute.issetvalue()) { out.println( println("<td>" +attribute.getvalue()); out.println("</tr>"); count++; if (selectresult.issetnexttoken()) { //out.println("nexttoken"); //out.println("" + selectresult.getnexttoken()); out.println("</table>"); out.println("</body>"); out.println("</html>"); out.close();
Δεν υπάρχει προς το παρόν ευελιξία για υλοποίηση συνθετών queries Δημιουργία online web application (interface) με τη βάση Προαπαιτεί εξειδικευμένες γνώσεις (servlets, jsps, php, java) Πολυπλοκότητα κώδικα Η σύνδεση και αλληλεπίδραση με τη βάση προϋποθέτει την ύπαρξη σύνδεσης ύδ με το Internet t Δεν συστήνεται για μεγάλους οργανισμούς
Ευκολία για γρήγορη ανάπτυξη μιας online βάσης δεδομένων Plug in για γνωστά IDEs όπως στον eclipse. Χρήση γραφικού περιβάλλοντος Χρήση από άτομα χωρίς εξειδικευμένες γνώσεις σε προγραμματισμό Παροχή ολοκληρωμένου API σε γλώσσες όπως JAVA,PHP,C#,C++ για τροποποίηση κώδικα και ικανοποίηση εξειδικευμένων αναγκών Η εφαρμογή είναι πλήρως επεκτάσιμη αφού φαινομενικά στο cloud υπάρχουν απεριόριστοι πόροι Τεράστια Υπολογιστική Ισχύς Τεράστιος Αποθηκευτικός χώρος Πλήρως αξιόπιστη αφού το cloud εγγυείται ότι τα δεδομένα που θα αποθηκευτούν είναι πλήρως ασφαλισμένα Γίνονται backup σε πολλά server farms Τρέχουν έξυπνοι αλγόριθμοι για προστασία από intruders και unauthorized access Αμελητέο οικονομικό κόστος Η χρέωσή γίνεται βάση του χρόνου που γίνεται χρήση του cloud για επεξεργασία ($0,154 per machine hour) Του χώρου που καταλαμβάνουν τα δεδομένα ($0.100 per GB) Δεν υπάρχει start up cost