Help:Кэширование концептов

From semantic-mediawiki.org
Руководство администратора
Скачивание
Установка
Настройка
Кэширование концептов (англ.)
Красивые URI (англ.)
SPARQL и RDF-хранилище (англ.)
Устранение проблем (англ.)
Обновление данных SMW (англ.)
Расширения (англ.)
Расширения MediaWiki (англ.)
Семантические расширения (англ.)
Руководство пользователя

Использование концептов в семантическом запросе часто приводит к серьезному увеличению времени его выполнения. Для решения этой проблемы Semantic MediaWiki предлагает специальный механизм, называемый кэширование концептов. В его основе лежит использование вычисленного ранее значения концепта вместо того, чтобы вычислять его при каждом использовании запроса. Данная возможность особенно полезна для больших вики, в которых важно контролировать процесс выполнения сложных запросов. В частности, с помощью специальных параметров вы можете определить, какие концепты должны вычисляться полностью при каждом обращении, а какие только в случае доступности кэша.

Увеличение производительности, достигаемое за счет кэширования концепта, сравнимо с эффектом его замены на категорию MediaWiki. Оно затрагивает все семантические запросы, которые используют этот концепт, а также процесс отображения страницы концепта. С другой стороны, использование предварительно вычисленного значения может привести к устареванию данных, т.е. страница концепта будет содержать данные не согласованные с остальной wiki. Для решения этой проблемы вы должны задать максимальное время хранения кэша. Если этот параметр будет превышен SMW обновит значение кэшированного концепта.

Создание и управление кэшированием концептов[edit]

По умолчанию SMW будет использовать кэшированные значения концептов не старше одного дня. Для кэширования концепта может быть использован служебный скрипт SMW_conceptCache.php. Как любой другой SMW скрипт он может быть выполнен с помощью смены директории на [SMWpath]/maintenance и запуска php SMW_conceptCache.php. В результате вы увидите документацию по использованию данного скрипта. Если вы получили ошибку, то скорее всего структура каталога вашей вики отличается от стандартной. В этом случае нужно ознакомиться с инструкцией запуска скриптов в вашей вики [SMWpath]/maintenance/README.

Скрипт SMW_conceptCache.php имеет три основных режима работы, которые выбираются с помощью следующих параметров:

  • php SMW_conceptCache.php --status показывает состояние кэшей для всех концептов на вашем сайте (включая концепты, кэширование которых не производилось). Вы можете использовать данный параметр для просмотра списка всех концептов вышего сайта.
  • php SMW_conceptCache.php --create создает новые или обновляет уже существующие значения кэшей для всех концептов.
  • php SMW_conceptCache.php --delete удаляет кэши для всех концептов.

Каждое из этих действий по умолчанию выполняется для всех концептов. Но существует набор параметров для ограничения области действия только на некоторые концепты:

  • --concept "Concept name" действие будет выполнено только для концепта с заданным именем. Имя не должно содержать наименование пространства имен. Если имя содержит пробелы, оно должно быть заключено в кавычки (").
  • --hard выполняется только для сложных концептов. SMW всегда использует кэшированное значение для сложных концептов.
  • --old <min> выполняется для концептов без кэшированных значений и со значениями старше <min> минут.
  • --update выполняется только для концептов, которые уже имеют кэшированные значения. Для выполнения действий над концептами без кэшей используйте параметр --old <min> с очень большим значением <min>.
  • -s <startid> выполняется только для концептов с id страницы не менее <startid>
  • -e <endid> выполняется только для концептов с id страницы не более <endid>

Перечисленные параметры могут использоваться совместно для более точного задания ограничений. Например, в результате следующего вызова

php SMW_conceptCache.php --create --update --old 30

будут обновлены кэши всех концептов, которые уже их имеют и при этом кэш старше 30 минут.

Настройка SMW для использования кэширования[edit]

В SMW может обработать концепт одним из стандартных способов:

  • Вычислить элементы концепта в момент необходимости на основе текущих данные вики.
  • Получит элементы концепта из кэша.
  • Проигнорировать концепт, расценив его как запрос без результатов.

По умолчанию SMW использует существующие кэши не старще суток. Если кэш не был найден и концепт не яляется сложным, то элементы концепта вычисляются на лету. Обычно ограничения по размеру и сложности для создания концептов менее строгие, чем для встроенных запросов. Поэтому вы можете создать концепт, который нельзя использовать в качестве встроенного запроса. По умолчанию результатом для таких концептов являются данные из кэша (независимо от даты его создания) или возвращается пустой список в случае отсутствия данных. Следующий раздел описывает параметры, которые используются для настройки этого поведения.

Какие запросы можно использовать в #ask?[edit]

Для определения "сложности" запроса используют три параметра: размер, глубина, а также типы особенностей, используемых в запросе. Размер - это количество условий в запросе. Глубина - это максимальная длина цепочки вызова свойств в выражении. Например, [[Some property::value]] имеет глубину 1, а [[property1.property2::value]] [[Category:Something]] имеет глубину 2. Особенности запроса - это типы используемых условий запроса. Вы можете использовать #ask с format=debug для определения размера и глубины запроса.

В SMW присутствуют настройки для задания максимального размера, глубины и набора доступных особенностей. Эти параметры могут быть использованы во встроенных запросах или специальных страницах. Значения по умолчанию следующие:

По умолчанию доступными являются все функции, но для больших вики их набор можно ограничить. Например, для того чтобы разрешить использовать в запросах только категории и концепции, можно было бы установить:

$smwgQFeatures = SMW_CATEGORY_QUERY | SMW_CONCEPT_QUERY;

в LocalSettings.php. Если вы хотите также разрешить использование объединения (пересечения), то можно использовать

$smwgQFeatures = SMW_CATEGORY_QUERY | SMW_CONCEPT_QUERY | SMW_CONJUNCTION_QUERY;

Если в соответствии с правилами запрос не разрешен, то он будет автоматически упрощен. Концепты могут использовать запросы, которые не подходят под данные требования. В этом случае концепт не может быть вычислен "в живую", а результаты будут возвращены только при наличии кэша. Концепты, которые попадают под данное определение, могут быть выбраны с помощью опции --hard в php SMW_conceptCache.php. Таким образом, пользователи могут создавать (предлагать) концепции, а администраторы создают кэши для них, если это возможно.

Какие запросы допустимы в концептах?[edit]

Для концептов SMW предоставляет такой же набор свойств, как описанный выше, но с другими значениями по умолчанию:

Они также могут быть изменены в LocalSettings.php. Параметры по умолчанию демонстрируют, что некоторые запросы могут быть разрешены в концептах и запрещены в #ask. Как было изложено выше, такие концепты не могут быть использованы пока для них не будет вычислен кэш.

Сложные и простые концепты[edit]

В предыдущих секциях было указано, что некоторые концепты в SMW считаются "сложными" ("hard"). По умолчанию концепт считается сложным, если он представляет запрос, который не может быть встроенным. Данное определение может быть изменено заданием значения свойства $smwgQConceptCaching. Допустимыми значениями являются:

  • $smwgQConceptCaching = CONCEPT_CACHE_HARD; Значение по умолчанию, как было описано выше.
  • $smwgQConceptCaching = CONCEPT_CACHE_ALL; Все концепты объявляются сложными, т.е. концепты никогда не вычисляются "в живую", а всегда полагаются на кэш.
  • $smwgQConceptCaching = CONCEPT_CACHE_NONE; Ни один из концептов не является сложным. Концепты все еще используют кэш, если это возможно (смотри следующую секцию), но в то же время не зависят от него. Даннаю опция может быть полезна, если создавать концепты могут только опытные пользователи, которым вы полностью доверяете.

Настройка по умолчанию в SMW $smwgQConceptCaching = CONCEPT_CACHE_HARD;

Когда кэш доступен для использования?[edit]

Сложные концепты всегда пытаются использовать кэш, поскольку они не могут ничего отобразить без кэша. Для простых концептов доступно вычисление результатов на лету, поэтому SMW использует время прошедшее с последнего обновления кэша для принятия решения о дальнейших действиях. Конфигурационный параметр $smwgQConceptCacheLifetime задает какое время (в минутах) с момента последнего обновления кэш считается доступным для использования. Если конфигурация SMW позволяет вычислять элементы концепции на лету, то старые кэши не используются .

$smwgQConceptCacheLifetime = 24*60;(default setting)

Как много элементов может быть закэшировано?[edit]

Настройка $smwgQMaxLimit определяет как много элементов для каждого концепта кэшируется.

$smwgQMaxLimit = 10000;(default setting)


Эта страница относится ко всем версиям SMW, начиная с версии 1.3.0 вплоть до самой последней версии.
      Другие языки : de

Concept caching ru 1.3.0