MongoDB生态 - 社区开源工具篇

云数据库 MongoDB 版

基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。

了解更多

工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率;很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具、driver、可视化管理等方面的支持情况。

  • MongoDB 生态 - 可视化管理工具
  • MongoDB 生态 - 客户端 Driver 支持
  • MongoDB 生态 - 官方命令行工具

本文主要介绍社区里贡献的贡献的一些开源工具,这些都是从 MongoDB tools 里精选的github start比较多的开源项目。

shell 提升工具 mongo-hacker

mongo-hacker 主要是通过 ~/.mongorc.js 文件给 mongo shell 实现额外的扩展功能,比如配色输出、扩展一些API、简化aggregation语法等,提升了mongo shell的可读性、易用性,不过由于长时间未更新,部分功能在最新的版本上已经不可用了,经过测试,我最关注的配色输出是没问题的。

schema分析工具 variety

variety 是一款 MongoDB 的 schema 分析工具。

比如针对如下 users 集合

db.users.insert({name: "Tom", bio: "A nice guy.", pets: ["monkey", "fish"], someWeirdLegacyKey: "I like Ike!"});
db.users.insert({name: "Dick", bio: "I swordfight.", birthday: new Date("1974/03/14")});
db.users.insert({name: "Harry", pets: "egret", birthday: new Date("1984/03/14")});
db.users.insert({name: "Geneviève", bio: "Ça va?"});
db.users.insert({name: "Jim", someBinData: new BinData(2,"1234")});

$ mongo test --eval "var collection = 'users'" variety.js
+------------------------------------------------------------------+
| key                | types              | occurrences | percents |
| ------------------ | ------------       | ----------- | -------- |
| _id                | ObjectId           |           5 |    100.0 |
| name               | String             |           5 |    100.0 |
| bio                | String             |           3 |     60.0 |
| birthday           | Date               |           2 |     40.0 |
| pets               | Array(1),String(1) |           2 |     40.0 |
| someBinData        | BinData-old        |           1 |     20.0 |
| someWeirdLegacyKey | String             |           1 |     20.0 |
+------------------------------------------------------------------+

Restful接口 Eve

eve 是基于python开发的开源 REST API 框架,借助它可以快速方便的开发Web服务,eve后端的数据库支持 MongoDB 以及关系型数据库。

$ curl -i http://127.0.0.1:5000/people/obama
HTTP/1.0 200 OK
Etag: 28995829ee85d69c4c18d597a0f68ae606a266cc
Last-Modified: Wed, 21 Nov 2012 16:04:56 GMT
Cache-Control: 'max-age=10,must-revalidate'
Expires: 10
...
{
    "firstname": "barack",
    "lastname": "obama",
    "_id": "50acfba938345b0978fccad7"
    "updated": "Wed, 21 Nov 2012 16:04:56 GMT",
    "created": "Wed, 21 Nov 2012 16:04:56 GMT",
    "_links": {
        "self": {"href": "people/50acfba938345b0978fccad7", "title": "person"},
        "parent": {"href": "/", "title": "home"},
        "collection": {"href": "people", "title": "people"}
    }
}

与 eve 功能类似的工具还有 KuleRESTHeartCrest

索引优化工具 dex

dex 是 MongoDB 开发的索引优化工具,能根据查询日志来优化索引,但比较遗憾的是这个工具只支持2.6及以下的MongoDB; 这个项目做的工作非常有意义,有兴趣的同学可以fork这个项目,增加对最新版本 MongoDB 的支持。

对象关系映射 mongoengine

mongoengine 能很方便的实现 python 对象到 MongoDB 文档之间的映射。

from mongoengine import *
connect('mydb')

''' Blog基类
class BlogPost(Document):
    title = StringField(required=True, max_length=200)
    posted = DateTimeField(default=datetime.datetime.utcnow)
    tags = ListField(StringField(max_length=50))
    meta = {'allow_inheritance': True}

''' 文本Blog派生类
class TextPost(BlogPost):
    content = StringField(required=True)

