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
다음은 포항공대 전자신문을 구축하는데 있어서 필요한 요구사항들을
나열한 것이다. 아래와 같은 요구사항들을 만족시키는 전자신문을
구축하여야 한다.
- 신문기사의 입력과 출력이 모두 Web browser를 이용해서 이루어지도록
하여 언제 어디서든지 네트워크를 통해서 기사를 입력할 수 있고 입력된
기사를 볼 수 있어야 한다.
- 기사의 입력은 다수의 기자에 의해서 이루어지며 여러명의 기자들이
동시에 기사를 입력할 수 있어야 한다.
- 기사를 입력하는 것 이외의 다른 작업은 모두 자동적으로 이루어 지도록
하여 추가적인 관리가 필요하지 않도록 한다.
- 전문 DBMS는 이용하지 않으며 그 이유는 다음과 같다.
- 전자신문을 구축하는데 이용할 만한 적합한 DBMS를 찾을 수 없었다.
- 기존에 많이 제품화되어 있는 관계형 DBMS들은 입력되는
text의 길이에 제한이 있고 text가 입력될 때 DBMS 자체적으로 각 단어에
대해서 index를 만들어 주지 않기 때문에 검색 기능을 추가하는데 적합하지
않았다.
- 추가 비용 부담이 생긴다.
- 전문 DBMS를 이용하지 않으므로 직접 데이타베이스 시스템을 구현해야 한다.
- 기사를 입력하기 위해서는 Account와 Password를 알아야 하며 아무에게나
데이타베이스에 대한 접근 권한을 주지 않도록 한다.
4. 전체 구조
전자신문을 구축하게 되면 많은 양의 데이타들이 저장되고 또 검색되어야 하는데
데이타의 관리를 효율적으로 하기 위해서는 DBMS를 사용하는 것이 바람직하다.
전자신문 구축 초기에 어떤 DBMS가 적합한 지를 알아보기 위해서 기존에
제품화되어 있는 몇 가지 DBMS 들을 조사해 보았으나 기존에 많이 사용되고
있었던 관계형 DBMS들은 입력되는 데이타의 크기에 제한이 있었고
특히 text를 입력하는 경우 DBMS 자체적으로 각 단어에 대한 index를 만들어
주지 않아서 검색하는 부분은 여전히 따로 구현해야 했다.
이처럼 기존의 DBMS를 이용하더라도 큰 도움이 되지 않아서 직접 간단한
데이타베이스 시스템을 구현하게 되었다.
<그림 1> 포항공대 전자신문 전체 구조
전체 구조는 위의 그림과 같이 입력되는 문서들을 저장하고 관리하기
위한 데이타베이스 시스템과 이 데이타베이스 시스템을 사용하는 CGI 프로그램들로
이루어 진다.
데이타베이스 시스템은 크게 DATABASE Interface, INDEX Generator,
Network Interface의 세 부분으로 나뉘어 지는데 각 부분의 특징은
아래와 같다.
- DATABASE Interface는 외부에 공개되는 인터페이스로 CGI 프로그램들은
DATABASE Interface를 이용해서 데이타베이스에 접근한다.
- INDEX Generator는 문서들이 입력될 때 각 단어에 대한 index를 만들어
주기 때문에 나중에 빠른 검색이 가능하다.
- Network Interface는 FTP와 HTTP 프로토콜 등을 지원하는데 이것은
데이타베이스 시스템에 URL을 넘겨주면 데이타베이스 시스템이 직접 해당 문서를
네트워크를 통해서 입력하도록 할 때 이용된다.
위 그림에서 (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를 포함하는
문서인데 현재 다음의 두 가지 형태를 지원한다.
- NEWS 문서 : 새로 만들어진 문서 형태이며 신문 기사 형태를 의미하는
것인데 일반 text에 image 하나만을 포함하는 문서이다.
- HTML 문서 : 위 NEWS Format의 제한성을 없애기 위해서 추가한 문서
형태이다. 일반 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는 DOCUMENT를 가지거나 sub-FOLDER를 가질 수 있다.
- root-FOLDER는 Password 파일을 가지고 있어서 Account와 Password를
알고있는 사용자에게 접근 권한이 주어진다.
- root-FOLDER는 DBA(DATABASE Administrator)에 의해서 만들어지고
sub-FOLDER들은 root-FOLDER에 접근 권한을 가지고 있는 사용자들이 만들 수
있다.
FOLDER Object와 관련된 Operation에는 다음과 같은 것들이 있다.
- FLD_Access(root-FOLDER name, Account, Password)
어떤 FOLDER에 접근하기 위해서는 반드시 root-FOLDER부터 접근 권한을
얻어야 하며 이 함수가 이용된다. Account와 Password가 올바로
지정되었다면 FOLDER reference를 반환한다.
- FLD_Make(FOLDER reference, FOLDER name)
sub-FOLDER를 만들 때 사용된다.
- FLD_Remove(FOLDER reference)
FOLDER reference가 가리키는 FOLDER를 삭제한다.
- FLD_GetReference(FOLDER reference, FOLDER name)
sub-FOLDER에 대한 FOLDER reference를 얻기 위해서 사용한다.
- FLD_List(FOLDER reference)
FOLDER가 가지는 모든 sub-FOLDER의 name을 반환한다.
7.1.2 DOCUMENT Object
앞에서 설명하였듯이 입력되는 문서는 NEWS 형태와 HTML 형태로 저장되는데
이 문서들 하나하나가 DOCUMENT Object에 해당된다.
DOCUMENT Object와 관련된 Operation에는 다음과 같은 것들이 있다.
- DOC_GetFormat(DOCUMENT reference)
DOCUMENT reference에 의해서 지정되는 문서가 NEWS 문서인지 HTML 문서인지를
알 수 있다.
- DOC_GetSEARCHString(DOCUMENT reference)
DOCUMENT의 SEARCH string을 얻고자 할 경우에 사용한다.
- DOC_ToCGIParameter(DOCUMENT reference)
- DOC_ToReference(CGI Parameter)
DOC_ToCGIParameter 와 DOC_ToReference 는 서로 연관된 함수로써
DOC_ToCGIParameter 함수를 이용해서 DOCUMENT reference를 string으로 변환할 수
있고 변환된 string은 네트워크를 통해서 전달이 가능하다.
이 string은 DOC_ToReference 함수를 이용해서 다시 DOCUMENT reference로
복귀될 수 있다.
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)
- Arguments
- root-FOLDER name : type String
- Account to this FOLDER : type String
- Password : type String
- Returns
- root-FOLDER reference : means Success
- NULL : means Error
- Errors (Global variable is set)
- -1 : root-FOLDER name is incorrect
- -2 : Account doesn't exist
- -3 : Password incorrect
FLD_Make(FOLDER reference, FOLDER name)
- Arguments
- FOLDER reference
- FOLDER name : type String
- Returns
- 1 : means Success
- -1 : means FOLDER already exists
- -2 : means Permission denied
FLD_Remove(FOLDER reference)
- Arguments
- Returns
- 1 : means Success
- -1 : means Permission denied
FLD_GetReference(FOLDER reference, FOLDER name)
- Returns
- sub-FOLDER reference : means Success
- NULL : means Error
- Errors (Global variable is set)
- -1 : means FOLDER reference is incorrect
- -2 : means FOLDER name is incorrect
FLD_List(FOLDER reference)
7.2.2 DOCUMENT Object Methods
DOC_GetFormat(DOCUMENT reference)
DOC_GetSEARCHString(DOCUMENT reference)
DOC_ToCGIParameter(DOCUMENT reference)
- Returns
- CGI Parameter : type String
DOC_ToReference(CGI Parameter)
- Returns
- 1 : means Success
- -1 : means Error
7.2.3 IO Methods to DB
NEWS 문서와 HTML 문서를 입출력 할 때 이용되는 함수들이다.
DB_Query(FOLDER reference, sub-SEARCH string)
sub-SEARCH string을 가지는 모든 DOCUMENT reference들을
standard output으로 출력한다.
DB_GetDOCReference(File Descriptor)
DB_Query 결과를 받아서 DOCUMENT reference를 하나씩 얻을 수 있다.
DB_NEWSIn(FOLDER reference, SEARCH string, text URL, text string,
image URL)
DB_NEWSOut(DOCUMENT reference)
NEWS 문서를 standard output으로 출력한다.
DB_HTMLIn(FOLDER reference, SEARCH string, URL)
DB_HTMLOut(DOCUMENT reference)
HTML 문서를 standard output으로 출력한다.
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을 배포할 예정이다.
참고 자료
- 조선일보
URL : http://www.chosun.com
- 중앙일보
URL : http://www.joongang.co.kr
-
"월드와이드 웹과 데이타베이스 시스템의 통합", 김평철, 김상욱, 제 2회
WWW-KR Workshop 강의 자료
URL : http://sharon.comeng.chungnam.ac.kr/~dolphin/ws2/content/TS1-3/
-
"The Common Gateway Interface", NCSA CGI Documentation
URL : http://hoohoo.ncsa.uiuc.edu/cgi/
-
"서버 인터페이스", 최윤수, 제 2회 WWW-KR Workshop 강의 자료
URL : http://sharon.comeng.chungnam.ac.kr/~dolphin/ws2/content/TS1-1/
- "Surfin' Network Resources Across the Web", Luca Deri, IEEE
Second Workshop on Systems Management, Toronto, Canada, June 1996