[C#項目開源] MongoDB 可視化管理工具 (2011年10月-至今)

来源:http://www.cnblogs.com/TextEditor/archive/2016/11/24/5972521.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題描述:Oracle表空間創建到了C盤,發現C盤的空間不夠,現在將表空間的文件轉移到D盤下。 操作方法: 1. 先登錄sqlplus,登錄用戶.在cmd中輸入:sqlplus /nologSQL>conn system/system@orc (system:用戶名,system:密碼,orc:數據 ...
  • 新建查詢,執行如下語句: EXEC sp_attach_db @dbname = 'xxx', /*資料庫名稱*/ @filename1 = 'D:\資料庫備份\預發佈\201611241045 測試\xxx.mdf', /*mdf文件目錄*/ @filename2 = 'D:\資料庫備份\預發佈\ ...
  • 今天碰到了一個奇怪的問題,是關於Oracle一個事務中的Insert和Update語句的執行順序的問題。 首先詳細說明下整個過程: 有三張表:A,B,C,Java代碼中有一段代碼是先在表A中插入一條數據,然後再更新表B的兩個欄位,更新的兩個欄位是特定值。並且插入和更新在一個事務中。 有個需求需要在表 ...
  • 1、導入資料庫 在命令行下輸入: 說明: username 是資料庫用戶名, test 為目標資料庫, /home/data/test.sql 是你要備份的路徑和名稱 回車,輸入資料庫密碼,就進行導入操作了! 2、導出資料庫 2.1、導出整個資料庫: 說明:username是資料庫用戶名,test源 ...
  • PageSize = 30 PageNumber = 201 方法一:(最常用的分頁代碼, top / not in) 備註: 註意前後的order by 一致 方法二:(not exists, not in 的另一種寫法而已) 備註:EXISTS用於檢查子查詢是否至少會返回一行數據,該子查詢實際上 ...
  • 版權聲明:本文發佈於http://www.cnblogs.com/yumiko/,版權由Yumiko_sunny所有,歡迎轉載。轉載時,請在文章明顯位置註明原文鏈接。若在未經作者同意的情況下,將本文內容用於商業用途,將保留追究其法律責任的權利。如果有問題,請以郵箱方式聯繫作者(793113046@q ...
  • 昨天遇到一個案例,YourSQLDba做事務日誌備份時失敗,檢查YourSQLDba輸出的錯誤信息如下: yMaint.backups backup log [gewem] to disk = 'M:\DB_BACKUP\LOG_BACKUP\xxxx_[2016-11-22_01h11m05_Tu... ...
  • 副本集 可以將MongoDB中的副本集看作一組伺服器集群由一個主節點和多個副本節點等組成,相對於之前講到的主從複製提供了故障自動轉移的功能 副本集實現數據同步的方式依賴於local資料庫中的oplog數據 oplog是存在與主節點或副本節點上的local資料庫中的一個固定集合,記錄了每一次主節點的寫... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...