Chapter 8 데이터베이스응용개발
목차 사용자인터페이스와도구들 웹인터페이스와데이터베이스 웹기초 Servlet 과 JSP 대규모웹응용개발 ASP.Net 8 장. 데이터베이스응용개발 (Page 1)
1. 사용자인터페이스와도구들 대부분의데이터베이스사용자들은 SQL을사용하지않음 응용프로그램 : 사용자와데이터베이스를연결 데이터베이스응용의구조 Front-end Middle Layer Backend Front-end: User interface Forms and graphical user interfaces Report generators Data analysis tools Web 기반의사용자인터페이스가널리채택 8 장. 데이터베이스응용개발 (Page 2)
2. 웹인터페이스와데이터베이스 Application architecture의발전과정 Mainframe (1960 년대 ~ 1980 년대초반 ) Personal computer (1980년대 ~ 1990년대중반 ) Web (1990 년대이후 ) 8 장. 데이터베이스응용개발 (Page 3)
웹인터페이스 Web browser는 DB 응용에대한 de-facto standard Universal front end 를지원 임의의장소에위치한임의의컴퓨터에서접속가능 별도의전용코드를설치할필요가없음 DB를이용함으로써동적 Web page 생성가능 Web page = 고정된구조 (HTML) + 컨텐츠를생성하는프로그램 (Javascript, Flash, Java Applet 등 ) HTML과 Hyperlink의장점활용가능 깔끔하고이해하기쉬운사용자인터페이스 HTML 문서에포함된고사양의프로그램활용가능 Javascript, Java Applet 등을이용하여 HTML 보다고급의사용자인터페이스구현가능 Flash나 Shockwave 등을이용한애니메이션기능구현가능 8 장. 데이터베이스응용개발 (Page 4)
3. 웹기초 Uniform Resource Locator (URL) HyperText Markup Language (HTML) Client-Side Scripting and Applets Web Servers and Sessions 8 장. 데이터베이스응용개발 (Page 5)
3.1 Uniform Resource Locator (URL) URL: Web 에서포인터의역할 Example http://www.acm.org/sigmod http 문서를액세스하는프로토콜을표시 www.acm.org Internet에서 machine의고유한이름 URL의나머지부분 : 그 machine에서문서를표시 Local identification Local Identification의내용 Machine 에서문서가위치하고있는경로, 또는 프로그램의이름 + 프로그램실행을위한 arguments 예 : http://www.google.com/search?q com/search?q=chocho 8 장. 데이터베이스응용개발 (Page 6)
3.2 HTML Text formatting, hypertext link, 및이미지출력등을지원 표나 style sheet 등의기능포함 다양한입력기능지원 Pop-up menus, radio buttons, check lists Text boxes 사용자의입력을서버에전송하고, 서버에서전송된실행결과를사용자에게다시출력 Web server 와의통신을위하여 HTTP 사용 get method http://www.google.com/search?q=cho post method http://www.google.com/ / + parameter a 값은 HTTP 프로토콜의부분으로전송 8 장. 데이터베이스응용개발 (Page 7)
Sample HTML Source Text <html> <body> <table border cols = 3> <tr><td>a-101</td><td>downtown</td><td>500</td></tr> <tr><td>a-102</td><td>perryridge</td><td>400</td></tr> <tr><td>a-201</td><td>brighton</td><td>900</td></tr> / / / </table> <center> The <i>account</i> relation </center> <form action= BankQuery method=get> Select account/loan and enter number <br> <select name= type > <option value= account selected> Account </option> <option> value= Loan > Loan </option> </select> <input type=text size=5 name= number > <input type=submit value= submit > </form> </body> </html> 8 장. 데이터베이스응용개발 (Page 8)
3.3 Client-Side Scripting Client의 web browser에서실행되도록고안된언어 Javascript Macromedia Flash and Shockwave for animation VRML for 3D modeling Java Applets Active web page의구성이가능 HTML의제한을넘어선 flexible UI 제공 예 : animation by executing programs at local site 사용자입력에대한빠른응답이가능 입력된값에대한 client side 의정확성검사 대안 : 입력된모든값들을서버에전송하여검사? Client-side processing 을극대화 AJAX 8 장. 데이터베이스응용개발 (Page 9)
3.4 웹서버와세션 Web Server 서버에서실행되는프로그램 Web browser로부터전송된요청을수신 요청을실행하기위한프로그램을동작 실행결과를 HTML 형태로 browser에게다시반환 다양한정보서비스에대한중계자역할 새로운서비스를지원하기위하여해당프로그램을작성한후등록하는과정이필요 대표적인 web server: Apache, IIS 등 Web server와 application program과의연동 Common Gateway Interface (CGI) via Application server ( 예 : JSP/Servlet container) 8 장. 데이터베이스응용개발 (Page 10)
HTTP 와세션 (Session) HTTP는비연결성프로토콜 서버가요청에대해답한후, 클라이언트와의접속을종료 이유 : 서버에대한부하를줄이기위하여 동시에접속가능한클라이언트수에제한 Login 정보나 JDBC/ODBC 연결의경우, 동일한연결에대한정보를지속적으로필요로함 모든요청마다 login을해야할경우, 비효율적 해결방법 : Cookie 8 장. 데이터베이스응용개발 (Page 11)
Session 과 Cookie Cookie: 문자열정보 Server Browser 첫번째접속시생성된세션에관한기록 Browser Server 동일한세션에대한이후 interaction시 HTTP 프로토콜의일부로전송 Server는 cookie에대한정보를저장 Request를처리할때사용 예 : 사용자 ID 정보, 사용자기호도등 8 장. 데이터베이스응용개발 (Page 12)
4. Servlets and JSP 데이터베이스를이용한 Web 프로그래밍기술 Java Servlets Java Server Pages (JSP) Active Server Pages (ASP) Java Servlet HTTP 요청에대한응답을동적으로생성하는서버쪽의응용프로그램 주요내용 HTML form에서입력된인자를액세스 Business logic 을적용하여어떤응답을생성할지결정 Browser에게돌려보낼 HTML output 생성 8 장. 데이터베이스응용개발 (Page 13)
Application Server and Servlets Servlet은 application server 안에서동작 Apache Tomcat, Glassfish, JBoss BEA Weblogic, IBM WebSphere and Oracle Application Servers Application Server 의역할 요청을담당할 servlet 실행및결과를 client에게반환 각 servlet에대한요청시서버내에서새로운 thread 가생성 Servlet의배포및감시 Servlet code 가변경될경우, recompile 후다시 load 8 장. 데이터베이스응용개발 (Page 14)
Example Servlet Code Public class BankQueryServlet extends HttpServlet { public void doget(httpservletrequest( request, HttpServletResponse p result) ) throws ServletException, IOException { String type = request.getparameter( type ); type); String number = request.getparameter( number ); code to find the loan amount/account balance using JDBC to communicate with the database.. we assume the value is stored in the variable balance result.setcontenttype( text/html ); PrintWriter out = result.getwriter( ); out.println( <HEAD><TITLE>Query Result</TITLE></HEAD> ); out.println( <BODY> ); out.println( Balance on + type + number + = + balance); out.println( </BODY> ); out.close ( ); } } 8 장. 데이터베이스응용개발 (Page 15)
Server-Side Scripting Server에서 browser에게보낼 web page를동적으로생성 Web page: HTML + Embedded executable code 해당페이지가요청될때, web server는 embedded code를실행하여실제 HTML 문서를생성 Server-side scripting languages JSP, PHP General purpose scripting languages: VBScript, Perl, Python ASP.net: Visual Basic or C# 8 장. 데이터베이스응용개발 (Page 16)
Java Server Pages (JSP) A JSP page with embedded Java code <html> <head> <title> Hello </title> </head> <body> <% if (request.getparameter( name ) == null) { out.println( Hello World ); } else { out.println( Hello, + request.getparameter( name )); } %> </body> </html> JSP is compiled into Servlets Tag library 의개념지원 JSP 페이지간흐름제어 (include, forward) 다른 Java 객체사용 (usebean, setproperty, getproperty) 8 장. 데이터베이스응용개발 (Page 17)
5. 대규모웹응용개발 Web application의경우, DB 관련작업보다 UI 구성에많은노력이필요 UI에필요한프로그래밍작업을줄이기위한방법들 다양한 web page 에사용되는공통된기능들을자동으로생성하는함수제공 예 : 광역지자체이름을선택하는메뉴 날짜입력이나입력데이터검증에사용되는 Javascript를자동으로생성하는함수제공 SQL query 를입력으로받은후, 결과를표형태로출력하는일반적인함수작성 결과를페이지화 (pagination) 하는기능작성 8 장. 데이터베이스응용개발 (Page 18)
웹서버의성능향상 인기있는 web site의경우, 성능이주요고려대상 어떻게사용자요청을빨리처리할수있을까? Caching 서버사이트에서수행가능한작업들 Servlet 요청들사이에 JDBC 연결을캐싱 connection pooling 데이터베이스질의의결과를캐싱 Base relation의내용이변경될경우, cached result 도수정 ( 폐기, 재계산, incremental update) SQL Cache Dependency at ASP.net 생성된 HTML 을캐싱 클라이언트네트워크에서수행가능한작업 Web proxy에서검색페이지들을캐싱 8 장. 데이터베이스응용개발 (Page 19)