MongoDB生态 - 社区开源工具篇
2017-12-11 16:09
387 查看
工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率;很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoDB 生态在工具、driver、可视化管理等方面的支持情况。
MongoDB 生态 - 可视化管理工具
MongoDB 生态 - 客户端 Driver 支持
MongoDB 生态 - 官方命令行工具
本文主要介绍社区里贡献的贡献的一些开源工具,这些都是从 MongoDB tools 里精选的github start比较多的开源项目。
mongo-hacker 主要是通过
shell的可读性、易用性,不过由于长时间未更新,部分功能在最新的版本上已经不可用了,经过测试,我最关注的配色输出是没问题的。
variety 是一款 MongoDB 的 schema 分析工具。
比如针对如下 users 集合
eve 是基于python开发的开源 REST API 框架,借助它可以快速方便的开发Web服务,eve后端的数据库支持 MongoDB 以及关系型数据库。
与 eve 功能类似的工具还有 Kule、RESTHeart、Crest。
dex 是 MongoDB 开发的索引优化工具,能根据查询日志来优化索引,但比较遗憾的是这个工具只支持2.6及以下的MongoDB; 这个项目做的工作非常有意义,有兴趣的同学可以fork这个项目,增加对最新版本 MongoDB 的支持。
mongoengine 能很方便的实现 python 对象到 MongoDB 文档之间的映射。
原文地址:https://yq.aliyun.com/articles/69195?spm=5176.100239.blogcont68925.22.or5UQG
其他语言也有类似的工具,例如
nodejs 版本的 mongoose
java 版本的 spring data mongodb
Ruby 版本的 MongoMapper、
PHP 版本的 doctrine-odm
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 功能类似的工具还有 Kule、RESTHeart、Crest。
索引优化工具 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
原文地址:https://yq.aliyun.com/articles/69195?spm=5176.100239.blogcont68925.22.or5UQG
其他语言也有类似的工具,例如
nodejs 版本的 mongoose
java 版本的 spring data mongodb
Ruby 版本的 MongoMapper、
PHP 版本的 doctrine-odm
相关文章推荐
- 开源测试工具/社区(Selenium /OpenQA.org)——今非昔比
- 微软加入Linux基金会共建开源生态,并对谷歌加入.NET社区的举措表示欢迎
- [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
- 开源测试工具/社区(Selenium /OpenQA.org)——今非昔比
- KDE社区推ALERT开源工具集提升开发效率
- [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
- MongoDB工具 -GitHub开源【进度和新功能报告】
- 开源MongoDB管理工具MongoCola1.20 发布 离开IBM GDC的最后一个版本
- MongoDB 生态 - 官方命令行工具
- [持续开源]基于nodejs+ligerui的一款mongodb web 端查询工具(MongoStudio)
- 大数据生态开源工具
- Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
- 大数据生态之开源工具简介
- [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
- 端口映射工具 redir/socat/xinetd - 运维技术 - 开源中国社区
- Rudiments 0.42 发布,C++ 常用工具包 - 开源中国社区
- 开源社区 --- 工具集合
- DotProject首页、文档和下载 - 项目管理工具 - 开源中国社区
- PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区