WWW에서 포항공과대학 전자신문 구축 사례

Abstract

현재 많은 종류의 전자신문들이 인터넷에서 정보를 제공하고 있는데 여기서는 얼마전부터 인테넷에서 서비스를 해오고 있는 포항공대 전자신문의 구축 사례를 소개하고자 한다. 포항공대 전자신문은 입력된 기사들을 관리하기 위한 간단한 데이타베이스 시스템과 이 데이타베이스 시스템을 이용하는 WWW 인터페이스 (CGI 프로그램들) 로 구성되어 있다. 포항공대 전자신문은 인터넷 상에서 여러 명의 기자들이 Web browser를 이용해서 동시에 기사를 데이타베이스 내에 입력할 수 있고 입력된 기사는 다시 Web browser를 이용해서 검색하거나 참조될 수 있다. 입력되는 기사는 일반 text 뿐만 아니라 image까지 포함하는 문서이다. 기사의 입출력이 모두 기존 Web browser가 제공하는 기능을 이용해서 이루어지는 것이 특징이며 전문 DBMS는 이용하지 않았다. 데이타베이스 시스템과 WWW 인터페이스 프로그램들은 모두 PERL language를 이용해서 구현되었다.

Keywords

전자신문, 데이타베이스 시스템, WWW, CGI

Author

포항공과대학교
분산처리환경 연구실

윤태형
(A member of POSTECH WWW working group)
E-mail : nicebomb@vision.postech.ac.kr
URL : http://lion.postech.ac.kr/~nicebomb/

홍원기
E-mail : jwkhong@nile.postech.ac.kr
URL : http://dpegate.postech.ac.kr/~jwkhong/

1. 개요

현재 여러 신문사에서 전자신문을 앞다투어 개발하고 있으며 인터넷에서 자사의 전자신문을 서비스하고 있다. [ 1, 2] 신문사의 입장에서 본다면 인터넷에서 자사의 신문 기사들을 서비스한다는 것은 참으로 매력적인 일일 것이다. 왜냐하면 자사의 신문이 인터넷이라는 가상 공간을 통해서 많은 독자층을 확보할 수 있고 전세계의 누구에게나 전달될 수 있기 때문이다.

포항공대 신문 역시 보다 많은 사람들에게 편리하고 빠르게 읽혀지도록 하기 위해서 전자신문을 구축하게 되었다. 전자신문을 구축하기 이전에는 주로 대학 내에서 배포되고 대학 내에서 많이 읽혀 졌었는데 이제는 사회에 진출해 있는 많은 선배들과 포항공대에 관심을 가지고 있는 많은 사람들에게 학교 소식을 좀 더 빠르고 편리한 방법으로 제공할 수 있게 되었다.

포항공대 전자신문의 구조는 크게 신문기사들을 관리하기 위한 간단한 데이타베이스 시스템[ 3]과 WWW와 이 데이타베이스 시스템을 연결해 주는 CGI[ 4, 5] 프로그램의 두 부분으로 나누어 설명할 수 있다.
첫번째로 데이타베이스 시스템은 범용 데이타베이스 시스템을 목표로 디자인 되었기 때문에 전자신문을 구축하는 것 이외에도 인물 데이타베이스를 구축하거나 전자신문과 비슷한 성격을 가지는 데이타에 대해서 데이타베이스를 구축할 수 있다.
두번째로 CGI 프로그램은 Web browser와 데이타베이스 시스템을 연결시켜주기 위해서 필요하며 CGI 프로그램은 데이타베이스 시스템과 직접적인 관계가 없기 때문에 CGI 프로그램 개발자는 자신이 원하는 사용자 인터페이스를 만들 수 있다. CGI 프로그램 개발자가 알아야 할 중요한 내용은 사용자로부터 입력 받은 데이타를 데이타베이스 시스템에 입력하거나 입력되어 있는 데이타를 출력하는 방법인데 이것은 데이타베이스 인터페이스를 이용해서 가능하다.

