Drupal将nid / vid从int转换为bigint

时间:2011-02-18 11:41:00

标签: php mysql drupal drupal-6 drupal-modules

我正忙于一个nid和vid值可能达到极限的项目。我需要一种机制来修改当前和未来的nid和vid数据类型,从int到bigint。

我想可能有一个架构改变挂钩,或类似的东西。我看到有一个名为hook_schema_alter的钩子。

在架构中构建一个简单检查nid和vid的模块,并将其修改为bigint是多么可靠?这是解决问题的实用方法吗?它适用于所有内容类型,模块和cck吗?

-G。

2 个答案:

答案 0 :(得分:2)

由于hook_schema_alter只会在模块安装时触发,而不是构建一个自动管理它的复杂模块,因此您应该选择一个您知道将要使用的模块子集,安装它们并手动更新架构。

如果你有40亿个节点(其他海报说2bn,但是nid是无符号的,可用范围加倍),你真的不应该随意打开和关闭模块。你的建筑应该坚如磐石,并提前计划好。

另外,你想在Drupal中使用多个节点的用例是什么?即使在完全优化的情况下,任何类型的数据库操作都会非常非常密集,并且没有Drupal堆栈的重量(并且它喜欢昂贵的JOIN查询)。

Drupal可以很好地进行原型设计,但是当你点击xxx,000个节点时,你已经花费了大部分时间来手动调整所有的性能。如果您拥有世界一流的专业知识和资金,您可能会获得x,000,000个节点。对于更多内容,您可能希望开始考虑将数据卸载到专门针对大型数据集进行优化的数据库系统中,然后从Drupal作为服务访问它。

看看Hadoop和Cassandra的DBMS示例,它可以扩展到数十亿项目(Google,Facebook,Twitter等使用它们)。

答案 1 :(得分:1)

如果你的nid / vids将超过40亿,你可能还有其他一些问题要处理之前你还要关心这个问题:)同样,因为如果你不喜欢说200,000,000个内容和20个修订版,而不是像股票价格变化信息或我将其存储在自己的表格中的东西。