[우분투 12.04] MongoDB 설치 Develop Tip

최근에 NoSQL이 클라우딩이다 빅데이타다 해서 화두인 것이 사실입니다.
구글의 빅테이블을 시작하여 하둡, 카산드라 등을 포함하여 mongoDB 라는 것들도 있습니다.
noSQL이 단순히 SQL을 지원하는 RDB가 아니다라고 생각했는데,
어디는 Not Only SQL 을 의미한다고도 하는군요.
암튼 이번에 필요에 따라 mongoDB를 우분투 12.04 LTS 서버 64비트 버전 
(32비트 OS에는 최대 2G 데이터까지 밖에 저장할 수 없답니다)에 설치를
해보았습니다.

aptitude 패키지로 설치해도 되지만 현재 2.2 최신 버전이 지원안되어 
소스에서 빌드를 해 보았습니다.

Mongo는 Write시에, Memory에 먼저 Write후에, 1분 단위로 Flushing하는 Write Back 방식을 쓴다. 즉 메모리에만 쓰면 되니까는 Write가 무지 빠르다. 반대로 Read시에는 파일의 Index를 메모리에 로딩해놓고 찾는다(memory mapped file). 이러니 성능이 좋을 수 밖에, 단 Flushing전에 Fail이 되면 데이타 유실에 의해서 Consistency 가 깨지는 문제가 발생하고, Configuration 구조상 메모리 사용량이 많으며, 확장성에 제약이 있다.
특히 Write 구조에서는 비동기 식으로 Write를 하기 때문에 Disk 성능에 덜 Sensitive하다. 즉 이 말은 DiskIO성능이 상대적으로 낮은 클라우드에서 더 잘돌아간다는 이야기.
이에 비해서 Cassandra(같은 Dynamo 계열인 Riak도 마찬가지) 는 Write Back이나 Memory Mapped file을 사용하지 않기 때문에 MongoDB에 비해서 성능이 낮을 수 밖에 없다. 더군다나, Write나 Read시 1개 이상의 Node에서 값을 읽거나(R Value) 쓰기 때문에(W Value) Consistency가 mongoDB에 비해서 나으며, 당연히 확장성도 더 높다.
와 같이 되어 있네요~
각설하고, 우분투에 설치하느라 오랫만에 약간의 시간 소요 (서너시간 조금 더 걸린 것 같았습니다)
몽고DB를 설치하는데 시간이 걸린 것이 아니라,
C++ 인터페이스 드라이버를 설치하는데 시간이 걸렸습니다.
다음은 우분투12.04LTS 서버 64비트에서 몽고DB 및, C++ 드라이버를 설치하는 
것을 쉘스크립트로 만들어 놓은 것입니다.

#!/bin/bash
# This System must be Ubuntu 64bit (12.04 LTS Server version)
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.1.tgz
tar xvfz mongodb-linux-x86_64-2.2.1.tgz
pushd mongodb-linux-x86_64-2.2.1/
    sudo mkdir -p /opt/mongo/bin
    sudo cp -f bin/- /opt/mongo/bin
popd
rm -rf mongodb-linux-x86_64-2.2.1/
rm mongodb-linux-x86_64-2.2.1.tgz
# for c++ driver
wget http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-latest.tgz
tar xvfz mongodb-linux-x86_64-latest.tgz
pushd mongo-cxx-driver-nightly/
    sudo apt-get install scons libboost-thread-dev libboost-filesystem-dev libboost-program-options-dev
    sudo scons --prefix=/opt/mongo  install
popd
sudo rm -rf mongo-cxx-driver-nightly/
rm mongodb-linux-x86_64-latest.tgz

참고로, 드라이버가 make대신 scons라는 ant 식의 python 설치 모듈을 이용하는 군요...

(세상은 넓고 빌드시스템도 많고...)


어느 분께는 도움이 되셨기를 바라며...

덧글

댓글 입력 영역

구글애드텍스트