MongoDB 可視化管理工具


MongoDB 可視化管理工具 (2011年10月-至今)

 

正文

該項目從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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM