请教drupal性能优化的问题,能否让drupal按不同的内容类型储存在不同的表中??

由 drupal66 于 周五, 2008-06-27 01:12 提交。

最近一直在研究drupal,感觉这个系统设计的很强大,特别适合做论坛和社区等互动性很强的网站..但也发现一个严重的平颈问题:drupal把所有内容都储存在node和node_revisions这两个关联表里,如果数据量和网站的访问量增大到一定的程度,网站速度肯定会急剧下降;但不知道有没有谁知道这个平颈出现在哪个数量级,是几万个节点还是几十万,几百万级的??...

另外如果网站真搞大了就换个系统, 这些积攒下来的宝贵的数据怎么办?如何按不同的内容类型转到不同的表里?还是要丢弃??
以下是我提的两个改进的设想问题供大家探讨一下:

1. 能不能让drupal按不同节点类型(或者叫内容类型)储存在不同的表里,drupal的评论可以这么做,但那是依附于节点的;估计很难,因为哪个叫node的节点是自动增加的;

2. 如果上面的方法无法实现,那能不能不用drupal的node创建内容?利用自己的模块创建独立的内容类型:数据储存在单独设计的表里,内容不是以node节点的形式组织或者是用另外一种节点类型也行;如果能这么做是最好的解决办法,因为drupal的node孙然很强大,但也很耗资源,并不适合做某些内容类型的网站.但可以利用其灵活性做一些试验类型,如果某个类型能让客户感兴趣,访问量大的话可以把这个内容类型分离出来发展...

因为最近研究drupal的开发技术,发现扩展模块都是基于节点类型,也许是我孤漏寡闻,没有发现不利用节点创建内容的模块,如果有谁知道有不利用节点的模块告知一下,非常感谢!如果有谁知道我说的第二种方法能实现的话,请畅所欲言...再次感谢!!

完全可以不使用现在

完全可以不使用现在的node模式,把文章存到独立的表里。参看一下cck,cck为每个内容类型生成一个独立的表,所有自定义字段存到这个表里。
写一个模块,生成一个内容类型,在提交表单时,不要调用hook_insert去写入数据,而是自定义就行了。不过,这样一来,很多现成的模块就不能用了,大多都是基于node的。
看这篇文章的前面部分,遵循node定义的好处和不遵循的坏处: http://drupalchina.org/node/1115

------
瞅瞅 店铺网

谢谢东方兄弟! cck我调

谢谢东方兄弟!

cck我调试了一下午,这个摸组是挺强大的,用来组织一些字段内容也能满足很多简单的网站需求,但太耗资源,而且用cck能做的基本上自己写摸组也能实现.虽然自己增加的字段内容能从node_revisions表中转到自定的表,(用cck更复杂些);但是有一点这些基于node的内容都要在node表中储存一些数据,;这还是无法解决节点多了影响网站速度的平颈问题...

这也是做商业网站首要考虑的吧,你可能比我还要清楚,你的店铺网不是用drupal架的吧(呵呵,,你的网站很不错)..我看了葬月早期用drupal做的协医网,这可能是用drupal做的最大的中文站,现在已增长到8万多个节点了(drupal的主站才28万个左右),应该说不错了;这个网站我以前去看过,里面有很多医生写的博客,但现在已经看不到了(不知道是不是不让看了:))
,而且你再多点几个页面发现节点都是8万多的,找不到7万以下的节点,我怀疑他把以前的数据全删了...如果连数据都无法保留的话,将来后患无穷啊...:)
这也可能是drupal在中国并不火的原因之一吧.其实在中国做的网站一定要能盛货,即使是草包肚子都行:)因为在中国随便找个城市都比一个欧洲国家人口多...

其实drupal主站肯定也意识到这一点,他们只把这个系统作为一个论坛,所以我说这个系统是个天生做论坛的料:)但是我觉的如果能摆脱他的node 限制drupal也有可能是一个做大站的料;我又研究了一下drupal主站,发现它们现在搞的groups.drupal.org/节点只有一万多点,看来这里面的内容是分表储存了. 你知道怎么做的吗...

groups.drupal.org和drupal.or

groups.drupal.org和drupal.org是分离的,是两个独立的站点。
协医网应该是网站发展路线调整,所以博客、群组功能才取消掉。其它一些大站,可以看下官方上展示的一些。
纽约观察报的网站, http://www.observer.com/ 节点有大约70000多,浏览量也不少。http://www.terminus1525.ca ,这个也不错,社区站点。国外用drupal的大中型站点挺多的,到官方的站点秀里可以看到。
国内用的比较少,比如我工作的公司,老板就对开源的东西比较排斥,认为免费的东西,肯定有后顾之忧,所以不如自己开发来得可靠。呵呵,估计国内很多老板都是这个思想。
如果要完全脱离node模式,自定义存储和输出,肯定比较麻烦。从存储到输出,各个环节都要自己写了。
------
瞅瞅 店铺网

呵呵,你们老板有意思.

呵呵,你们老板有意思.要是他不懂技术的话你告诉他LAMP都是开源的;要吗他就是想让你们别闲着,用开源的我还顾你们编程的干吗...呵呵说笑了.

我想完全脱离node模式,但不知道有没有这方面资料或者第三方模组能参考一下?

为什么一定要脱离Node

为什么一定要脱离Node机制,这个是drupal的核心机制,脱离了升级维护扩展就都会成问题了。就一个web“操作系统”来说,我支持保持小核心和简单核心。核心弄到象CCK那么复杂我认为对未来的发展是无益的,CCK应该继续作为扩展而存在,其实也正证明了drupal的核心扩展性的强大。
考虑多表其实不如考虑多站点多库结构,drupal官方支持的,单点登陆是可以实现的,性能方面也能得到平衡。
=======================
关注世界,发现中国。博客,与互联网络共存。
博客基地 - 菠萝菠萝蜜
http://www.blogme.cn