跳转到主要内容
jziwenchen 提交于 26 June 2011

Drupal 7 改变了以往数据模型,现在使用了一个全新的概率:Entity 来表示一个类似OO编程模型里面的对象;它是一个抽象的数据容器,让Field追加新的数据源到它里面(Attach field data),这样Field模块就可以对任意的Entity 对象进行操作(这样的Entity像常见的User, Node, Taxonomy, Vote 等).

关于怎么进行Entity编程,在这里可以找到实例和教程

Drupal 7 对Field数据保存进行了抽象,以致我们可以用不同的数据库引擎保存Field数据库。

下面我介绍下使用MongoDB保存Field数据达到优化查询,添加等操作的效率

注:有人在本地环境测验过,MongoDB的速度快于MySQL,这里可以看到。

我现在从零开始搭建一个MongoDB运行平台,并让集成到Drupal 7。

1.安装MongoDB

在这里有各种系统版本下载,http://www.mongodb.org/downloads请按照Readme 说明安装。

注:我不详细说明安装过程,如果大家需要请Email给我或者对此文发表评论,我可以另外写一篇如何安装的博客来详细说明怎么安装,配置,参数含义等。

2.安装MongoDB PHP Extension

在这里你可以找到教程.

注:同样,我不说明安装过程,如果需要大家可以邮件给我或者发表评论。

3.下载和配置MongoDB集成模块

1).到这里下载模块,

2).解压到 sites/all/modules/ (或者对应到你项目相应目录)

3).admin/modules/ 开启 MongoDB 和 MongoDB Storage 模块。

提示:如果没有安装PHP MongoDB Extension 它不会安装成功。

4.配置MongoDB.

和以往配置数据库一样,打开位于sites/default 下的 settings.php文件

大概在323行添加(其实无所谓哪一个,只需要您没有造成PHP致命错误就可以的;我这里只是一个为什么规范代码的一个建议)如下代码:

$conf['mongodb_connections'] = array(

'alias' => array('host' => '127.0.0.1', 'db' => 'field_storage'), );

参数解释:

‘mongodb_connections’ 这个应该是固定不变的;

alias :是链接别名,比如您想将field存储在MongoDB上,你可以将alias 取名为"field_storage";如果您想将Cache 存储MongoDB上,您可以追加一个alias取名为 cache_storage;

host: 这个是MongoDB主机地址,可以是域名,可以是IP地址;

db: 这个是MongoDB存储的数据库名字,如上例子,如果是存储FIeld数据,可以将这个数据库名字命名为:field_storage (当然任何你想要的名字,不过应该得让名字有意义)。

这里需要我提到的是,Drupal 7 下的MongoDB 似乎没有完成,这个参数对它现在没有意义;不过您可以提交自己的PATCH给它。

5.启动您的MongoDB

这里是快速教程http://www.mongodb.org/display/DOCS/Drivers. 我这里唯一需要提到的是,您需要首先启动MongoDB的守护进程: mongod

这样,MongoDB和Drupal的集成大部分告成,您如果需要进一步了解,可以访问我们的网站 www.wiredcraft.com

我是

JackeyChan

Email: a397420507@gmail.com

qq: 397420507