MongoCola
MongoCola是一個開源的MongoDB管理工具。
由於最初版本的設計失誤,所以現在只能在Windows上使用,雖然可以在OSX上使用,但是非常別扭。
契機
MongoCola的第一個版本開始於2011年。那個時候MongoDB還剛剛開始展露頭角。
我本人一直比較喜歡文檔型數據庫,所以對於MongoDB也就特別的關注。
由於長期使用Windows,所以我也是一個UI重度依賴着,希望任何操作都可以通過UI界面來實現。一來可以減少錯誤發生的概率,二來,可以不用記憶很復雜的操作指令。雖然也有一部分人覺得在命令行中鍵入一些晦澀的命令很酷炫,但是我還是實用主意,良好的人機界面是我追求的。
.NET
MongoDB是一個開源的數據庫,開發一個MongoDB的管理工具,也應該使用一種開源的語言,例如Java。
我從2003年開始使用NET,2010年左右從VB.NET轉到C#,那個時候軟件開發還是Windows的天下,對於HTML等網頁制作完全不懂,所以最后決定使用C#開發一個WinForm的程序。
當然,從2016年的角度來看,如果當時使用Java的話,跨平台就很容易了,再退一步說,如果使用HTML的方式,也就是說,做一個HTTP的服務程序,界面用瀏覽器打開,也是一個跨平台的方案。
(當然這方面的嘗試也有過)
但是由於那個時候也沒有Angular這樣的解決方案,所以一直沒有繼續下去。
溝通
這個工具底層使用的是官方的驅動。但是驅動程序總有一些自己想要卻沒有的功能。如何和官方溝通則成為了一個課題。
本人英語屬於那種書面夠用的水平,使用簡單的英語配上代碼,截圖,可以將問題描述清楚的水平。
所以發現問題也會及時和官方溝通,發現過一些只有在中文環境下才會發生的特有的問題
Some Command don't support Chinese
歪果人也蠻有趣的,祝賀中國年。
以后也陸續陸續提了一些建議和意見,總體上說,是對於溝通能力的一次鍛煉。
驅動程序
MongoDB的C#驅動,期間進行過一次重大的改版。
幾乎所有的同步操作都被異步所取代了。注意,是取代了,取代了,取代了。
雖然說,通過Web的操作,應該都采用異步操作,但是,官方的做法不是新增異步的操作方法的同時,保留舊的同步方法。
這樣做意味着,所有的牽涉到DB操作的代碼,都必須重寫。
在重寫的過程中,雖然很痛苦,但是對於async,await關鍵字有了更加深刻的理解,也算是學習吧。
當然,官方驅動現在采用了折衷的方式,舊的Legacy驅動和新的驅動是共存的。你可以同時將新舊兩個版本的驅動引入程序中。
重構
這樣的項目,沒有重構是不可能的。大大小小的重構不知道進行了多少次了。
一開始的程序,界面,數據庫,Helper方法都是在一個工程中的,只是使用文件夾區分開來。
代碼量不大的時候,也沒有覺得不妥。
隨着代碼量上升,插件,外部工具等的需求,原來的強耦合的方式漸漸顯示出不便了。
然后,花了2周時間進行了一次不徹底的解耦(有些代碼暫時不敢動)。
界面和功能分離。
窗體和控件分離。
Mongo核心代碼和Helper類分離。
功能窗體和主窗體分離。
Tab頁的管理做成了一個擴展性高的模塊。
新的C#6的語法導入。
感謝
一個開源軟件可以走到現在,兩個原因:
-
有人在使用,的確解決了一些人的痛點。
后來我陸陸續續完成了一些個人作品,大都使用了Mongo作為數據庫解決方案
所以,這個工具也發揮了很大的作用,我才有興趣去長期維護它。因為這個工具成為了其他項目的一部分了。 -
感謝博客園上的各位的支持
在園里也發布了一些介紹Mongo的文章,感謝大家的支持和鼓勵。
3.最后感謝貢獻代碼的人們,你們是這個項目的源泉和動力。
一開始的時候,這個項目還有人關注時間久了,加上Mongo在國內不溫不火,自然也沒有人關注了。
不過最后還是感謝兩位朋友,最近貢獻的源代碼。
以下 更新來自於 QiQi https://github.com/1354092549
優化聚合功能
對齊組件,更美觀
優化聚合管道(Aggregate)相關功能,和Mongodb官方統一,使用名詞stage
Add Stage(應用第2條前的Add Aggregate)支持提供數組,用於一次添加多個stage
優化中文語言包
Ver 1.5(Beta2) 2016/02/17 @ Shanghai China
感謝 張鵬 zp11qm12#hotmail.com 對於1,2,3點的貢獻
修復了collection中數據刪除不掉的bug(id應強轉為ObjectId)
修改了ctlJsEditor界面,現可直接執行已經保存的javascript代碼(我的團隊需要這個功能)
添加了復制數據庫的功能(其實是復制表,目的是為了同步javascript代碼)
一晃這個項目已經5年了(2011-2016),最近有200個Star了。
對於一個非主流的數據庫管理程序來說,已經是一個不錯的成績了。
其間也沒有做過宣傳,200個Star都應該是Mongo的粉絲。MongoDB有它的局限和長處。
下面這篇博文也介紹了Mongo的使用經驗。
雖然是Mongo愛好者,但是我還是要說,並非所有項目都適合用MongoDB。
MongoDB的領域是分布式,復雜數據結構。如果你的項目里面,都是新手,還是老老實實用MySql比較好。
http://www.codesnippet.info/Article/Index?ArticleId=00000005
最后是廣告時間:
http://www.codesnippet.info/ 已經開張,代碼已經開源。
CodeSnippet.info 開源說明 和 環境搭建
http://codesnippet.info/Article/Index?ArticleId=00000009
歡迎大家投稿以及加入網站的開發。謝謝觀賞。
本文已經同步到
http://codesnippet.info/Article/Index?ArticleId=00000016