原文:MongoDB as in huMONGOus, not retarded

最近公司有一个比较大的项目,涉及到的数据很多,需要做一个统计分析系统,供做决策使用。考虑放弃mysql,使用NoSql数据库,我觉得MongoDB最适合了,看了一片MongoDB入门的文章,觉得不错,抽时间一点点翻译翻译,翻译的不对、不好的地方,还请大家多多指教。

——————————————————————————-

与其他人不一样,我不会在iPad上写任何东西。是的,我仍在写Popurls Clone系列的后续部分,而且和往常一样,它花费了我比预期更长的时间。生活是美好的一大堆账单蜂拥而至,它证明:你确实需要通过“工作”来“挣钱”。但是,我们为什么会这么认为??那是相当愚蠢的,就像在动画《星球大战》前传/续集中发生克隆战争一样(不知道这么翻译对不对,看《The Big Bang Theory》也多次提到了《星球大战》,一直想看,也没机会看,将来会抽时间学习下的~:))当人们开始思考一些人生伟大的、有意义的事情时,比如说:你怎样逃掉你的账单。我想,是时候写一些关于数据库的东西了。你看到前面这些话之间的联系了么?–看懂了?太好了,虽然我不知道有啥关系,哈哈哈哈。。。。在谷歌搜索mysql,大约有1.17亿条结果,如果搜索MongoDB,只有1、2百万左右,很好。这意味着,如果我的这篇文章被谷歌收录了,它将构成不少于8.33 × 10-7 %的相关搜索的结果。与mysql的形成鲜明的对比,是5.88 × 10-9 %。我也已经写了不少关于mysql的东西,我真是个大好人啊[害羞]…简单来说,本文将覆盖MongoDB以及你如果在PHP中使用它,前边的东西让大家高兴下,如果你不感冒,那么你还是不用看了

简要介绍MongoDB

首先,MongoDB不是像mysql一样的关系型数据库RDBMS,关系数据库是基于关系模型、基于埃德加·弗兰克在1969年提出的一阶逻辑。数据及它们的内在关系,不存储为表,表构成了它们之间的关系,这些表由一些固定数量的垂直列和不固定数量的行的模型组成,理论上,行可以无限大。数据通过SQL语句来进行查询,好了——-我们这里讨论的是关于NoSql技术的一部分–MongoDB,在Nosql技术中,有三种类型的数据库:以列为导向的,Key/Value键值对的,以及以文档存储为导向的,MongoDB属于第三类。在这里,一个文档,就是一个带有一些给定属性的数据结构,这些属性可以是字符串、数字、数组或者Objects等等,如果你在PHP中接触过复合数组或者Object对象,你就明白是什么意思了。你也可以在collections中给文档分组,同样的,有一些叫做子文档的,你也可以那样认为。

待续……(2011-12-22 00:13)

在MongoDB中,我们没有schema结构,只有更强大的JSON形式的结构,JSON很不错,不是么?MongoDB是用C++写的,1.4.0版本,并且使用BSON形式存储,BSON是一种二进制编码序列化的JSON文档结构。很幸运的,PHP有一个MongoDB扩展,你现在是不是想马上装上它?在这里下载 ,也可已阅读一下使用说明: ,如果你使用PECL,你可以用以下命令很快捷的安装它。

或者你可以从这里下载源码安装:

安装的时候会创建一个扩展文件并且放到了PHP的扩展目录,你现在需要编辑PHP.INI文件来启用扩展

如果你得到一个错误,类似“phpize: comand not found”,读一下这个,如果你是用的linux,你可以通过apt-get安装php5-dev,或者通过yum安装php-devel来快速修复,然后重启服务器。如果你对MongoDB感兴趣,但是讨厌PHP(谁能知道啥子原因),也有其它语言的驱动,比如说C#、.NET(那你为啥还在看这篇文章?),Clojure ,ColdFusion,Python(这个还好),Ruby(Play for fun)。

DigDeeply注:

如果是在windows下练习,可以下载一个Dll扩展,放到PHP的扩展目录,并在php.ini文件中启用即可。

extension=php_mongo.dll

待续…(2012-01-05)