11个甲级Mongodb GUI工具,以图表形式管理数据库

作者:计算机专家

Southbank Software公司最近发布了 dbKoda 0.6.0 ,这是该软件的 首个发布版 。dbKoda是一款开源的 MongoDB 开发工具,采用JavaScript、 React 和 Electron 开发。下图显示了dbKoda的用户图形界面,突出特点是提供了一个连接管理器和代码编辑器,其中代码编辑器给出了丰富的MongoDB数据操作特性。

LightSpeed是 一种针对.NET的商业化ORM,它拥有多种特性,像实体序列化、健壮的VS设计器、内建的LINQ支持、对DTO的支持等等。我们联系了 Mindscape(开发LightSpeed的公司)的共同创始人John-Daniel Trask,对产品进行了深入探讨,并在总体上对ORM进行了讨论。

MongoDB开源数据库可在社区,企业MongoDB Atlas版本中使用。社区服务器版本可以免费使用,而MongoDB Enterprise Server是商业版,必须购买其订阅。它适用于Windows,Linux和OS X。MongoDB Atlas可运行在AWS,微软Azure和Google Cloud Platform等云平台上。

连接管理器维护多个数据库连接的配置信息。在连接管理器窗口的下半部分,显示了包含每个活跃数据库连接及相应集合的列表。点击鼠标右键,就会弹出一系列菜单选项,包括构建查询、执行CRUD操作、索引和导入导出数据。连接配置信息编辑器用于创建新的数据库连接,它支持所有形式的数据库连接语法。

InfoQ:现在已经有了很多种开源或者商业化的针对.NET的ORM产品,你为何决定要创建一种新的产品呢?

MongoDB是一个面向文档的数据库,属于NoSQL数据库,它使用类似JSON的文档和schemata。

代码编辑器中包括了查询输入输出窗口,该窗口用于编写和执行MongoDB的Shell命令。编辑器的特性包括了代码格式化、代码自动完成、代码折叠和语法高亮显示。用户可以在代码编辑器中手工编写查询,也可以使用查询构建器构建查询。查询构建器可以在代码编辑器中动态地生成相应的MongoDB的Shell命令。该特性在编写复杂的MongoDB Shell命令时非常有用,它消除了如何正确格式化大括号和圆括号的一系列繁琐操作。

JD:LightSpeed是Mindscape的第一款产品,我们是基于之 前在IT服务领域的经验来创建的。我们使用过现存的对象-关系映射器(ORM),但是那时在.NET领域并没有太多选择。要么使用NHibernate, 要么就从头创建自己的工具,而很多组织都构建了自己的ORM。我们觉得现存的ORM在性能上和使用的体验上都不是很好,同时也相信业务部门会乐于为优良 的、易于学习、高性能的ORM付费,相对于其它产品或者DIY的方法来说,那会节省他们很多的时间。

MongoDB的默认接口是命令行,新用户很难像专业人员那样处理数据库。因此,有一些MongoDB管理工具来提供GUI界面以提高生产力。就像phpmyadmin为MySQL/MariaDB数据库提供基于HTTP网络的GUI界面一样。但是,此处包含的所有工具都不是基于HTTP的,只有少数工具为MongoDB提供Web界面。以下是使用GUI的比较流行的MongoDB管理工具列表:MongoDB Compass Community

在Southbank Software最新发布的 dbKoda 0.7.0版 中,提供了如下新特性:

InfoQ:你认为ORM应该处理的关键问题有哪些?

要从具有图形用户界面的MongoDB开始,MongoDB是最好的方法之一。MongoDB Compass Community由MongoDB开发人员开发,这意味着更高的可靠性和兼容性。它为MongoDB提供GUI mongodb工具,以探索数据库交互;具有完整的CRUD功能并提供可视方式。借助内置模式可视化,用户可以分析文档并显示丰富的结构。为了监控服务器的负载,它提供了数据库操作的实时统计信息。就像MongoDB一样,Compass也有两个版本,一个是Enterprise,社区可以免费使用。适用于Linux,Mac或Windows。

聚合构建器; 存储下钻; SSH隧道连接(SSH Tunneling Connections); 改进的JSON查看器; 导入和导出。

JD:ORM的基本目的就在于为数据库和对象世界提供良好的映射关系,所以当然需要把这一点做好。

除 此之外,性能非常重要。最常见的抱怨就是ORM的性能不好,尽管我们并不确信是那样。好的ORM可以将很多技术自动化,像对象融合(object hydration)、查询批处理、有效地生成查询、热切载入(eager loading)、智能缓存等等,那会让基于ORM的代码和手动编写的代码执行得一样快。

