[C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)

正文

该项目从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安全

该项目在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

相关文章
相关标签/搜索