이제 이 글은 WWW 상에서 특별한 DBMS의 사용 없이 전자신문의 구축이 어떻게 가능한가를 포항공대 전자신문의 예를 들어 설명할 것이다. 2장에서는 CGI에 대해서 설명하고 3장에서는 포항공대 전자신문을 구축하기 위해 조사한 사용자 요구사항에 대해서 설명하고 4장에서는 포항공과대학 전자신문의 전체 구조에 대해서 설명할 것이다. 5장에서는 이해를 돕기 위해서 신문 기사의 입력과 출력이 어떻게 이루어지는 가를 보여주고 이 때 이용되는 CGI 프로그램들에 대해서 설명할 것이다. 앞서 설명한 대로 포항공과대학 전자신문은 크게 데이타베이스 시스템과 WWW 인터페이스의 두 부분으로 나뉘어 지는데 6장과 7장에서는 이 데이타베이스 시스템에 대해서 중점적으로 설명할 것이다. 6장에서는 데이타베이스 시스템에서 사용된 데이타 모델에 대해서 7장에서는 데이타베이스 시스템의 디자인에 대해서 차례로 설명할 것이다. 마지막으로 8장에서는 결론과 향후 개획에 대해서 설명할 것이다.

2. CGI(Common Gateway Interface)

CGI는 Web server가 이용하는 것으로 CGI를 이용해서 실시간으로 문서를 생성해서 Web browser에게 보내주거나 사용자의 질의를 받아 응답하는 것이 가능하다. 보다 자세한 내용은 참고 자료 [ 4, 5] 를 참조하기 바란다.

3. Design Requirements

다음은 포항공대 전자신문을 구축하는데 있어서 필요한 요구사항들을 나열한 것이다. 아래와 같은 요구사항들을 만족시키는 전자신문을 구축하여야 한다.

4. 전체 구조

전자신문을 구축하게 되면 많은 양의 데이타들이 저장되고 또 검색되어야 하는데 데이타의 관리를 효율적으로 하기 위해서는 DBMS를 사용하는 것이 바람직하다.
전자신문 구축 초기에 어떤 DBMS가 적합한 지를 알아보기 위해서 기존에 제품화되어 있는 몇 가지 DBMS 들을 조사해 보았으나 기존에 많이 사용되고 있었던 관계형 DBMS들은 입력되는 데이타의 크기에 제한이 있었고 특히 text를 입력하는 경우 DBMS 자체적으로 각 단어에 대한 index를 만들어 주지 않아서 검색하는 부분은 여전히 따로 구현해야 했다. 이처럼 기존의 DBMS를 이용하더라도 큰 도움이 되지 않아서 직접 간단한 데이타베이스 시스템을 구현하게 되었다.

<그림 1> 포항공대 전자신문 전체 구조

전체 구조는 위의 그림과 같이 입력되는 문서들을 저장하고 관리하기 위한 데이타베이스 시스템과 이 데이타베이스 시스템을 사용하는 CGI 프로그램들로 이루어 진다. 데이타베이스 시스템은 크게 DATABASE Interface, INDEX Generator, Network Interface의 세 부분으로 나뉘어 지는데 각 부분의 특징은 아래와 같다.

위 그림에서 (1)에서 (6)까지의 번호는 사용자의 요청으로부터 Web server의 응답까지의 순서를 나타내고 있는데 사용자가 Web browser를 이용해서 Web server에게 요청(1)을 하면 Web server는 CGI 프로그램을 실행(2)한다. CGI 프로그램은 다시 데이타베이스에게 요청(3)을 하고 데이타베이스로부터 응답(4)을 받아서 HTML 문서를 만들어 Web server에게 전달(5)하면 Web server가 Web browser에게 HTML 문서를 보내주게 된다(6).

5. 신문 기사 입력 및 출력 시나리오

여기서는 이해를 돕기 위해서 실제로 Web browser를 이용해서 신문 기사를 입력하는 나리오와 출력하는 시나리오 및 관련 CGI 프로그램들을 살펴볼 것이다.

5.1 입력 시나리오

앞에서 언급했지만 사용자에게 제공되는 인터페이스는 CGI 프로그램 개발자가 원하는 대로 만들 수 있다. 아래는 기사를 입력할 수 있는 사용자 인터페이스 중에서 하나를 보여 주고 있다.

위 내용을 살펴보면 먼저 Account와 Password를 입력하는 란이 있고 기사 제목과 글쓴이 그리고 관련 그림 URL과 기사 URL을 입력하는 란이 있다. 공란을 채우고 Submit를 누르면 CGI 프로그램이 실행되는데 CGI 프로그램은 사용자가 입력한 데이타를 받아서 네트웍으로 관련 그림과 기사를 가져온 다음 데이타베이스에 입력한다. CGI 프로그램의 소스는 아래와 같다.

#!/usr/local/bin/perl

require '../library/DBInterface.pl';
require 'Misc.pl';

# ---

# Check REQUEST_METHOD

$ENV{'REQUEST_METHOD'} ne "POST" && 
&critical_error("\nYou can't call this CGI program directly");