生产率也是关键的问题。使用ORM不是要节省 计算机的时间,而是要节省开发时间——更快地构建应用,消除各种错误、执行好的实践、让快速可靠的测试和部署成为可能。例如,LightSpeed会自动 对查询进行参数化,那和手动编写的SQL相比,会避免大多数SQL注入的攻击。我们都需要花费时间创建模型来实现强验证,或者数据绑定通知,或者编辑回 滚。有了LightSpeed我们努力把这些类型的问题归到“拿来就用(it just work)”一类。从原始的数据访问代码转为使用ORM就像从汇编转为C#或者Java一样。可能你会放弃一点儿性能,但是比你想象的要少,而你换回的是 上百倍的生产效率。

最后一点特别针对.NET ORM的是对LINQ的支持。我们已经大量使用了LINQ,很难想象如何在没有它的情况下工作。所以拥有真正稳定的LINQ提供程序非常重要。构建坏的 LINQ提供程序很难。构建好的LINQ提供程序更难。多年以来我们一直在改善LightSpeed中的LINQ提供程序,这是我们值得自豪的一点。对 LINQ的支持已经成为.NET开发者工具箱中期望得到的特性,所以一种ORM中不支持LINQ或者支持很差都是不可接受的。

图片 1

聚合构建器的功能类似于查询构建器,支持构建需要 aggregate 聚合函数的更复杂查询。在下面的例子中, publications 集合使用 $lookup 操作符执行与 authors 集合的做内连接运算。

InfoQ:LightSpeed支持类似于EF使用POCO实现的代码先行(code-first)之类的功能吗?

NoSQLBooster(mongobooster)

db.publications.aggregate({"$lookup": { "localField" : "author_id", "from" : "authors", "foreignField" : "_id", "as" : "authorinfo"}})

JD:模型先行和代码先行在概念上非常类似,它们都是说开发者在数据库结构存 在之前以代码的方式来说明模型。LightSpeed当然支持模型先行,而且早在多年前就已经支持,然而,那依赖于使用LightSpeed的模型设计器 创建和管理数据库的变更,并基于定义的模型来创建类。EF的代码先行比模型先行更进一步,它让开发者可以只编写类本身,然后就可以从那些类生成对数据库的 更新,而不需要设计器。我们几乎没有收到添加这种支持的请求,因为它会造成生产力的极大降低,那是由于需要你手动编写所有应用程序所需的实体,然后才能创 建类。

关于POCO,我们不会把它设置为默认的选项。LightSpeed实体依赖于“Entitiy”基类,坦白说, 这是因为我们相信它会为开发者带来巨大的价值。记住,ORM是与生产力相关的。我们看到喜欢POCO的人们花费多个小时来管理T4模板,只是为了生成支持 的类,比方说INotifyPropertyChanged,或者跟踪改变了的字段,或者处理验证(或者更坏,手动编写所有这些代码而不使用代码生成 器!) 唉,你有更好的方法,不需要手动编写那类代码。我们的经验是,天哪,用额外的继承层次来换取这些内容是很值得的:LightSpeed的开发者通常会喜欢 它,因为他们可以专注于解决实际的问题,而不是手动继承或者编写他们自己的样板代码(plumbing code)。

这么说,分布式场景会从POCO获得很大的益处,因此LightSpeed支持两种方法来进行分布式开发:

  • 通过线(wire)和“DistributedUnitOfWork”进行实体序列化,从而开发者可以在客户端编写LINQ查询,然后 LightSpeed会自动把它传送给服务器,运行查询,然后再把结果发送回来。我们还会做一些聪明的事情,像只把变更的实体发送回来,从而让速度更快。 这种方法功能更完整,并且会被视为“有魔力”的。
  • DTO——LightSpeed设计器不仅可以为用户生成DTO,而且我们会提供方法,使得把DTO导入到服务器上完全成熟的Entity对象中更加容易。这很简单,不那么神奇,但是有些开发者更喜欢这样。

NoSQLBooster是MongoDB CLI界面中非常流行的GUI工具。它正式名称为MongoBooster。NoSQLBooster是一个跨平台,它带有一堆mongodb工具来管理数据库和监控服务器。这个Mongodb工具包括服务器监控工具,Visual Explain Plan,查询构建器,SQL查询,ES2017语法支持等等......它有免费,个人和商业版本,当然,免费版本有一些功能限制。NoSQLBooster也可用于Windows,MacOS和Linux。

如下图所示,聚合构建器仅需输入 localFieldfromforeignFieldas 等键值域所需的内容,就可动态生成内连接运算。

InfoQ:关于自动迁移情况如何呢?

图片 2

本文由杏彩发布,转载请注明来源

关键词: