Модуль для увеличения производительности

Главные вкладки

Аватар пользователя WiseMan WiseMan 13 сентября 2008 в 1:09

Кто что думает по поводу нового модуля Queryable Variables?

Разработчик пишет, что якобы модуль позволяет повысить производительность за счет перестройки работы с переменными Друпала и модулей в базе данных. Если я правильно понял.

Хотелось бы услышать мнение специалистов.

Комментарии

Аватар пользователя axel axel 13 сентября 2008 в 4:22

Сомнения есть. Посмотрел код модуля. Автор разнес разные типы данных по разным полям таблицы и по каждому из полей сделал индекс. Это быстрей для выборки данных, но обновление большего числа индексов не лучшим образом скажется на вставке данных (в таблице определено 13 индексов). Операция variable_get в версии автора использует 3 запроса с INNER JOIN по таблице к самой себе, в друпаловском variable_get — 1 запрос с WHERE по текстовому ключу. Операция variable_set чудесным образом определяет типы данных и раскладывает их по полочкам (разным полям записи) — замечательно, но эти доп. действия тоже не добавляют производительности.

На мой взгляд, если уж хочется использовать механизм variables друпала для хранения больших объемов данных (зачем?), то стоит поступиться эстетикой и разбить variable на несколько таблиц для хранения каждого типа данных в своей таблице. И понаделать функций типа variable_set_int(), variable_set_date() и т.д., т.е. возложить проверку типов на программиста.

Ещё в readme к модулю много букв про интеграцию с views, в коде тоже по этому поводу несколько ф-ций. Смотреть не стал, мейби там сокрыта основная ценность модуля, но предложенная автором альтернатива для variable_get/variable_set мне не понравилась.