正文 該項目從2011年10月開始開發,知道現在已經有整整5年了。MongoDB也從一開始的大紅大紫到現在趨於平淡。 MongoCola這個工具在一開始定位的時候只是一個Windows版本的工具,期間也想改為WebPage版本,但是只是開了一個頭,也沒有繼續下去。 現在想想,可能這個決定是正確的,W ...
正文
該項目從2011年10月開始開發,知道現在已經有整整5年了。MongoDB也從一開始的大紅大紫到現在趨於平淡。
MongoCola這個工具在一開始定位的時候只是一個Windows版本的工具,期間也想改為WebPage版本,但是只是開了一個頭,也沒有繼續下去。
現在想想,可能這個決定是正確的,WebPage版本是為了跨平臺才去做的,但是,當時的環境,Net Core並沒有發佈,即使用MVC5搭建平臺,也依然無法做到跨平臺。
現在,隨著Net Core的發佈,WebPage的事情也重新擺上日程了。
選在這個時候發佈軟體,一是因為Connect16大會之後,微軟也發佈了很多令人振奮的消息,所以我也來錦上添花一下。二來,MongoDB3.4這個重大的版本更新也是箭在弦上了,應該年底就會發佈正式版本了。三來,也是對於今年的一個總結。
雖然這隻是一個Winform的項目,但是在開發中,幾乎將整個MongoDB的官方文檔都翻了一遍,很多知識也重新學習了一下,收穫還是很豐富的。
由於開發周期很長,很多代碼在這次開發中,都進行了老朽化處理,廢棄和修改了很多東西,所以測試也並不完全,所以這個工具現在只是用於學習MongoDB或者是開發環境下使用。
對於開源軟體,其實很多人只是想看看源代碼,或者收藏源代碼,能夠從源代碼裡面找到自己想要的功能的人不多,能夠加入開發的更少了。這個項目只有2-3個同志貢獻過有用代碼,非常感謝。
所以這次開源,我也不抱什麼希望,如果有誰能夠從我的代碼中學到些什麼,我就知足了。
MongoCola工具 : http://www.codesnippet.info/Article/Index?ArticleId=00000062
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
該項目在Github上的熱度:
用戶手冊:
在開發的過程中,當然會有一些問題產生,如果有問題,可以和MongoDB工程師通過JIRA進行溝通。
如果你的資料夠詳細,能夠很快複原出問題現場,他們的feedback也是很快的。
GeoNear
真正有用的開源信息,也就是上面這些了。不過,按照博客園小編的想法,文章或多或少要寫點什麼東西,不然會當作廣告處理的。所以還是寫點什麼吧。
前幾天,有個朋友用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。
分片集群(Sharded Cluster)
Membership Awareness
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 節點負責,預計會在負載均衡併發度及效率上會有大的提升。
不再支持 SCCC Config server 的模式
MongoDB 3.2版本引入了複製集模式的 Config Server(CSRS 模式),在此之前,Config server 由多個鏡像的單節點組成(SCCC模式),3.4版本里,MongoDB 將不再支持 SCCC模式的 Config server。
所以往 3.4 版本升級時,如果Config server 還是 SCCC 模式,需要先升級為 SCRS 模式。
Sharding Zones
分片集群里引入了 Zone 的概念,主要取代現在的 tag-aware sharding 機制,能將某些數據分配到指定的一個或多個 shard 上,這個特性將極大的方便 sharding cluster 的跨機房部署,詳細瞭解 Sharding zone 機制。
複製集(Replica Set)
majority WriteConcern 支持配置是否刷 journal
配置複製集時,增加 writeConcernMajorityJournalDefault 選項,預設為 true,即當指定 WriteConcern 為 majority 時,數據寫到大多數節點並且 journal 成功刷盤後,才向客戶端確認成功;如果為 false,數據寫到大多數節點的記憶體,就向客戶端確認。
支持配置 Primary 追數據的時間
配置複製集時,增加 catchUpTimeoutMillis 選項,預設為2s,來指定新選舉出來的 Primary 從其它擁有更新數據的節點追數據的時間,增加該時間能最大限度的減少需要 rollback 的數據,但可能增加整個 failover 的時間,該選項只能在 protocolVersion 為1時使用。
支持 Linearizable Read Concern
“linearizable” Read Concern 級別保證,一定能讀到 WriteConcern 為 majority,並且確認時間在讀請求開始之前的數據,該級別僅在查詢結果只有單個文檔的情況下有效。
Decimal Type
MongoDB 3.4 新增對decimal128 format的支持,最多支持34位小數位。
跟 Double 類型不同,decimal 數據存儲的是實際的數據,無精度問題,以9.99為例,decimal NumberDecimal(“9.99″) 的值就是9.99; 而 Double 類型的9.99則是一個大概值 9.9900000000000002131628….
Aggregation
MongoDB 在3.4版本增加了大量的 aggregation 操作符,功能更加強大了,舉幾個例子
bucket 能對方便的對數據進行分類
$grahpLookup 在 3.2的$lookup 的基礎上更進一步,能支持更複雜的關係運算了。
$addFields 使得文檔操作更豐富了,比如將某些欄位求和存儲為新的欄位。
詳細的介紹請參考Aggregation部分
Collation and Case-Insensitive Indexes
MongoDB 3.4 開始支持 collation,在之前的版本里,文檔里存儲的字元串,不論是中文還是英文,不論大小寫,一律按位元組來對比,引入 collation 後,支持對字元串的內容進行解讀,可以按使用的 locale 進行對比,也支持對比時忽略大小寫。
create、createIndexes、find、aggregate 等涉及字元串操作的命令都支持 collation。
視圖(Views)
MongoDB 3.4里增加了對只讀視圖的支持,視圖將集合里滿足某個查詢條件的數據虛擬成一個特殊的集合,用戶可以在特殊的集合上做進一步的查詢操作。
安全提升(Security Enhancement)
MongoDB 3.4 支持輪轉的將複製集、或分片集群的各個節點開啟鑒權,不需要停服務,詳細步驟參考Enforce Keyfile Access Control in a Replica Set without Downtime
工具(MongoDB Tools)
MongoDB 3.4 引入 mongoreplay 工具,可用於監控並記錄 mongod 上執行的命令並 replay 到另一個 mongod 實例上,該工具可用於代替 mongosniff。
General Enhancements
支持 systemd
降低預設的 wiredtiger cache 配置
Changes Affecting Compatibility
可能影響相容性的修改
升級步驟(Upgrade Procedures)
單節點升級到 3.4
複製集升級到 3.4
分片集群升級到 3.4