''' 链接Blog派生类
class LinkPost(BlogPost):
    url = StringField(required=True)

# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()

# Create a link-based post
>>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()

# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
...     print '===', post.title, '==='
...     if isinstance(post, TextPost):
...         print post.content
...     elif isinstance(post, LinkPost):
...         print 'Link:', post.url
...     print
...

# Count all blog posts and its subtypes
>>> BlogPost.objects.count()
2
>>> TextPost.objects.count()
1
>>> LinkPost.objects.count()
1

其他语言也有类似的工具,例如

云数据库 MongoDB 版

基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。

了解更多

时间: 2025-01-01 00:01:47

MongoDB生态 - 社区开源工具篇的相关文章

MongoDB 生态 - 可视化管理工具

工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具.driver.可视化管理等方面的支持情况. 本文主要介绍 MongoDB 的一些可视化运维管理工具 MongoDB Cloud Manager MongoDB Cloud Manager是官方推出的运维自动化管理系统,是企业版才支持的功能,社区用户也可以下载试用.Cloud Mana

运维工具大宝典之开源平台篇

本文讲的是 :  运维工具大宝典之开源平台篇  , [IT168技术]在运维工具大宝典系列第一篇文章<运维工具大宝典之运维需求篇>中,云智慧对上云企业的运维需求进行的汇总,其中第6条"对开源的强烈需求"主要是来自运维人员,特别是技术大牛,他们喜欢一切尽在掌握的感脚,而这就需要开源运维工具. 目前流行的开源运维工具如Zabbix.Nagios等大部分来自国外,虽然这些开源产品功能非常强大,但对技术要求很高,而且缺少足够的中文文档和本土服务支持,一般运维人员要想用好难度很大.

MongoDB 生态 - 官方命令行工具

工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具.driver.可视化管理等方面的支持情况. 本文主要介绍 MongoDB 官方的命令行工具 Mongo shell MongoDB 的命令行管理工具,也是 MongoDB 最常用的工具,功能非常丰富,比如常用的 show dbs / show tables / show users

MongoDB中文社区之杭州用户会线下交流活动,开始报名啦

听说最近MongoDB中文社区的线下交流活动很火热.就在3月12日,在浙江杭州,有一场大型的MongoDB交友,不是,应该是交流会.据说有多位技术大咖带来干货分享,小编采访了MongoDB中文社区杭州用户会主席叶翔 PC端报名 移动端报名截止报名时间 3月9日 18:00 叶翔主席,你好,请为大家介绍一下举办这次线下活动的初衷吧? 叶翔:"开源"一词在维基百科上的第一句解释是:软件项目上的公共协作.想协作,先共享,共享源代码,共享知识.所以2017年MongoDB中文社区本着这个目的正

Hadoop和大数据:60款顶级开源工具

虽然此文尽力做到全面,但难免遗漏,欢迎大家补充,点击文末右下角"写评论",分享你的观点. 说到处理大数据的工具,普通的开源解决方案(尤其是Apache Hadoop)堪称中流砥柱.弗雷斯特调研公司的分析师Mike Gualtieri最近预测,在接下来几年,"100%的大公司"会采用Hadoop.Market Research的一份报告预测,到2011年,Hadoop市场会以58%的年复合增长率(CAGR)高速增长:到2020年,市场产值会超过10亿美元.IBM更是非

MongoDB 生态 - 客户端 Driver 支持

工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具.driver.可视化管理等方面的支持情况. 本文主要介绍 MongoDB 对各个语言的客户端(driver)支持情况 MongoDB 官方目前支持10+种语言的客户端,所有官方客户端 driver都支持 MongoDB Connection String URI 的方式去连接,客户端

C#正则表达式开源工具,为.net开源绵尽薄力

原文:C#正则表达式开源工具,为.net开源绵尽薄力 先交代一下背景,最近工作中经常用到正则表达式,而正则表达式这个东西我个人觉得很鸡肋,不用吧,有些功能实现起来会很麻烦.用吧,又不是说工作中经常用到,只是有时候有些需要求用到而已.但是正则表达式只要一段时间不用,就会被遗忘,甚至是忘的一干二净.为了一定程度上解决这个鸡肋的问题,就有了这篇博客和我打算写的这个开源的正则表达式验证工具的想法.关于正则网上的资料其实已经很多了,之所以还写这篇博客只是为了记录一些现在或者以后工作中可能会用到的正则,然后

荐六十款针对Hadoop和大数据顶级开源工具

说到处理大数据的工具,普通的开源解决方案(尤其是Apache Hadoop)堪称中流砥柱.弗雷斯特调研公司的分析师Mike Gualtieri最近预测,在接下来几年,"100%的大公司"会采用Hadoop.Market Research的一份报告预测,到2011年,Hadoop市场会以58%的年复合增长率(CAGR)高速增长:到2020年,市场产值会超过10亿美元.IBM更是非常看好开源大数据工具,派出了3500名研究人员开发Apache Spark,这个工具是Hadoop生态系统的一

用开源工具创建BlackBerry应用程序,第2部分 构建RSS阅读器

开放源码对软件开发市场产生了革命性影响,如今新的消息渠道不断涌现, 它们正是以这种方式强劲地冲击着传统的消息渠道.今天我们可以从各种 Internet 资源和 Internet 主流媒体获得免费的消息.我们可以通过阅读不同 的 Web 站点来获取消息,但这样做非常繁琐.那么,随时更新感兴趣的消息怎 么样?集中地接收您喜欢的消息不是很方面吗?在 BlackBerry 上,您可以通过 RSS 阅读器来实现这些功能.本教程是系列教程 "用开源工具创建 BlackBerry 应用程序" 的第