Drupal конвертирует nid / vid из int в bigint - PullRequest
1 голос
/ 18 февраля 2011

Я занят проектом, где значения nid и vid могут достигать своего предела.Мне нужен механизм для изменения текущих и будущих типов данных nid и vid с int на bigint.

Я подумал, что, возможно, был хук изменения схемы или что-то подобное.Я вижу, что есть ловушка hook_schema_alter.

Насколько надежным будет создание модуля, который просто проверяет nid и vid в схеме и модифицирует его, чтобы он стал bigint?Будет ли это практическим способом решения проблемы?Будет ли он работать со всеми типами контента, модульными и cck?

G.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Поскольку hook_schema_alter будет запускаться только при установке модуля, а не создавать сложный модуль, который управляет этим автоматически, вы должны выбрать подмножество модулей, которые, как вы знаете, будете использовать, установить их и вручную обновить схему.

Если у вас будет 4 миллиарда узлов (другой автор сказал, что 2 миллиарда, но nid не подписан, что удваивает доступный диапазон), вам действительно не следует включать и выключать модули случайным образом.Ваша архитектура должна быть надежной и спланированной заранее.

Кроме того, каков ваш вариант использования для того, чтобы хотеть столько узлов в Drupal?Любая операция с базой данных с таким количеством строк будет очень, очень интенсивной, даже если она полностью оптимизирована и без веса стека Drupal (и это любовь к дорогим запросам JOIN) поверх него.

DrupalЭто будет хорошо для создания прототипов того, что вы создаете, но к тому времени, когда вы достигнете ххх, 000 узлов, вы уже потратите большую часть своего времени на ручную настройку всего на производительность.Вы можете получить х, 000 000 узлов, если у вас есть серьезный опыт мирового уровня и финансирование.Более того, вам, вероятно, захочется начать разгрузку этих данных в систему баз данных, которая специально оптимизирована для огромных наборов данных, а затем получить доступ к ним из Drupal в качестве службы.

Взгляните на Hadoop и Cassandra дляпримеры СУБД, которые могут масштабироваться до миллиардов элементов (Google, Facebook, Twitter и т. д. используют их).

1 голос
/ 18 февраля 2011

Если ваши nid / vids получат более 4 миллиардов, у вас могут возникнуть другие проблемы, прежде чем вы позаботитесь об этом :) Кроме того, поскольку вы находитесь в D6, если это не так, скажем, 200 000 000 единиц контента и 20 пересмотры, а скорее что-то вроде информации об изменении цены акций или что-то, что я бы сохранил в своей таблице.

...