미니디비 – 2.MiniDB 작성

Mini DB를 제작하게된 동기는?

앞서 공개된 유닛테이블의 최초버전(ver 0.10)이 MySQL 전용으로 작성되었는데 이것을 본 방문자 중에 유닛테이블을 오라클에서 사용할 수 있느냐는 질문과 DB Layer를 만들어 보면 어떻겠느냐고 질문하시는 것을 보고 DB Layer의 필요성을 느꼈지요. 그래서 임시로 PHPLIB에 있는 DB Layer를 이용한 PHPLIB 버전(ver 0.11)을 공개하게 되었습니다. 그런데 기존의 DB Layer들(PHPLIB, phpDB, Metabase 등)은 데이터베이스를 다루는데 필요한 많은 기능을 구현하다보니 덩치가 큰 편이지요. 이러다 보니 유닛테이블의 PHPLIB 버전의 경우를 보면 배보다 배꼽이 커진 결과가 되었지요. 그래서 데이터베이스를 다루는데 꼭 필요한 쿼리(query) 기능과 레코드를 읽어 오는 페치(fetch) 기능만을 가진 초경량급 DB Layer를 제작하게 되었습니다.

각 DB Layer의 파일 크기 비교(단위:KB)

DB Metabase
2000.7.5
phpDB
102bR6
PHPLIB
7.2
Mini DB
0.1.1
Mini DB
0.2.2p1
MSQL 9.07 14.9 3.23 1.32 3.98
MSSQL 12.8 15.1 3.47 1.33 4.02
MySQL 10.8 15.0 9.74 1.33 3.85
Oracle(OCI) 17.1 7.61 1.54 4.12
Oracle(ORA) 13.1 1.76 4.37
ODBC 8.31 4.32
PostgreSQL 9.73 15.2 3.74 1.50 4.02
SyBASE 15.1 3.04 1.34 4.05
Informix 3.88

Metabase의 경우에는 각 데이터베이스 관련 파일 외에도 공통으로 사용되는 파일이 반드시 포함되어야 하는데 이 파일크기가 12.8KB입니다. 추가로 필요한 파일이지요. Mini DB 0.1.1의 경우에는 별로 사용되지 않는 기능은 모두 삭제하였기 때문에 다른 것에 비해 파일 크기가 작습니다만 대부분의 홈페이지에서 다루는 게시판 또는 방명록에서 다루는 정도에는 전혀 지장이 없을 것으로 생각됩니다. 내장된 메소드에 대하여는 다음 장에서 살펴보겠습니다.

지원되는 데이터베이스 및 파일 구성

위에 있는 표에서 보듯이 Mini DB가 지원하는 데이터베이스는 7개로 MSQL, MSSQL, MySQL, Oracle(OCI), Oracle(ORA), PostgreSQL, SyBASE, Informix입니다.

각 데이터베이스에 대한 클래스가 정의되어 있는 파일은 아래와 같습니다.

  • MSQL – class.msql.php
  • MSSQL – class.mssql.php
  • MySQL – class.mysql.php
  • Oracle(OCI) – class.oci8.php
  • Oracle(ORA) – class.oracle.php
  • PostgreSQL – class.pgsql.php
  • Sybase – class.sybase.php
  • Informix – class.ifx.php

양해 사항

미니디비 0.1.1 테스트

유닛테이블을 공개하면서도 양해를 구한 내용입니다만, 현재 제 서버에는 MySQL(3.22.32)과 오라클(8.0.5) 만 설치되어 있어서 다른 데이터베이스에 대하여는 테스트를 할 수가 없습니다. 그래서 다른 DB Layer와 매뉴얼만 보고 작성하다보니 소스코드 내에 버그가 숨어있을 것 같은데 알 수가 없습니다. 혹시 여러분이 사용하시다가 이상한 것이 있으면 알려주세요. 사실 Mini DB를 제작하기 전에는 MySQL 밖에 설치되어 있지 않았었는데 나름대로 DB Layer를 만들려다 보니 다른 것은 몰라도 오라클만큼은 테스트하지 않을 수 없었습니다. 그래서 이번 기회에 제 서버에 오라클을 설치해 봤습니다. 앞으로 시간이 허락되고 서버가 충돌만 일으키지 않는다면 PostgreSQL과 SyBASE 까지는 설치하여 Mini DB를 테스트해 볼 생각입니다.

미니디비 0.1.1 중 PostgreSQL 테스트 추가 실시(2000.9.29)

PostgreSQL 7.0.2를 제 서버에 설치하여 Mini DB를 테스트를 하여보니 약간의 에러가 있어 class.pgsql.php 클래스 파일을 수정하였습니다. pg_pconnect()의 인자를 PostgreSQL 버전6.3 이후부터 지원하기 시작하는 domain 이름을 사용할 수 있도록 내부 메소드를 수정하였습니다. 따라서 생성자 인자로 전달하여야 하는 데이터베이스 정보로는 호스트명과 디비명만을 사용합니다. domain이름을 사용하기 위해서는 데몬 로드시 반드시 -i 옵션을 주고 로드 하여야 합니다.(예: postmaster -i &)

미니디비 0.2.2p1 테스트(2001.5.31)

미니디비 0.2.2p1의 테스트는 오라클(8.0.5), MySQL(3.22.32), PostgreSQL(7.0.2)에서만 실시하였습니다. 제 서버 사정상 이 외의 데이터베이스에 대하여는 문서상으로만 보고 만들어서 테스트는 못하였네요. 혹시 이 부분에 대하여 테스트한 결과가 있으면 알려주세요.

답글 남기기