&cgi_receive;
&cgi_decode;

# Get Fill Out Form contents 

$account = $FORM{'account'};
$password = $FORM{'password'};
$order = $FORM{'order'};
$title = $FORM{'title'};
$author = $FORM{'author'};
$imageurl = $FORM{'imageurl'};
$content = $FORM{'content'};
$texturl = $FORM{'texturl'};

# Check user authorization

$folder_root_ref = &FLD_Access("postech-times", $account, $password);
&critical_error("\nYou are not authorized") if ($folder_root_ref < 0);

# Make SEARCH string

$string = "title=$title&author=$author";

# Insert NEWS to DB

$ref_one = &FLD_GetReference($folder_root_ref, "1996/03/01");
$result = &DB_NEWSIn($ref_one, $string, $texturl, $content, $imageurl);
$result < 0 && &critical_error("\nCritical error : ");
&print_head("");
print "기사가 입력되었습니다.";

exit;
위 CGI 프로그램을 살펴보면 먼저 Fill Out Form의 내용을 얻고 Account와 Password가 올바른 지 체크하고 기사를 입력하는 간단한 내용으로 되어 있다.

5.2 출력 시나리오

데이타베이스에 입력되어 저장되어 있는 기사는 CGI 프로그램으로 다시 출력시켜볼 수 있다. 여러가지 모양으로 기사를 출력시켜 볼 수 있는데 아래는 그 중 한가지이다.

6. 데이타 모델

데이타 모델은 아래의 그림처럼 데이타베이스 시스템에 입출력되는 문서에 대한 모델을 말한다.
<그림 2> 데이타 모델

위 그림을 살펴보면 모든 문서는 입력될 때 검색 문자열 (SEARCH string) 과 함께 입력된다. 검색 문자열은 하나의 문서를 대표할 수 있는 문자열이어야 하는데 입력되는 문서를 요약 설명한 말이나 중요한 키워드들이 검색 문자열로 이용될 수 있다. 문서를 데이타베이스에서 추출해 낼 때 이 검색 문자열이 이용되며 관련된 모든 문서들을 추출할 수 있다.

기본적으로 입력되고 출력되는 문서는 일반 text와 image를 포함하는 문서인데 현재 다음의 두 가지 형태를 지원한다.

보통의 신문 기사는 text에 image를 하나만 포함하거나 아니면 text만으로 되어 있는 경우가 많다.
NEWS 문서는 이와 같은 신문 기사의 특징을 고려해서 만들어진 새로운 문서 형태로서 일반 text와 관련 image를 따로 관리하기 때문에 화면 구성이 HTML 문서에 비해 자유롭다.
HTML 문서는 NEWS 문서의 한계를 보완하기 위해서 추가한 문서형태인데 여러 image들이 문서 내에 포함되어야 할 경우 HTML 문서를 이용하면 된다.

7. 데이타베이스 시스템 디자인

데이타베이스 시스템은 앞에서 설명한 데이타 모델의 문서들을 입력하거나 출력하고 관리하기 위해서 필요한 시스템이다. 여기서는 입력되는 문서가 어떻게 저장되고 관리되는가에 대한 데이타베이스 모델을 7장 1절에서 설명하고 DATABASE Interface와 Network Interface 그리고 INDEX Generator에 대해서 각각 7장 2절, 7장 3절, 7장 4절에서 설명한다.

7.1 데이타베이스 모델

데이타베이스 모델은 입력되는 문서가 Document Repository에 어떠한 방식으로 저장되는가에 대한 개념적 모델이다. 데이타베이스 모델은 Object 개념을 포함하고 있는데 FOLDER Object와 DOCUMENT Object로 설명된다.

7.1.1 FOLDER Object

FOLDER는 DOCUMENT의 저장 창고이다. 어떤 특정 데이타베이스를 만들고자 할 경우에는 DBA(DATABASE Administrator)가 먼저 root-FOLDER를 Document Repository에 만들어야 한다. 일단 root-FOLDER가 만들어지면 이 데이타베이스에 접근 권한을 가지는 사용자들이 데이타를 입력하거나 출력해 볼 수 있다.
아래의 그림을 보면 NEWS FOLDER와 PEOPLE FOLDER가 있는데 NEWS FOLDER는 신문 기사가 저장되는 창고를 PEOPLE FOLDER는 개인의 홈 페이지가 저장되는 창고를 예를 들어 나타낸 것이다.
<그림 3> FOLDER Object

