寫在最前
我認(rèn)為,要保存/查詢一系列沒有固定結(jié)構(gòu)的數(shù)據(jù),與其“行專列”這種研究曲線救國的解決方案,不如直接使用nosql數(shù)據(jù)庫,從本質(zhì)上解決問題,nosql本來就是為了解決這個問題而存在的。
nosql又分為4類--鍵值,列存儲,文檔型,圖形(Graph)
其中我挑選了 最適合我們的 文檔型
文檔型數(shù)據(jù)庫可 以看作是鍵值數(shù)據(jù)庫的升級版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫比鍵值數(shù)據(jù)庫的查詢效率更高
而為什么不用列存儲數(shù)據(jù)庫?
因為它們通常是用來應(yīng)對分布式存儲的海量數(shù)據(jù),與我們現(xiàn)在業(yè)務(wù)不匹配,而且文檔型數(shù)據(jù)庫也同樣可以應(yīng)用在分布式存儲
MongoDB
在所有的文檔數(shù)據(jù)庫中,我認(rèn)為MongoDB最適合,其2009年面市,是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強(qiáng)大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引
正好解決了我們現(xiàn)在需要解決的問題
1,數(shù)據(jù)結(jié)構(gòu)松散不確定
2,分布式,可擴(kuò)展
3,查詢條件奇葩
還有其使用簡單,文檔齊全,適合我們初次接觸nosql的程序員--“是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的”
風(fēng)險回避
本次項目我建議僅對 order表和operation表 使用nosql 存儲,其他的庫表依舊使用aibol配合linq to sql + MSSQL
這樣可以使我們依舊可以使用之前的模塊加快開發(fā)速度,也滿足了新功能的開發(fā)需求,日后也有逐步升級的空間
MongoDB使用
1.下載
https://www.mongodb.com/download-center?jmp=nav#enterprise
或者
baidu盤
2.安裝
全部下一步
3.配置
配置環(huán)境變量
默認(rèn)安裝路徑在 C:\Program Files\MongoDB
將bin目錄添加到系統(tǒng)的path變量,老系統(tǒng)注意打分號
C:\Program Files\MongoDB\Server\3.4\bin
然后創(chuàng)建一個 data log 文件夾 如圖

使用mongod命令 啟動數(shù)據(jù)庫
mongod --dbpath data --logpath log\mongod.log --logappend

注意所在路徑
然后配置服務(wù)讓以后可以方便開關(guān)數(shù)據(jù)庫
mongod --dbpath "Z:\MongoDb\data" --logpath "Z:\MongoDb\log\mongod.log" --logappend --install --serviceName "MongoDB"
注意修改自己的路徑,并關(guān)掉其他控制臺不要打開日志文件
然后就可以使用
net start MongoDB
來啟動數(shù)據(jù)庫了
net stop MongoDB
可以關(guān)閉數(shù)據(jù)庫
另外補(bǔ)充一個 mongo shell 就是bin目錄下的 mongo.exe,用它可以直接操作mongodb,建議發(fā)送快捷方式到桌面
使用MongoDB

通過這張圖可以大致看出mongodb和sql的區(qū)別
mongodb提供了很多操作符 來打到類似關(guān)系型數(shù)據(jù)庫的相關(guān)功能