該項目從2011年10月開始開發,知道如今已經有整整5年了。MongoDB也從一開始的大紅大紫到如今趨於平淡。
MongoCola這個工具在一開始定位的時候只是一個Windows版本的工具,期間也想改成WebPage版本,可是隻是開了一個頭,也沒有繼續下去。
如今想一想,可能這個決定是正確的,WebPage版本是爲了跨平臺纔去作的,可是,當時的環境,Net Core並無發佈,即便用MVC5搭建平臺,也依然沒法作到跨平臺。
如今,隨着Net Core的發佈,WebPage的事情也從新擺上日程了。git
選在這個時候發佈軟件,一是由於Connect16大會以後,微軟也發佈了不少使人振奮的消息,因此我也來錦上添花一下。二來,MongoDB3.4這個重大的版本更新也是箭在弦上了,應該年末就會發布正式版本了。三來,也是對於今年的一個總結。
雖然這只是一個Winform的項目,可是在開發中,幾乎將整個MongoDB的官方文檔都翻了一遍,不少知識也從新學習了一下,收穫仍是很豐富的。
因爲開發週期很長,不少代碼在此次開發中,都進行了老朽化處理,廢棄和修改了不少東西,因此測試也並不徹底,因此這個工具如今只是用於學習MongoDB或者是開發環境下使用。程序員
對於開源軟件,其實不少人只是想看看源代碼,或者收藏源代碼,可以從源代碼裏面找到本身想要的功能的人很少,可以加入開發的更少了。這個項目只有2-3個同志貢獻過有用代碼,很是感謝。
因此此次開源,我也不抱什麼但願,若是有誰可以從個人代碼中學到些什麼,我就滿足了。github
MongoCola工具 : http://www.codesnippet.info/Article/Index?ArticleId=00000062mongodb
MongoCola是一款幫助你在圖形界面下查看,操做MongoDB的工具類軟件。
本工具的目標是儘可能用圖形界面來代替命令腳本幫您完成一些平常的MongoDB管理工做。數據庫
本軟件是徹底免費的軟件,您能夠無條件的使用本軟件的任何功能。
下載地址: https://github.com/magicdict/MongoCola/releases
用戶手冊: http://www.codesnippet.info/Article/Index?ArticleId=00000062
GitHub 項目地址 https://github.com/magicdict/MongoCola/
意見和建議:https://github.com/magicdict/MongoCola/issues
版本號:Ver 2.1.0
文檔最後更新時間:2016-11-24安全
在開發的過程當中,固然會有一些問題產生,若是有問題,能夠和MongoDB工程師經過JIRA進行溝通。
若是你的資料夠詳細,可以很快復原出問題現場,他們的feedback也是很快的。網絡
真正有用的開源信息,也就是上面這些了。不過,按照博客園小編的想法,文章或多或少要寫點什麼東西,否則會看成廣告處理的。因此仍是寫點什麼吧。併發
前幾天,有個朋友用MongoDB作GeoNear的查詢操做。在MongoDB中,對於地理座標的內置處理是一個特點。
你能夠在數據的某個字段裏面保存座標,而後可使用GeoNear來尋找離開指定座標,指定距離內的全部記錄。
可是,這裏有一個坑,在MongoDB裏面有一種座標格式是GeoJson,一種格式是LegacyPoint。前者是如今官方推薦的座標形式,後者就如它的名字同樣,是舊的形式。
這兩種座標,前者是一個BsonDocument,後一種是BsonArray:
BsonDocument:{ type:"point",coordinate:"40.1234,120.333"}
BsonArray:[40.1234,120.3333]
可是,在GeoNear這個命令中,前者的距離單位是Meter(米),後者是Redius(弧度)。1個弧度 = 6314千米,因此很容易搞錯的。
若是你使用了LegacyPoint做爲指定點的座標,而後想指定1000米以內的全部座標,恭喜你,你實際上會獲得全部的點(1000弧度,6314000千米)
固然,即便你輸入的指定座標是GeoJson,可是你的數據庫裏存放的點是LegacyPoint,則一樣會是全部的點。
因此,若是您的項目須要用到地理座標,請必定要用GeoJson來保存數據。負載均衡
這些知識也是博客園上的一個同志問個人,我也經過查閱官方文檔才獲得這樣的結論。因此說,官方文檔,閱讀文檔的能力,也是程序員的一個技能。分佈式
接下來貼幾張圖吧:第一張是上面提到的GeoNear
主界面這個樣子的
MapReduce
最後引用一段網絡上的MongoDB3.4新特性的資料來結束這篇帖子:
MongoDB 下一個大版本 3.4 即將發佈,本文主要介紹 3.4 版本在功能特性上作的改進,內容翻譯自 Development Release Notes for 3.4 Release Candidate。
MongoDB 3.4裏,分片集羣的全部組件,Config server、mongod、mongos 都能相互感知整個分片集羣的存在,瞭解整個分片集羣的配置信息,這樣能避免分片集羣的誤配置,好比在如今的版本,有可能會將一個 shard 錯誤的加到多個 sharded cluster 了。這個特性引入了以下限制
分片集羣裏 mongod 啓動時,必須顯式配置 sharding.clusterRole 爲 shardsrv
3.4版本的 mongos 不能鏈接低版本的 mongod
Config server 的 Primary 節點負責負載均衡
MongoDB 3.2及之前版本里,分片集羣的負載均衡由 mongos 負責,多個 mongos 會搶一個分佈式鎖,搶鎖成功的 mongos 會對執行負載均衡任務,在 shard 間遷移 chunk;在3.4版本里,負載均衡將由 Config server 的 Primary 節點負責,預計會在負載均衡併發度及效率上會有大的提高。
MongoDB 3.2版本引入了複製集模式的 Config Server(CSRS 模式),在此以前,Config server 由多個鏡像的單節點組成(SCCC模式),3.4版本里,MongoDB 將再也不支持 SCCC模式的 Config server。
因此往 3.4 版本升級時,若是Config server 仍是 SCCC 模式,須要先升級爲 SCRS 模式。
分片集羣裏引入了 Zone 的概念,主要取代如今的 tag-aware sharding 機制,能將某些數據分配到指定的一個或多個 shard 上,這個特性將極大的方便 sharding cluster 的跨機房部署,詳細瞭解 Sharding zone 機制。
majority WriteConcern 支持配置是否刷 journal
配置複製集時,增長 writeConcernMajorityJournalDefault 選項,默認爲 true,即當指定 WriteConcern 爲 majority 時,數據寫到大多數節點而且 journal 成功刷盤後,才向客戶端確認成功;若是爲 false,數據寫到大多數節點的內存,就向客戶端確認。
配置複製集時,增長 catchUpTimeoutMillis 選項,默認爲2s,來指定新選舉出來的 Primary 從其它擁有更新數據的節點追數據的時間,增長該時間能最大限度的減小須要 rollback 的數據,但可能增長整個 failover 的時間,該選項只能在 protocolVersion 爲1時使用。
「linearizable」 Read Concern 級別保證,必定能讀到 WriteConcern 爲 majority,而且確認時間在讀請求開始以前的數據,該級別僅在查詢結果只有單個文檔的狀況下有效。
MongoDB 3.4 新增對decimal128 format的支持,最多支持34位小數位。
跟 Double 類型不一樣,decimal 數據存儲的是實際的數據,無精度問題,以9.99爲例,decimal NumberDecimal(「9.99″) 的值就是9.99; 而 Double 類型的9.99則是一個大概值 9.9900000000000002131628….
MongoDB 在3.4版本增長了大量的 aggregation 操做符,功能更增強大了,舉幾個例子
bucket 能對方便的對數據進行分類
$grahpLookup 在 3.2的$lookup 的基礎上更進一步,能支持更復雜的關係運算了。
$addFields 使得文檔操做更豐富了,好比將某些字段求和存儲爲新的字段。
詳細的介紹請參考Aggregation部分
MongoDB 3.4 開始支持 collation,在以前的版本里,文檔裏存儲的字符串,不管是中文仍是英文,不論大小寫,一概按字節來對比,引入 collation 後,支持對字符串的內容進行解讀,能夠按使用的 locale 進行對比,也支持對比時忽略大小寫。
create、createIndexes、find、aggregate 等涉及字符串操做的命令都支持 collation。
MongoDB 3.4裏增長了對只讀視圖的支持,視圖將集合裏知足某個查詢條件的數據虛擬成一個特殊的集合,用戶能夠在特殊的集合上作進一步的查詢操做。
MongoDB 3.4 支持輪轉的將複製集、或分片集羣的各個節點開啓鑑權,不須要停服務,詳細步驟參考Enforce Keyfile Access Control in a Replica Set without Downtime
MongoDB 3.4 引入 mongoreplay 工具,可用於監控並記錄 mongod 上執行的命令並 replay 到另外一個 mongod 實例上,該工具可用於代替 mongosniff。
支持 systemd
下降默認的 wiredtiger cache 配置
Changes Affecting Compatibility
可能影響兼容性的修改
升級步驟(Upgrade Procedures)
單節點升級到 3.4 複製集升級到 3.4 分片集羣升級到 3.4