FOLDER에 대한 Requirements는 다음과 같다.

FOLDER Object와 관련된 Operation에는 다음과 같은 것들이 있다.

7.1.2 DOCUMENT Object

앞에서 설명하였듯이 입력되는 문서는 NEWS 형태와 HTML 형태로 저장되는데 이 문서들 하나하나가 DOCUMENT Object에 해당된다.
DOCUMENT Object와 관련된 Operation에는 다음과 같은 것들이 있다.

7.2 DATABASE Interface

DATABASE Interface는 외부에 공개되는 인터페이스로써 이 인터페이스를 이용해서 데이타베이스 시스템에 문서를 입력하거나 저장되어 있는 문서를 출력할 수 있다. DATABASE Interface는 FOLDER Object Methods와 DOCUMENT Object Methods 그리고 IO Methods의 세 부분으로 나뉘어져 있다.

7.2.1 FOLDER Object Methods

  • FLD_Access(root-FOLDER name, Account, Password)
  • FLD_Make(FOLDER reference, FOLDER name)
  • FLD_Remove(FOLDER reference)
  • FLD_GetReference(FOLDER reference, FOLDER name)
  • FLD_List(FOLDER reference)

    7.2.2 DOCUMENT Object Methods

  • DOC_GetFormat(DOCUMENT reference)
  • DOC_GetSEARCHString(DOCUMENT reference)
  • DOC_ToCGIParameter(DOCUMENT reference)
  • DOC_ToReference(CGI Parameter)

    7.2.3 IO Methods to DB

    NEWS 문서와 HTML 문서를 입출력 할 때 이용되는 함수들이다.

  • DB_Query(FOLDER reference, sub-SEARCH string)
  • DB_GetDOCReference(File Descriptor)
  • DB_NEWSIn(FOLDER reference, SEARCH string, text URL, text string, image URL)
  • DB_NEWSOut(DOCUMENT reference)
  • DB_HTMLIn(FOLDER reference, SEARCH string, URL)
  • DB_HTMLOut(DOCUMENT reference)

    7.3 Network Interface

    Network Interface는 FTP와 HTTP 프로토콜 등을 지원하는데 데이타베이스 시스템 내부적으로 사용되는 것이며 CGI 프로그램에서 이용하는 인터페이스는 아니다.

    7.4 INDEX Generator

    INDEX Generator는 DOCUMENT가 입력될 때 각 단어에 대해서 index를 만들어 나중에 빠른 검색을 할 수 있도록 해 준다. INDEX Generator는 독립적으로 구현되는 모듈이며 데이타베이스 시스템 내부적으로 사용된다. 현재 INDEX Generator는 구현되어 있지 않다.

    8. 결론과 향후 계획

    지금까지 포항공대 전자신문 구조를 CGI 프로그램과 데이타베이스 시스템을 중심으로 설명하였다. 포항공대 전자신문은 Web browser를 이용해서 모든 작업이 이루어지도록 되어있기 때문에 신문 기사의 입력과 출력에 제한점이 많은 편이다. 이것은 현재의 WWW 기술로는 신문 기사를 직집 저작하거나 출력되는 신문 기사의 모양을 바꾼다거나 하는 일이 쉽지 않기 때문이다. 입력과 출력에 제한점이 많이 있지만 이 글이 비슷한 일을 하고자 하는 사람들에게 도움이 되길 바란다.

    앞으로의 계획은 현재 구현되어 있지 않는 INDEX Generator를 구현할 예정이며 INDEX Generator의 구현이 끝나는 대로 모든 프로그램들을 package화하여 beta Version을 배포할 예정이다.

    참고 자료

    1. 조선일보
      URL : http://www.chosun.com
    2. 중앙일보
      URL : http://www.joongang.co.kr
    3. "월드와이드 웹과 데이타베이스 시스템의 통합", 김평철, 김상욱, 제 2회 WWW-KR Workshop 강의 자료
      URL : http://sharon.comeng.chungnam.ac.kr/~dolphin/ws2/content/TS1-3/
    4. "The Common Gateway Interface", NCSA CGI Documentation
      URL : http://hoohoo.ncsa.uiuc.edu/cgi/
    5. "서버 인터페이스", 최윤수, 제 2회 WWW-KR Workshop 강의 자료
      URL : http://sharon.comeng.chungnam.ac.kr/~dolphin/ws2/content/TS1-1/
    6. "Surfin' Network Resources Across the Web", Luca Deri, IEEE Second Workshop on Systems Management, Toronto, Canada, June 1996