본문 바로가기

지식/VC++

MongoDB C API

MongoDB 


http://www.mongodb.org


윈도우용 실행파일을 받은 후에 C Driver 도 다운받는다.(MongoDB는 C++라이브러리를 추천하지만 C++라이브러리는  부스트 라이브러리가 필요하다. 열라 다운받고 열라 압축 풀어야함;;;)


C Driver를 컴파일 하기 위해서는 Python + Scons 이 필요하다.

아쉽게도 MongoDB C Driver는 MinGW + Cywin 환경에서는 컴파일이 되지않는다.


먼저 Python을 설치해야한다. 단 3.x 버전은 Scons 에서 지원하지 않으니 2.7 버전을 설치한다.

파이썬과 Scons 설치가 완료됐다면 MongoDB C Driver 디렉토리에서


scons --m32 


위와 같이 실행한다. 단 Visual Studio 2008 이상만을 지원한다. 2005는 컴파일이 되지 않는다(제길!!)


컴파일이 성공하였다면 bson과 mongoc 라이브러리가 무사히(?) 생성되어 있을 것이다.


윈도우에서 MongoDB 는 서비스로  동작이 가능하다. 아래 명령줄이 윈도우에서의 서비스 등록 명령 예제이다.


mongoc --dbpath C:\Data\db --logpath C:\data\log\log.txt --directoryperdb --rest --install



--logpath : 이 옵션을 주려면 해당 디렉토리가 존재해야하며 마지막 log.txt 파일역시 미리 생성해야 무사히 동작된다.

--directoryperdb : db 마다 다른 디렉토리를 가지는 옵션

--rest : 웹 관리 페이지에서 기타 여러 정보를 볼 수 있게 해준다.

--install : 서비스로 등록하는 옵션


* 주의 : 경로 중 한글이 있을 경우 등록은 되지만 서비스 실행이 되지 않는다. 


서비스가 실행되지 않는다면 아래 명령어로 서비스에서 삭제한다.


sc delete "MongoDB"


자 이제 코딩 준비가 끝났다. 몽고 서비스에 접속해보자



MongoDB C Tutorial 페이지에는 과감하게 mongo_init_socket() 함수가 생략되어있다.

C 드라이버를 쓸려면 조금더 스스로 공부하라는 배려인듯...


접속에 성공했다면 MONGO_OK가 리턴되었을 것이다. 접속에 실패했다면 conn 구조체에 에러코드와 에러 스트링이 들어있으니 이를 참조하자.


데이터 입출력부분은 나머지 C Tutorial을 참조하면 무리가 없을 것이다.

단 주의할 점은 모든 입력은 UTF-8 이어야만 한다. 이점은 한글 입출력에 문제가 발생하기는 하나

코드상에서 변환하면 큰 문제는 없다. 그렇치만 도스창에서 mongo shell을 이용할 때에는 다른 방법을 이용해야한다.


먼저 도스창에서 chcp 명령을 쳐보자. 기본적으로 CP949 가 나온다.

다시 chcp 65001 을 입력. 


화면 모양이 바뀔 것이다 도스창 속성을 클릭 -> 글꼴 레스터글꼴을 레스터 상단에 위치한 글꼴로 선택.

이제 몸고쉘에 접속하면 한글 입출력이 가능할 것이다.