21.Database


  CGI 프로그램의 최종 목적은 기업이든 쇼핑몰이든 간에 이미 구축된 Database에 대하여 웹을 통한 손쉬운 접근에 있다. 결국 대부분의 CGI프로그램은 Database와 연동하도록 작성되어야 하는 것이다.

  그래서, 이번 장에서는 우리나라의 가장 대표적인 Database인 Oracle과 연동하는 것에 대하여 간단히 알아보도록 하겠다. ( 이글을 읽는 사람은 Pro*C에 대하여 기본적인 지식이 있는 사람을 대상으로 함. )

  먼저, 여러분은 서버에서 CRON이나 BATCH성 작업을 하거나 결산을 할 때 주로 Pro*C로 작업을 할 것이다. 당연히 CGI자체도 Pro*C로 작성할 수 있다.

  그러나 여기서 반드시 고려해야할 사항이 있다. Telnet을 통한 접속이 아니라, 웹서버가 CGI를 실행을 시키게 된다는 점이다.

  간단히 말하자면, .profile에 명시되는 Oracle과 관련된 환경변수가 CGI프로그램에서는 전혀 작동하지 않는 다는 점이다. 따라서, 강제로 Setting해주어야만 한다.

  다음은 SID가 DEADFIRE인 Database에 대한 환경을 설정하는 Sample Function이다.

putenv("ORACLE_SID=DEADFIRE");
putenv("ORACLE_HOME=/oracle");
putenv("NLS_LANG=American_America.Ko16ksc5601");


  당연히, DataBase에 connect하기 전에 선행되어야 한다.

  그외의 나머지 부분은 Pro*C와 다른 것이 하나도 없다. 이렇게 함으로써 웹을 통한 접속을 보장하게 된다.

  주의해야할 일이 하나있다. CGI가 Database와 연동하기 시작하면, Process 의 자원사용율이 엄청나게 증가한다. 실제 Pro*C로 작성된 File Size가 그냥 C로 작성한 프로그램보다 사이즈가 훨씬 크다. 거기다 처리 속도 또한 2~3배정도 늦어진다.

  따라서, 다음과 같은 주의사항이 있다.

  • 많은 시간이 걸리는 작업의 경우는 차라리 BATCH작업으로 붐비지 않는 시간에 처리하는 것이 좋다.

      개발해놓아봐야 사용자의 불평만 초래할 것이다. 거기다 웹이다. 이사람들이 5초이상 대기시간이 지나가면 바로 STOP버튼을 누르거나, Reload버튼을 눌러 버린다. 이렇게 되면, 웹서버상에는 Process가 2개가 된다. 그러나, 당신도 그렇고 나도 그렇지만, 2번만 누르지 않는다. 열받으면 몇 번이고 누르게 되고, 눌린수만큼 서버에 Process가 생성되면서 전체적인 성능을 저하시키는 원인이 된다.

  • Database가 무제한 접속

    을 허가하는 것을 좋지 않다.

      앞에서 설명한 점 때문에 동시처리 가능한 연결에 제한을 두고 공유하도록 Database를 설정할 수 있다. 무제한 연결을 허용하는 경우 심하면 웹서버 전체가 동작을 멈추는 경우가 다발한다. 특이하게도 일정한 연결까지는 서비스가 잘되다가 어느 시점을 넘기면 그대로 먹통이 되므로, 유의해야 한다.

  • 자주 모니터링하라.

      최대 접속이 이루어질 때, 어느정도의 응답속도를 갖는지 Test를 한뒤 Open할 것을 권장하며, 자주 Process를 모니터링해야 한다. 월말같은 경우 평소보다 접속이 몰리면서 죽어 버리기도 한다.
  Database를 CGI로 연동할수는 있으나 앞에서와 같은 문제점들이 있어서, 특정한 Application Server를 도입하는 경우도 있다. 이러한 Application Server가 Database접속을 관리하고 Process를 관리하게 되므로 보다 안정적인 운영을 할 수 있다는 장점이 있다. 다만, UNIX환경의 Software들은 가격이 장난이 아니라는게 문제다.

  앞에서도 말했지만, Database연동은 이 한 장으로 마친다.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master