我正忙于一个项目,nid 和 vid 值可能会达到极限。我需要一种机制来将当前和 future 的 nid 和 vid 数据类型从 int 修改为 bigint。
我想也许有一个模式改变钩子(Hook),或者类似的东西。我看到有一个名为 hook_schema_alter 的钩子(Hook)。
构建一个简单检查模式中的 nid 和 vid 并将其修改为 bigint 的模块有多可靠?这是解决问题的实用方法吗?它适用于所有内容类型、模块类型和 cck 吗?
G.
最佳答案
由于 hook_schema_alter 只会在模块安装时触发,而不是构建一个自动管理它的复杂模块,您应该选择您知道将要使用的模块子集,安装它们,然后手动更新模式。
如果你打算拥有 40 亿个节点(其他海报说 20 亿,但 nid 是无符号的,这使可用范围增加了一倍)你真的不应该随机打开和关闭模块。您的架构应该坚如磐石,并提前规划好。
此外,您在 Drupal 中需要那么多节点的用例是什么?任何类型的具有这么多行的数据库操作都将非常非常密集,即使在完全优化并且没有 Drupal 堆栈的重量(并且它喜欢昂贵的 JOIN 查询)在其之上也是如此。
Drupal 可以很好地构建您正在构建的原型(prototype),但是当您达到 xxx,000 个节点时,您将已经花费大部分时间手动调整所有内容以提高性能。如果您拥有世界一流的专业知识和资金,您可能会获得 x,000,000 个节点。对于更多内容,您可能希望开始考虑将该数据卸载到专门针对大型数据集优化的数据库系统中,然后从 Drupal 作为服务访问它。
查看 Hadoop 和 Cassandra,了解可以扩展到数十亿项的 DBMS 示例(Google、Facebook、Twitter 等使用它们)。
关于php - Drupal 将 nid/vid 从 int 转换为 bigint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040841/