MongoDB
델리마운트 위키
document-oriented database 문서 기반의 데이터베이스라고 하는데, 개발자 입장에서는 object-oriented 라고 이해하면 편할 듯 합니다. 자세한 것은 차후 기록하도록 하겠습니다.
목차 |
맥 OS X
따로 설치 이미지를 제공하지 않기 때문에, MacPorts를 통해 설치하는 편이 용이할 듯 합니다. 현재 홈페이지에서 다운로드로 배포하는 파일은 설치 파일이 아닌 빌드된 바이너리 입니다.
MacPorts를 통한 설치
sudo port install mongodb
생각보다 설치에 상당한 시간을 요했습니다. MacPorts가 소스 기반의 배포 방식이기 때문에 의존성이 걸리는 모든 패키지를 빌드하느라 엄청난 시간이 걸렸습니다. 의존성이 걸리는 패키지도 상당한 양이고, MongoDB가 C++로 개발된 점도 한몫 하는듯... boost 라이브러리까지 사용합니다. 식사시간 등 짜투리 시간을 활용할 필요가 있겠습니다. 1.83Ghz 듀얼코어 CPU로 3시간 가량 걸렸습니다. 너무 오래 걸리니 바이너리를 다운로드해 설치하는 편이 나을 수도 있겠습니다.
설치가 완료되면 기본적인 작업을 완료해주고 간단하게 테스트 해봅니다. MongoDB는 기본적으로 /data/db 경로에 데이터를 저장합니다. 다음과 같이 데이터가 저장될 공간을 만들어줍니다.
mkdir -p /data/db
이제 별도의 터미널 2개를 실행하고, 하나는 서버를, 하나는 쉘을 실행해서 사용해 볼 것입니다.
- 터미널1
mongod
- 터미널2
mongo
> db.peoples.save( { name: 'John doe', age: 99 } )
> db.peoples.find()
>
동적인 스키마를 사용하기 때문에, 첫 단추를 꿰는 것이 상당히 간단한 것을 볼 수 있습니다. 현재로선 상당히 유연한 데이터베이스 시스템이라 생각됩니다. 동적인 스키마, 친숙한 JSON 문법 등 접근성이 상당히 용이합니다. 성능이나 호환성 등을 검토해봐야 하겠지만 유연함에 있어 레일스와 상당히 잘 어울리는 데이터베이스라 생각됩니다. 구조적으로 볼 때 마이그레이션조차 필요 없지 않을까 생각되지만, 자세한 것은 더 알아봐야 하는 상황입니다. 소개 문서에서는 transaction이 없음을 강조하고 있는데, 이것이 어떻게 작용할 지 자세히 알아볼 필요도 있어 보입니다.
우분투
기본적으로 패키지를 지원하지만, 우분투 정식으로 설치하면 구 버전이 설치됩니다. (2011년 3월 24일 현재, 우분투 10.04 기준으로 1.2.2가 설치됨)
위의 MongoDB 문서를 참고하면, MongoDB가 제공하는 저장소를 apt 소스 목록에 추가하여 최신 버전을 사용할 수 있습니다.
우선 GPG key 등록이 필요하다고 합니다.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
소스 목록에 MongoDB가 제공하는 저장소를 추가해줍니다. /etc/apt/sources.list 파일을 vi 등으로 열고, 마지막에 다음의 내용을 추가해주고 저장합니다.
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
추가해 준 내용이 반영되도록 해줍니다.
sudo aptitude update
이제 준비를 마쳤으니 새 버전의 MongoDB를 설치합니다. (2011년 3월 24일 현재, 우분투 10.04 기준으로 1.8.0가 설치됨)
sudo apt-get update sudo apt-get install mongodb-10gen
설치를 완료한 후에, MongoDB가 구동중인지 확인해봅니다.
ps aux | grep mongod
Mongoid
