Databases dan Web
Motivasi • Menyediakan jalan/cara remote access ke database server melalui browser. • Menggabungkan web server (http) dan database server. • Menggunakan semua metodologi web design standard untuk menyediakan kemudahan pemakaian, front end GUI ke database.
Apa yang kita bahas? • Pengertian web database • Motivasi dan aplikasi • Sekilas arsitektur Client/Server – 2-Tier vs 3-Tier
• Sekilas Relational Databases/SQL • Teknik Pengaksesan Web ke RDBMS – ODBC/JDBC Middleware – CGI – ASP
Definisi Web Database • Tempat penyimpanan (repositories) databases atau informasi yang secara dinamis berinteraksi dengan halaman Web. • Sebuah metode untuk menyimpan content WWW, dalam format terstruktur atau useable, yang terhubung baik secara statis maupun dinamis ke database lain. – Membantu komunikasi antara Web server dan database – Memungkinkan pemakai menerbitkan atau mengumpulkan informasi dari manapun
Aplikasi • E-commerce! • Contoh lain: – Database besar yang tersedia bagi end-user (online catalog), contoh amazon.com, yahoo.com, google.com, etc. – Akses langsung ke database yang sebelumnya hanya dapat diakses dengan menggunakan bantuan third party, e.g. online banking.
Aplikasi • • • • • • • •
Resource libraries Catalogs Directories (Yellow pages) Online-Shopping Online Auctions Training courses Survey Financial Analysis
Mengapa bergeser ke web?
Arsitektur Client/Server • Web database merupakan bentuk dari arsitektur client/server. • Arsitektur client/server dikembangkan untuk memanfaatkan kekuatan pemrosesan client (desktop) untuk : – Pemrosesan data secara lokal (improve esponse time) – Menyediakan graphical interfaces – Mengurangi beban komputasi pada server
2-Tier Client/Server • Model client/server “klasik” adalah 2-tier (client dan server). • Client: – User interface – Query formulation – Data manipulation
• Server: – Standard DBMS services – query optimisation, transaction management, concurrency control etc.
• Integritas/Business Rules mungkin dijalankan baik di client maupun di server.
Kelemahan C/S 2- tier • Apakah arsitektur 2-tier cocok untuk web clients? • Not necessarily – Kita tidak ingin pemakai untuk mendownload dan menjalankan S/W di mesin pemakai yang akan melakukan query dan pemrosesan data secara local – Dengan web, client akan menjadi “thinner” (thin client), artinya, kita hanya ingin menyediakan GUI saja dengan tidak banyak pemrosesan.
3/multi-Tier Client/Server • Adanya penambahan tier antara database server dan client. • Tier ketiga (middle) dapat digunakan untuk menjalankan business rules dan melakukan pemrosesan. • Beban pada DBMS server dapat berkurang, sehingga transaksi pada DBMS Server dapat lebih efisien. • Aplikasi pemroses akan digeser ke lapisan middle, yang memungkinkan thin clients.
3/multi-Tier Client/Server • Application server (middle tier) dapat berada pada mesin yang berbeda dengan DBMS server. • Banyak vendor menawarkan 3-Tier environments: – Oracle 9i Application Server + Oracle 9i RDBMS – Microsoft Transaction Server (MTS – part of Internet Info. Server 4.0) + – Microsoft SQL Server – IBM CICS + IBM DB2 – Sybase Enterprise Application Server+ Sybase Adaptive Server RDBMS
• Dimungkinkan untuk menggabungkan antara application servers dan database servers.
Middleware • Software yang menjadi perantara antara client dan database server. • Menyediakan API (application programming interface) pada dua sisi sehingga memungkinkan client dan server untuk berkomunikasi satu dengan lainnya. • Memungkinkan pendekatan standard pengaksesan database antara server dan client yang terpisah dan berbeda. • “Database driver” sama dengan device driver software.
Middleware • Contoh : Oracle SQL*Net (Net8)
Arsitektur dasar WebDB
Arsitektur dasar WebDB
Konsep Relational Database • Dr. E.F. Codd mengajukan model relational untuk system database th 1970. • Model tersebut menjadi dasar relational database management system(RDBMS). • Model relational terdiri dari : – Kumpulan objek atau relasi – Sekumpulan operator digunakan pada relasi – Integritas data untuk ketepatan dan konsistensi
Terminologi Relational Relational Database
Model Entity Relationship
Relational Databases dan SQL • Relational Database menyimpan data pada table. • Objek-objeknya : – Primary keys – Foreign keys – Views – Etc.
SQL • Structured Query Language. • DDL dan DML (serta DCL). • Standard ANSI untuk bahasa query relational database. • Non-procedural. • Pengoptimasi Query diperlukan untuk penerapan yang lebih efisien.
Perintah SQL
Contoh SQL select s.stunum,surname,street,subject,result from student s, enrolment e where s.stunum = e.stunum union select stunum,surname,street,' ',' ' from student where stunum not in (select s.stunum from student s, enrolment e where s.stunum = e.stunum);
CGI • CGI=“Common Gateway Interface” • Menyediakan standard komunikasi (via http) antara halaman web dan program (CGI scripts) yang dijalankan pada web server. • Memungkinkan halaman web yang dinamis/interaktif.
Bagaimana CGI scripts dijalankan
CGI scripts • CGI scripts dapat ditulis dalam berbagai bahasa yang dapat dijalankan pada web server. • Bahasa untuk CGI: – Perl (requires perl interpreter) – C/C++
CGI untuk Akses Database - Perl • Databases dapat dimanipulasi melalui dua modul perl : – DBI (Database Interface) – DBD (Database Driver)
• Perintah SQL dapat dikirimkan ke DBI yang kemudian dikomunikasikan dengan RDBMS melalui DBD. • Hasil dikirim kembali dari DBD dan diperoleh melalui DBI.
CGI untuk Akses Database - Perl • DBD “Layer” menyediakan ketidak tergantungan RDBMS. • Untuk menggunakan database lain, cukup mengganti DBD
Microsoft ASP • ASP = “Active Server Pages” • Platform Microsoft memerlukan (NT/2000 dengan IIS – Internet • Information Server) • Coba tengok www.apache-asp.org • Dapat digunakan dalam arsitektur 2-tier atau 3-tier, sebagian besar model 3-tier (MTS sudah build in IIS 4.0)
• Sebuah file ASP (.asp) berisi campuran static HTML dan script. • Bahasa script harus sebuah ActiveX scripting engine yang tersertifikasi Microsoft, contoh VBScript, Jscript, Perlscript. • Komponen scripting menerapkan pemrosesan server-side sebuah halaman (yaitu halaman yang secara dinamis diproses oleh web server sebelum dikirim ke client) • Scripts ditandai dengan <% ...script… %>
• Halaman ASP terhubung ke database menggunakan ActiveX Data Objects (ADO). • ADO digunakan untuk terhubung ke database yang menyediakan ODBC interface. • DSN (Data Source Names) dapat diset up di server (Control Panel/ODBC Data Sources).
Contoh Microsoft ASP <% Dim Conn Set Conn=Server.CreateObject("ADODB.Connection") Conn.Open “DataSource1“ Dim objRS Set objRS = Server.CreateObject("ADODB.Recordset") Dim strSQL strSQL = "SELECT Prod_Name, Description FROM Products WHERE Unit_Price < 10" objRS.Open strSQL, objConn Do Until objRS.EOF = True Response.Write "Name = " & objRS(“Prod_Name") Response.Write "
Description = " & objRS(“Description") Response.Write "
" objRS.MoveNext Loop objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %>
Oracle 9iAS • Oracle 9i Application Server • Menggunakan web (http) server didasarkan pada Apache, dengan modul utama : – Dispatching http requests ke Java servlets – Dispatching http requests ke Perl interpreter – Encryption – Memanggil PL/SQL stored procedures
Platform Internet Oracle9i
Htp package Contoh : create or replace procedure hello AS BEGIN htp.htmlopen; -- generates htp.headopen; -- generates
htp.title('Hello'); -- generates <TITLE>Hello htp.headclose; -- generates htp.bodyopen; -- generates htp.header(1, 'Hello'); -- generates
Hello
htp.bodyclose; -- generates htp.htmlclose; -- generates
END;
PSP (PL/SQL Server Pages) Contoh : <%@ plsql parameter='dept' type='number' default='0'%> <%! cursor emp_cur(deptid emp.dept_id%type) is select * from emp where dept_id = deptid; %>
Test <%for emp_rec in emp_cur(dept) loop %> <%= emp_rec.last_name%> |
<% end loop; %>
ODBC/JDBC • ODBC dan JDBC keduanya menyediakan API yang digunakan programmers untuk mengakses databases. – Sebagai middleware. – Berada di antara application server dan database server pada C/S 3-tier.
ODBC vs JDBC • • • • •
ODBC dikembangkan Microsoft Corp. ODBC menyediakan C/C++/VB API JDBC dikembangkan Sun Microsystems. JDBC menyediakan Java API JDBC-ODBC bridge (disediakan JDK) memungkingkan aplikasi JDBC untuk berkomunikasi dengan database yang menyediakan antarmuka ODBC.
ODBC / JDBC • Programmer dapat menggunakan ODBC and JDBC secara langsung pada program dan kemudian akan dikompilasi dengn librari ODBC atau JDBC yang sesuai. • Pre-compiler tool dapat digunakan untuk konversi dari SQL ke pemanggil ODBC or JDBC. Setelah pre-compilation, final compilation proceeds as in the first case. • Contoh: Oracle menyediakan : – PRO*C, C pre-compiler -> konversi ke ODBC calls – SQLJ, Java pre-compiler -> konversi ke JDBC calls