php - Drupal 将 nid/vid 从 int 转换为 bigint

标签 php mysql drupal drupal-6 drupal-modules

我正忙于一个项目,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/

相关文章:

php - 在多个页面上显示布局

mysql - 如何在 drupal View 中添加 DISTINCT、GROUP BY 子句

php - Drupal模板if语句

javascript - 如何在服务器部分反序列化 JSON 数据

php - 如何在 Yii 2 验证错误消息中添加自定义链接?

php - 为文章和评论提供单独的表格,还是为两者提供一个表格更好?

MySQL嵌套选择引用外部表?

MySQL Select where date = curdate() OR duedate = 从现在起正好 14 天

php - 不插入数据库。 PHP 和 MySQL

web-services - 如何使用 REST 使用来自 drupal 的查询字符串检索用户?