본문 바로가기

프로그래밍

[DB] 버클리 DB 설치 및 테스트 방법

버클리 XML DB 설치와 간단한 테스트

[epigraph]

"삽질을 했으면 꼭 문서를 남겨야 한다." - 내말

개요

잘 몰랐는데, 버클리 DB는 아주 기본의 시스템 구성 요소이더군요. 패키지 이름도 BerkeleyDB도 아니고 그냥 db로 통하는 듯 합니다.(libdb..하는 식으로) 센드메일 등등 오래된 프로그램들도 대개 버클리 디비에 의존하는 모양입니다.

그리고 처음에 헷갈렸던 점은, MySQL 같은 경우에는 데몬으로 떠 있으면서 데이터베이스를 중앙 집중적으로 다루는데, 버클리 디비 같은 경우는 데몬으로 떠서 돌아가는 형태는 애초부터 아닌것 같고.. C++, Java, PHP 등으로 작성된 어플리케이션이 독자적으로 데이터베이스를 생성하고 다루게 해주는 일종의 라이브러리로서 사용하게 되는 것 같습니다.

민식님 말씀에 의하면 PHP는 최근에 지원하게 된 모양인데 아무래도 우리는 웹 어플리케이션을 구상하고 있는 중이니까, PHP에서 쓸 수 있다는 점은 무척 반갑네요.

필요한 소스 받기

우선 버클리 DB가 필요합니다. 버클리 XML DB가 이것에 의존합니다. 버클리 DB는 거의 모든 배포본에 기본 포함되어 있겠지만 어차피 XML DB를 컴파일해서 깔아야하므로 이것도 같이 컴파일로 넣어 주는 편이 나을 것 같습니다. /usr/local 에 따로 독립된 디렉토리를 잡아 깔리기 때문에 기존의 배포본 패키지에 들어있는 라이브러리들을 덮어쓰거나 하지 않을까 하는 걱정은 하지 않아도 됩니다.

http://www.sleepycat.com/update/snapshot/db-4.2.52.tar.gz

다음 C++ 버전의 Xerces가 필요한데, 이것은 XML 파서로서.. Pathan이란 놈이 이것에 의존합니다.

http://www.apache.org/dist/xml/xerces-c/xerces-c-current.tar.gz

Pathan(파탄?-_-)이란 것은 XPath를 구현해 준다는군요! 버클리 XML DB가 이것에 의존해서 XPath 문법으로 데이터베이스를 다루게 되는 모양입니다.

http://software.decisionsoft.com/software/pathan-1.2r2/libpathan-1.2-2-src.tar.gz

마지막으로, 주인공 버클리 XML DB가 필요합니다.

http://www.sleepycat.com/update/snapshot/dbxml-1.2.1.tar.gz

컴파일과 설치

http://www.sleepycat.com/xmldocs/ref_xml/xml_unix/intro.html 이곳에 나와있는 설치를 따라하면 문제가 없습니다. 그냥 간단히 적겠습니다.

버클리 DB

cd db-4.2.52/build_unix
../dist/configure --enable-cxx
make
make install

--enable-cxx은 C++ 지원을 넣겠다는 뜻입니다.(이 옵션은 꼭 들어가야 한다고 합니다) 자바에서 사용할 계획이라면 configure할 때 --enable-jave 옵션을 함께 덧붙여 줍니다.(이것은 db.jar 파일이 생성되도록 합니다) make install하면 /usr/local/BerkeleyDB.4.2 에 설치됩니다.

Xerces

cd xerces-c-src2_4_0
export XERCESCROOT=`pwd`
cd src/xercesc
./runConfigure -plinux -d -cgcc -xg++ -minmem -nsocket -tnative -rnone
make
make install

XERCESCROOT를 설정하는 부분이 중요합니다.(export XERCESCROOT=`pwd`로 하면 현재 디렉토리로 설정됨) 이 값은 Pathan을 컴파일할때 필요합니다. configure 옵션의 정확한 뜻은 잘 모르겠지만 그냥 시키는 대로 하면 되겠지요.. make install 하면 /usr/local/lib 에 설치됩니다.

Pathan

cd libpathan-1.2
./runConfigure
make
make install

위에서 설정한 XERCESCROOT 환경 변수가 유지된 상태로, Pathan을 컴파일합니다. make install 하면 /usr/local/lib에 설치됩니다.

버클리 XML DB

cd dbxml-1.2/build_unix
../dist/configure
make
make install

위의 각 구성 요소들이 설치되는 위치를 바꾸지 않았다면, XML DB를 configure 할때 특별한 옵션을 줄 필요는 없습니다. 다만 자바에서 사용할 계획이라면 configure할 때 --enable-java 옵션을 덧붙여 주면 됩니다. 이것은 dbxml.jar를 생성하도록 합니다. make install 하면 /usr/local/BerkeleyDBXML.1.2 에 설치됩니다.

PHP 모듈

cd dbxml-1.2.1/src/php4/
./configure
make
make install

시스템에 PHP4가 설치되어 있다면 configure할때 php 모듈을 설치할 위치를 알아내서 make install로 설치가 됩니다. 데비안의 경우에 /usr/lib/php4/2002xxxx/dbxml_php4.so 입니다.

php 연동 테스트

명령행에서 테스트

dbxml-1.2.1/src/php4/에는 dbxml_example.php라는 이름의 예제가 포함되어 있습니다. 이것을 보면 php에서 어떻게 DB XML을 사용하는지에 대한 감을 대략 잡을 수 있습니다. 실행 결과는 다음과 같습니다.

$ php4 dbxml_example.php

 Document content is:
         <?xml version='1.0' ?>
         <root/>
 Created document in the container, id is 2

 Modified document, from container, modified content is:
         <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
         <root><newelem/></root>

<root />만으로 이루어진 문서를 test.dbxml이란 이름의 데이터베이스 파일로 저장합니다. 다시 문서의 루트 엘리먼트 아래에 엘리먼트 하나를 추가하고, 다시 저장합니다.

아파치와의 연동

아파치 웹서버와 PHP가 연동되어 있다면 웹페이지에서 같은 예제를 실행시킬 수 있습니다. 앞서 설명한 대로 XML DB의 PHP 모듈을 설치한 후, 아파치를 재시작해야 합니다. 예제파일을 웹으로 접근가능한 적당한 디렉토리에 넣어두고 브라우저로 해당 주소를 읽어들이면 같은 결과를 볼 수 있습니다.

예제를 조금 수정해서 폼으로 입력된 닥북을 가지고 같은 작업을 하는 예를 만들어 보았습니다. http://147.46.170.185/~yongjoo/xml/index.html 소스는 http://147.46.170.185/~yongjoo/xml/create.php.txt 입니다.

맺는말

PHP에서의 사용법에 대해서만 따로 설명한 문서는 없는것 같고, C++이나 Java의 경우를 설명한 문서를 참고하면 되는 것 같습니다.

출처 : http://docbook.or.kr/wiki/index.php/Berkeley%20DB%20XML