做爲一個作底層及後臺研發的,最近對NoSQL卻產生了濃厚的興趣,加入了一個DBA羣,聽說北京排的上號的DBA都在裏面,然而裏面基本都是Oracle系的,MySQL和MongoDB系的少之又少。學習靠不得別人,要和Oracle大佬們撕比尚需時日。php
廢話少說,在抱怨關係型數據庫的死板及開發效率,力推NoSQL以後,NoSQL的表明之一MongoDB也受過一些質疑,好比《Don't use mongoDB》一文。然而NoSQL的應用卻仍是沒有停下,好比滴滴就是NoSQL。在去IOE的大趨勢下,阿里選的是MySQL,大部分公司基本也選的是MySQL(MySQL比MongoDB早)。大公司確定不太願意,或者主動向新的數據庫遷移,由於代價太大,並且也因爲公司及數據規模也必然趨於保守選擇(最近Oracle的盛會上看到剛發佈的sharding特性,然而通常NoSQL早就支持了)。mongodb
爲何要向MongoDB遷移,以及遷移會有帶來什麼問題恐怕只有親身作過的大牛才能回答。通常的說法是由於NoSQL更適合於集羣,大多數NoSQL的研發動機都是爲了適應集羣,NoSQL不像關係型數據庫那樣死板,比較輕量級。數據庫
建立數據庫並插入,MongDB是文檔型NoSQL數據庫,集合至關於關係型數據庫中的表,文檔至關於一行數據。語法與JavaScript相似。下面是一些基本的增刪改查操做。學習
建立數據庫ui >Use myfirstdbspa 建立集合命令行 >db.createCollections(「Company」);ip 插入一條數據ci >db.Company.insert({uid:1, username: 「Tom」, age: 25});開發 >WriteResult({ "nInserted" : 1 }) |
查詢記錄:
查詢整個集合中的記錄 >db.Company.find(); 查詢指定字段的記錄 >db.Company.find({username: 「Jerry」}); |
修改記錄:
>db.Company.update({username: 「Truman」}, {$set: {age : 50}}); |
刪除記錄:
>db.Company.remove({uid: 1}); |
在Windows下嘗試搭建一個學習實驗環境碰到的問題。
1.服務沒法啓動的問題
採用源碼包可能存在問題,因此直接使用安裝程序,即.msi文件。學習MongoDB解決的第一個問題就是如何啓動MongoDB服務並進入數據庫。MongoDB安裝完成後啓動:
$net start mongdb |
這時可能會報沒法啓動服務的錯誤。Windows下能夠先打開任務管理器,查看服務中是否已經有了MongoDB,若是有則能夠先卸載MongoDB,以後從新安裝,再net start mongodb,若輸出MongoDB服務已經啓動,則執行mongo.exe便可進入數據庫命令行。
2.服務沒法啓動
從控制面板中沒法啓動服務,報錯,網上說的都不靠譜。
015-10-29T20:14:48.328+0800 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:10061 因爲目標機器積極拒絕,沒法鏈接。 |
卸載mongodb服務並重裝後問題解決,然而這顯然不行,必須以熱方式解決。後來發現mongodb安裝數據目錄下會有一個.lock文件,刪除文件之後重啓服務就能夠啓動了,但爲何會這樣還須要研究。Net start mongodb重啓服務。
以上純屬我的淺見,初學歡迎探討指正~