標籤:
最近為瞭解決IM訊息記錄的高速度寫入、多文件類型支援的需求,決定使用MongoDB來解決。
考慮到MongoDB對VS版本要求較高,與我現有的VS版本不相容,在leveldb、ssdb、redis、hbase等NoSQL中轉了一圈,最後還是選擇了MongoDB,應了那句話:沒有最好的,只有最合適的。
MongoDB由於使用了C++的新特性,官方建議使用VS2013來編譯,最低要求VS2010。
MongoDB C++驅動編譯過程較為複雜,官方也沒有提供編譯好的驅動包,網上的資料編譯版本都比較老了,特此整理最新的MongoDB C++驅動編譯方法。
使用VS2010編譯MongoDB C++驅動詳解:
1、下載python 2.7.9安裝程式(不要使用3.X的版本), 使用32位,因為scons只有32位安裝包可用;
:https://www.python.org/downloads/ 選擇:Windows x86 MSI installer
2、下載scons 2.3.4,MongoDB的驅動是用scons構建的,安裝後會自動安裝到python的指令碼目錄裡;
:http://www.scons.org/
3、其他教程裡有寫Python27\Scripts寫入PATH這一步,python 2.7.9應該會自動寫入,可省略;
4、MongoDB C++驅動依賴Boost庫(1.49及以上版本),可以直接下載編譯好的Boost檔案直接安裝,省去了自己編譯,節約半天時間;
:http://sourceforge.net/projects/boost/files/boost-binaries/ 選擇:boost_1_57_0-msvc-10.0-32
注意32位和64位區別,需編譯64位驅動的下載64位的Boost庫。
5、下載MongoDB C++驅動原始碼,選擇;
:https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile
推薦下載26compat穩定版分支,解壓到本地。
6、命令列下cd進驅動目錄,使用以下命令編譯;
D:\mongo-cxx-driver-26compat>scons --dbg=on --32 --dynamic-windows --sharedclient --cpppath=D:\boost_1_57_0 --libpath=D:\boost_1_57_0\lib32-msvc-10.0 --use-system-boost
這裡編譯的是32位動態庫,編譯成功後會生出mongoclient.dll。
cpppath指定boost標頭檔目錄;
libpath指定boost庫目錄;
其他命令可以參考官網:https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile
編譯MongoDB C++驅動遇到的問題:
1、官網推薦編譯時間使用install選項,按說明的意思是編譯後將驅動和標頭檔安裝到指定目錄,不過使用時會報boost庫找不到的錯誤;
2、使用編譯好的驅動時提示error_codes.h和error_codes.cpp檔案找不到,這兩個檔案在MongoDB C++驅動源碼下,拷貝過去即可。
以上是編譯MongoDB C++驅動快速的方法,大家在編譯時間可以參照。
今天聽說MongoDB 3.0即將推出,寫入速度在原有基礎上提升6-7倍,效能很強悍~
記錄,為更好的自己!
使用VS2010編譯MongoDB C++驅動詳解