日期:2014-05-16  浏览次数:20492 次

如何为mongodb提交代码
这篇文章完成于2011年年底,即使到现在,一些方法还是差不多的,但是对于本文结尾持续化的说法现在已经不存在了,这个bug已经被修复。

什么是mongodb?

按照mongodb主页上的说明,它是一种高性能,可扩展性和开放源码的,面向文档的数据库。是什么使得它不同于其他的NoSQL产品呢?我认为是JSON和Javascript的完美结合!

一般来说,如果我们要将一些数据存储到数据库,我们上来的第一件事就是设计一个好的表结构,之后会做一些正则化来消除一些冗余。但对于MongoDB来说,整个过程是革命性的。它的模式是我们不需要去想什么表的结构。着眼于整个文档的结构才是关键。

尝试一下吧!

你可以到它的主页上,然后点击“Try It Out”,然后可以直接在网页上进行体验,它的shell的语言是javascript,所以只要你有javascript的一般基础,就可以学习了。:)

来查看一下代码吧。

想要做一些修改?或只是好奇其机制?没问题。开源,你只需要克隆它的代码。这个库包含的所有数据库内核实现和客户端的C++驱动。

$ git clone git://github.com/mongodb/mongo.git
$ cd mongo/
$ scons all


这里是你需要遵循的贡献规则。

你把你的代码到上游之前,你必须签署贡献者协议来解决可能造成的许可证问题。

要看到所有的错误,在JIRA系统签署。浏览项目,看看是否有你感兴趣的一个错误,然后开始吧!

然而,还是有一件事我不太清楚。我的补丁应该怎么送?

  • 有一个mongo-dev邮件列表,但似乎很少有人挂在那里。
  • github上发送一个pull request。但它似乎10gen的家伙不经常检查pull request。有几个排队的请求。
  • 评论JIRA系统,并安装补丁。


更新:Kristina(一位mongodb核心开发人员)在给我的邮件确认中使用JIRA是首选。

我的经验

这是我的第一个解决的错误描述。它的功能扩展为:让Javascript可以基于内部的内容来比较两个对象。现在在MongoDB中有两个JavaScript引擎。我的解决办法是只为SpiderMonkey的,但我还不知道怎么给谷歌的V8添加同样地功能。

10gen公司(MongoDB背后的公司,他们提供所有的技术支持和开发)的人很好说话 ,当时一个人说,他会送我一些MongoDB的马克杯。爽!你想要吗?(现在我的刷牙杯就是带mongodb标志的 

  • 简便的方法。从这里直接请求。
  • 艰辛的道路。做贡献向他们发送补丁。 :-)


结尾

MongoDB是一个伟大的项目,该项目旨在解决现实世界中遇到的问题。例如,它具有复制,分片,和内置的可扩展能力。虽然它被指责有没有一个单一的耐久性,但是,嘿!在10gen的开发人员正在试图解决这个问题,给他们一段时间,这将不是一个问题。开始使用它,或开始贡献吧!