標籤:
雖然不是技術大牛,但是組長推薦看一下,而且我們正在做的項目,類似於資源中心,牽扯到各種怪異資料類型不同分庫,所以至今都是採用這種方式:
①MainData表存所有值,變化最大的分庫資料用json儲存
②json所有的欄位都對應著一個index表,用於索引
③一個metadata表格儲存體所有可能的json欄位
④如果欄位是選擇類型的值,則由一個新表儲存
從這個架構看來,的確不錯,但是問題就在於json和其他表的配合上,比如插入、修改、更新,會比較瘋狂的……
既然資料的人類可識別還原序列化方式是兩種,也就是xml和json,而且mongodb的方式也類似於這個,我們就可以從此資料庫下手了。
首先提到它的windows版本和安裝相關的,既然說到資料庫,就不得不提及mongo的多平台版本,真的和微軟是反調,不過隨之而來的問題也來了,那就是微軟只關注自己的平台,所以自己做得東西肯定很好用。那mongo的操作介面是什麼呢?很可惜官方提供的shell只有命令列,至今還沒有正式推出一個十分好用的UI,所以我們只能藉助於第三方。
先從官方網站下載mongo:http://mongodb.org/
我此時用的版本是3.0。找個地方安裝,這個過程很快,當然資料庫這東西還是推薦64位系統,可能在win7下需要更新一個補丁,後期版本可能會有變動。
之後你會發現安裝主目錄會多出很多命令列工具,這都是代碼編寫人員的最愛啊……雖然我對自己的打字並沒有信心
最重要的就是mongod.exe服務和mongo.exe操作端,當然其他的比如監視工具匯入匯出工具也是作為資料庫管理員必備的,所以這個目錄裡的東西想用好,你得學習一些命令列的知識,比如cmd,比如系統內容變數,讓你啟動他們更快速。
那,如何啟動呢?mongodb的主要的啟動方式是通過讀取config設定檔,藉助mongod宿主啟動一個服務端,具體的config配置可以去手冊查看,很詳細,也很複雜,下面我發出一個比較簡單的配置,這是一個YAML配置,是mongo支援的第二種方式,也是新的方式:
systemLog: destination: file###日誌儲存位置 path: C:\data\mongodb_simple\log/mongod.log logAppend: truestorage:##journal配置 journal: enabled: true##資料檔案儲存位置 dbPath: C:\data\mongodb_simple\data##是否一個庫一個檔案夾 directoryPerDB: true##資料引擎 engine: wiredTiger##WT引擎配置 wiredTiger: engineConfig:##WT最大使用cache(根據伺服器實際情況調節) cacheSizeGB: 4##是否將索引也按資料庫名單獨儲存 directoryForIndexes: true##表壓縮配置 collectionConfig: blockCompressor: zlib##索引配置 indexConfig: prefixCompression: true##連接埠配置net: port: 27017
接下來就是啟動了,這裡我用的絕對路徑,看起來也比較直觀,就是給程式一個參數-f:
"C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" -f "C:\data\mongodb_simple\conf\simple1.conf"
ok,如果資料庫無法啟動,你可以先啟動cmd,在命令列裡執行一次這段,看看返回的提示是什麼,這是最簡單直觀的方式了。下面我們嘗試一下如何用簡單的shell提供者操作資料庫。簡單的啟動一下mongo.exe,串連至資料庫:
C:\Users\zhouzhi>"C:\Program Files\MongoDB\Server\3.0\bin\mongo.exe"2015-09-30T14:23:39.621+0800 I CONTROL Hotfix KB2731284 or later update is installed, no need to zero-out data filesMongoDB shell version: 3.0.1connecting to: test>
這裡我直接執行了mongo.exe,沒有附加任何參數,直連localhost:27017的預設位置,看到它在串連成功後也自動跳轉到test庫下,那我們看一下這個資料庫存在幾個庫:
> show dbslocal 0.000GBtest 0.000GB>
mongo.exe經常被稱為shell,它以JavaScript為主,附加的一些自訂為輔,構成的一套命令指令碼,show dbs 這個內建命令,就顯示出了含有的庫,當然如果你從未操作過的話是不會存在庫的。
接下來我進入一個庫,並插入一條記錄:
connecting to: test> show dbslocal 0.000GBtest 0.000GB> use textswitched to db text> db.MainData.insert({name:‘3tai‘,age:25,url:‘http://www.cnblogs.com/3Tai/‘,time:new Date()})WriteResult({ "nInserted" : 1 })>
我們在插入時,使用的是JavaScript的基本寫法,這裡要注意的是字串、數字、時間,有這幾個不同的類型,執行後提示有一處改動,下面我們查看一下剛才插入的文檔,這裡使用最簡單直接的全部檢索:
> db.MainData.find().pretty(){ "_id" : ObjectId("560b83be22f39ad2d6004365"), "name" : "3tai", "age" : 25, "url" : "http://www.cnblogs.com/3Tai/", "time" : ISODate("2015-09-30T06:39:58.788Z")}>
使用find函數,可以擷取結果,後面的pretty函數,可以格式化結果,是屬於最佳化輸出效果的。
至此,我們已經成功運行了mongodb,下一次我們和C#接軌
mongodb在我這個C#下手眼中-01初識