김경호/자유기고가zesus@edunet.nmc.nm.kr
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mSQL 데이터 베이스 관리 시스템은 성능면으로 볼 때에는 일단 소규모 사양을 가지는 시스템에서 가능한 적은 오버헤드를 가지고, 엄청난 속도로 데이터베이스를 접근한다는 점이다. 비교 설명을 하면, 데이터 처리 속도는 Postgres의 20배 빠르고, Ingres보다 4배 정도의 빠른 속도를 가지는 자칭 초경량 관계형 데이터베이스 엔진이다. 인터넷! 우리들은 대부분을 인터넷에 젖어 살고 있다. 인터넷에서 모든 정보를 얻는 시대가 바로 지금 우리가 살고 있는 시대이다. 일상생활에서 쉽게 우리는 이러한 예를 접할 수 있다. 일례로 인기 텔레비젼 방송 프로그램에서 설문 조사를 위하여 인터넷 주소와 대형 비비에스의 이름을 우리는 쉽게 들을 수 있다. 또한 인터넷을 주제로 CF가 만들어지고 기업 이미지광고에서도 기업 인터넷 주소를 함께 광고하여 선전에 효과를 거두고 있으며, 직장인들은 자신의 인터넷 전자메일주소와 회사의 홈페이지 주소를 함께 명함에 새기는 것들을 볼 수 있을 것이다. 이제는 누구나 쉽게 인터넷에 접근할 수 있으며, 인터넷을 통하여 정보를 주고 받는 것이 편리하고, 신속하게 처리가 되기 때문에 일상생활의 일부분이 되어가고 있다. 이렇듯 일상생활에서는 많은 종류의 정보들이 발생하게 되고 데이터들은 그 필요성에 따라서 매우 빠르게 혹은 매우 많은 양으로 이동을 하게 된다. 이러한 데이터 중에서 하나하나 그 데이터들은 그 의미가 없는 것이 대부분이다. 하지만 하나의 데이터들이 모여서 그 양이 많아지게 된다면 그 의미는 매우 달라질 수 있다. 그 정보를 어떻게 사용하고 어디에 적용할 것인지 정확하게 판단할 수 있다면, 그 데이터들은 더 이상 데이터가 아닌 값어치가 있는 정보가 될 수 있다. 하지만, 어떻게 이러한 많은 양의 데이터들을 필요에 따라서 분류하고 저장할 수 있겠는가? 그러기 위해서 우리는 이러한 데이터들을 관리할 필요를 느끼게 되었고 점차 관리를 해줄 수 있는 프로그램들이 생겨나게 되었다. 그러면 데이터는 집합되어 중요한 정보가 되고 곧 경제적인 이익이 발생하는 것이기 때문이다. 이러한 데이터들을 관리하는 프로그램들은 아주 많이 있었지만, Internet을 기반으로 한 World Wide Web(WWW)중심으로 발달하고 있는 상황에서는 예전의 사용하던 ISAM과 같은 데이터 관리 라이브러리들은 더 이상 쓸모가 없어지고 있다. 불과 몇 년 전까지만 해도 대부분의 유명한 DBMS들은 인터넷 WWW 인터페이스 솔루션을 지원하지 않고 있었거나 솔루션을 지원하더라도 기능이 미흡한 수준이었다. 그러나 최근 1.2년 사이에 인터넷 시장이 커지자 유명 소프트웨어 회사들은 개발자들을 위하여 WWW을 중심으로 하는 데이터 베이스 인터페이스 솔루션을 개발하거나 기존의 제품을 보다 확장하여 판매하고 있다. 유닉스 계열에서 사용할 수 있는 데이터 베이스 관리 시스템들은 대표적으로 우리가 많이 알고 있는 ORACLE이나 Imformix등과 같은 대형 DBMS들이 있다. 하지만 불행하게도 이러한 것들은 가격이 고가이고, DBMS 자체의 용량이 크며, 많은 시스템 리소스를 필요로 하고, 중소규모의 데이터를 다루는데는 적합하지 않다. 또한 무료로 공개한 것은 버전이 오래되었거나 짧은 기간에 습득하기 쉬운 DBMS가 없었다. 이러한 이유로 중소규모 기업체나 개인이 어느 하나 쉽게 선택할 수 있는 것이 없었다. 그러나 이러한 조건을 모두 만족하는 데이터 베이스 관리 시스템을 우리는 곧 맛 보게 될 것이다.
1. mSQL 소개 처음에 필자는 검색엔진을 통하여 귀여운 관계형 데이터 베이스 엔진을 구하고 있는 중에 우연히 mSQL 이라는 어느 초라한 웹페이지를 발견하게 되었다. 그때가 아마 1.0.6 버전인 것으로 기억한다. mSQL 은 오스트리아의 Bond 대학에서 David.J.Hughes라는 사람이 만들었다. mSQL 데이터 베이스 관리 시스템은 성능면에서 볼 때에는 일단 소규모사양을 가지는 시스템에서 가능한 적은 오버헤드를 가지고, 엄청난 속도로 데이터베이스를 접근한다는 점이다. 비교 설명을 하면, 데이터 처리 속도는 Postagres의 20 배 빠르고, Ingres 보다 4배 정도의 빠른 속도를 가지는 자칭 초 경량 관계형 데이터 베이스엔진(RDBMS:Relational Database Management System) 이다. 메모리는 같은 기능을 수행하는데 있어서 Postgres는 하나의 Backend가 각각 1.5MB의 메모리를 사용하여 mSQL 보다 많은 시스템의 리소스를 필요로 한다. 물론 Postgres의 확장된 SQL 은 mSQL에서는 찾아볼 수 없는 특징이다 .예를 들어 class를 상속한다든가 하는 것은 mSQL에서는 할 수 없는 기능이지만 mSQL 시스템 유틸리티 중에 일부를 사용하여 편리하게 유사한 데이터 베이스를 정의할 수 있을 것이다. ① mSQL에 접근하는 방법 mSQL은 두 가지 방법으로 접근하여 사용할 수 있다. 한가지는 mSQL은 데이터 베이스 관리서버와 mSQL API를 이용하여 작성된 프로그램을 컴파일하여 생성된 clint application 프로그램을 실행하여 접근할 수 있고, 또 한가지 방법은 직접 사용자가 mSQL이 제공하는 시스템 프로그램을 사용하여 SQL문을 사용하여 접근할 수 있다. SQL은 ANIS standard SQL을 지원하지만, 관계형 DBMS에서 지원하는 View와 nested query는 아직 지원하지 못하고 있다. ② mSQL 라이선스 mSQL에는 두 가지의 라이센스 종류가 있다. 하나는 상업적인 목적으로 mSQL을 사용할 경우에 적용되는 라이센스와 연구 및 학습을 목적으로 mSQL을 사용하는 경우에 적용되는 라이센스가 있다. 물론 이것은 GNU소프트웨어의 GPL과 같은 라이센스가 아니기 때문에 수정해서 사용해서는 안된다. 상업적 목적으로 사용할 경우에는 반드시 등록버전을 사용해야 하는데 mSQL 은 완전한 공개 소프트웨어가 아니기 때문이다. mSQL은 14일 동안 사용해 본 후에 등록을 하도록 요구하고는 있다. 등록버전에 대하여서는 다음의 주소로 접속해서 라이센스를 얻어야 한다. 아마도 여러분들은 아주 적당한 가격으로 mSQL 데이터 베이스를 구입할 수 있을 것이다. mSQL홈페이지에 접속을 한 후에 LIcense아이콘을 클릭하면 등록에 관한 모든 사항을 알 수 있을 것이다. US달라를 요구하는 것을 보면 그 동안 많은 수익을 얻었고, 여러 나라에서 주문이 되었다는 것을 알 수 있다. 국내 환율을 알아보려면 라이센스 페이지에서 맨 밑의 여러 나라 환율을 전문적으로 계산해 주는 페이지가 있다. 그리고 우리는 가장 흥미있는 mSQL의 또 다른 라이선스를 볼 수 있다. 무료로 사용할 수 있는 라이선스로 대학에서 개인적인일을 하기 위하여 사용하거나 연구 또는 관계형 데이터 베이스를 학습하기 위하여 사용한다면, Free License의 범위에 속하는 것이 되므로 무료로 사용할 수 있다. ③ mSQL을 제공하는 언어들 mSQL이 지원하는 언더는 C를 위한 API를 지원하고 있기 때문에, C를 사용하는 개발자는 API 사용방법을 익히기만 하면 곧 DBMS을 이용하여 휼륭한 프로그램을 작성할 수 있고, 스크립트 언어를 다룰 줄 안다면, mSQL에서 지원하는 "Lite"라는 스크립트 언어로 프로그램을 작성할 수 있다. Unix 환경만 지원한다. Perl에 자신이 있다면 MsqlPerl로 프로그램을 작성할 수 있다. Java 언어도 지원하고 있는데 인터넷에 메일링리스트가 운영중에 있다. Java언어의 경우에는 MsqlJava-1.1.1이나 mSQL JDBC로 mSQL에 접근하여 Web Application을 만들 수 있다. TCL/TK를 잘 한다면, tcl_msql을 사용할 수 있다. 마지막으로 Phyton 인데 Phyton을 할 수 있는 사람은 별로 없으리라 생각되지만, PymSQL이라는 패키지를 얻어서 사용하면 된다. Lite 스크립트 언어 제외하고는 대부분 초기에 몇몇 사람이 독자적으로 개발한 것들이다. 언급한 몇몇 지원 패키지들이 mSQL 2.0용으로 버전업되지 않았을지도 모르니 지원 버전을 반드시 확인해야 한다.
2. Mini SQL 2,0 설치 ① mSQL 홈페이지에 접속하기 Mini SQL 2.0은 1997년 7월 7일에 릴리즈가 되었다. 우선 mSQL홈페이지에 접속하여 보자. 접속한 후에 mSQL 2.0 Release를 선택하여 다운 받는다. Hughes Technology 홈페이지 주소는 다음과 같다. 홈페이지에 접속을 하고 나면 예전보다. 아주 편리하고 예쁜 홈페이지를 볼 수 있다. 중간에 보면 mSQL 2.0.1을 선전하는 것을 볼 수 있다. mSQL 2.0.1은 2.0 버전의 버그를 수정하여 다시 릴리즈 되고 있다. mSQL은 대부분의 Unix기계에서 설치가 가능하다. mSQL 2.0을 받았다면, 받은 파일명이 "msql-2.0-rel.tar.gz"인지 확인한다. mSQL은 GNU 소프트 웨어인 tar와 gzip의 압축이 된 상태에서만 배포가 되고 있다. 그러므로 시스템이 혹시 tar나 gzip또는 gunzip가 없다면, 가까운 GNU 소프트웨어가 Mirror된 FTP찾아서 이들 패키지들을 받은 후에 설치해야 압축을 풀 수 있다. 홈페이지에서 나가기 전에 잠시 둘러보는 것도 좋을 것 같다. mSQL이 지원하는 라이브러리들을 한번 둘러보는 것도 좋을 것 같다. 여기에서는 각각의 디렉토리에 접근하면, 라이브러리 또는 프로그램이 있고 , 친절한 문서까지 함께 있어서 이 디렉토리에 있는 것이 무엇에 사용하는지를 쉽게 알 수 있도록 되어 있어서, 언제든지 자신이 필요로 하는 라이브러리를 얻을 수 있다. ② mSQL 컴파일하기 다운 받은 mSQL을 적당한 장소에 복사한 후에 압축을 해제하는 것이 좋다. 대부분 임시 디렉토리를 생성해서 그곳에서 하겠지만 우리는 조금 다르게 local 디렉토리에서 작업을 하는 것이 좋겠다. 다음명령들을 command 라인 상에서 수행한다. X에서 작업하고 있다면 hanterm이나 X-term을 실행하고 하기 바란다. cp msql-2.0-rel.tar.gz/usr/local 또는 gzip -d msql-2.0-rel.tar.gz 이 명령을 입력하면 다음과 같은 디렉토리가 생성된다.
리눅스에서 작업을 할 경우에는 tar 옵션에 -z를 함께 하면 편리하게 작업할 수 있다. mSQL은 make 명령에 여러 가지기계를 자동으로 알아내어 적절한 소스를 생성하는 방식으로 만들어졌다. 따라서 여러분들은 다음과 같은 명령으로 적당하게 기계의 성능에 맞는 소스를 생성할 수 있다.
이것은 mSQL 은 기계의 종류에 따라서 적절히 target호스트에 맞는 디렉토리를 생성하고 이것을 이용하여 mSQL2.0이 컴파일 시작하게 될 것이다. 아마도 여러분이 정확하게 실행을 했다면, 현제 디렉토리에서 targets이라는 디렉토리를 쉽게 찾을 수 있다. 우리는 이 디렉토리를 이용할 것이다. 다음과 같은 명령을 입력하여 디렉토리를 전환하고 그 디렉토리에서 다음과 같이 ./setup을 실행한다. ./setup 이 명령어는 현재 시스템에서 mSQL를 컴파일하는데 필요한 라이브러리와 시스템 콜등을 체크하여 적절한 설정파일을 생성한다.
만약 체크 도중에 문제가 발생하게 되면 해당시스템에 GCC 라이브러리를 다시 설치하거나, 관리자에게 문의하기 바란다. 모든 관계되는 사항이 성공적으로 체크가 되고 나면, mSQL을 설치할 디렉토리를 설정해야 한다. 여러분이 화면에 영문으로 site.mm이라는 파일을 편집해도 된다는 메시지가 보일 것이다. mSQL은 데이터 베이스를 제공하거나 서버에서 사용하지 않는다면, 이 디렉토리를 변경하는 것이 좋다.
홈페이지나 그밖에 개인적인 용도로 사용하려면 site.mm 문서에서 INST_DIR 부분을 자신의 홈 디렉토리내에 "....Hughes"로 설정하면 되고 패스는 절대 주소로 사용해야 한다. 워크스테이션이나 대형 유닉스기계에서 개인적인 용도로 설치를 한다면, 반드시 pwd명령으로 자신의 디렉토리를 확인하여 설정하기 바란다.
다음으로 우리는 mSQL을 실제적으로 컴파일하는 작업을 해야 한다. 다음의 명령을 입력하면 위에서 보는 것과 같이 Makefile을 생성한 후에 이진파일을 생성하게 된다. Make all 컴파일이 성공적으로 완료되면 지정된 디렉토리에 컴파일된 모든 파일을 복사해야 한다. 다음 명령을 실행하여 설치를 한다. Make install 설치가 완성되면 "/usr/loacl/Hughes" 디렉토리에는 아래와 같은 파일들이 보일 것이다. 만약에 다른 디렉토리를 지정했다면 해당 디렉토리에 설치가 되어 있을 것이다.
여기서 간단히 mSQL이 설치된 디렉토리 구조는
알아보자
이 디렉토리들 중에서 가장 흥미를 유발시키는 것은 www/ 디렉토리일 것이다. 이것은 mSQL이 아주 쉽게 Web과 함께 DBMS를 연동할 수 있다는 것을 보여주는 것으로 mSQL배포판에 항상 포함되어 있다.
mSQL DBMS는 9개의 어플리케이션 프로그램으로 구성되어 있고, 1개의 데몬이 존재한다. 여기서 msqlview와 msqltool은 제외하고 보아주기 바란다. 이 프로그램들은 필자가 불편한 것을 조금 수정하여 만든 프로그램이므로 신경쓸 필요가 없다. w3-auth 와 w3-msql는 Web 과 mSQL인터페이스로 이 파일들은 httpd 데몬 디렉토리에 /cig-bin 디렉토리에 복사하여 www/ 디렉토리내의 예제 프로그램을 테스트할 수 있다.
3. mSQL 환경설정 mSQL설치를 모두 성공적으로 마쳤다면 mSQL을 사용할 수 있도록 환경을 설정해야 한다. 지금의 상태로는 mSQL을 사용할 수 없다. 환경을 설정하기 위하여 다음 명령을 실행한다. cd/usr/local/Hughes/ vi msql.conf msql.conf 파일은 mSQL 데몬에 대한 동작을 사용자가 지정할 수 있다. 이전버전에는 이러한 것이 지원하지 않았으나 2.x 버전에서부터 지원하기 시작했다. msql.conf은 [Genaral] 섹션과 [w3-msql] 섹션 그리고 [system] 섹션으로 총3가지의 섹션으로 구성되어 있다. 그중에서 General 섹션에서 서술된 파라메터들을 알아보자. ·General 섹션
general 섹션에서 %I 라는 것이 있는데 이것은 mSQL을 설치한 디렉토리를 말하는 것으로 파라메터 Inst_Dir 과 같은 값을 가지게 된다. mSQL을 개인이 설치하는 것이라면 mSQL_User 와 Admin_User 의 아이디가 같아야 한다. 그 다음에 chown명령으로 mSQL 디렉토리 모두를 해당 아이디로 바꾸어준다. 그렇지 않은 경우에는 기본값을 유지하는 것이 좋고 슈퍼유저는 반드시 msql이라는 사용자를 adduser 프로그램으로 생성해야 한다. 다음은 msql.conf를 설정한 예제이다.
다음으로 mSQL 데이터 베이스 서버에 대하여 디버그 메시지를 볼 수 있게 해보겠다. 아래에 보면 profile에 api와 query. malloc 와 그 밖의 여러 가지 상황에 대한 디버그 메시지를 출력하도록 설정되어 있다 다음의 표는 MSQL_DEBUG 환경변수에 옵션으로 들어갈 수 있는 디버그 모듈들이다. 자신이 필요한 디버그 모듈을 선택하여 설정하기만 하면 된다.
mSQL에서 제공하는 디버그 옵션
설정이 모두 끝났으면 이제 데이터 베이스 서버를 실행시켜야 된다. mSQL의 2.0 버전부터는 "msql2d"로 이름이 바뀌었다. 다음 명령을 실행하여 mSQL 2.0 DBMS Server를 띄워보자 /usr/local/Hughes/bin/msql2d & 실행이 되면서 메시지가 출력될 것이다. 하지만 매번 이렇게 귀찮게 명령을 내리고 싶지 않다면 "/etc/rc.d/rc.local" 파일을 다음과 같이 편집하는 것이 편리하다. 리눅스가 알짜 웨어라면 "/etc/rc.d/rc.alzza"파일 편집한다. 이것은 시스템이 켜질 때마다 mSQL DBMS 서버 데몬을 실행하게 된다.
물론 시스템이 Shutdown 될 때는 mSQL Server도 Shutdown이 되므로 일부러 mSQL Server를 매번 Shutdown 할 필요는 없다. 이렇게 해서 최근에 인기를 몰고 있는 UNIX용 RDBMS인 mSQL 2.0를 리눅스에 설치해보았다. 많이 미흡한점이 있으나 그나마 mSQL설치하고 사용하는데 있어서 도움이 되었으면 좋겠다. |