Шаблон:Data/ЧТМ: различия между версиями

Материал из ЧТМ
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Нет описания правки
Нет описания правки
Строка 13: Строка 13:
* {{Модуль|Cron/GenerateStats}} — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ.
* {{Модуль|Cron/GenerateStats}} — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ.
* {{Модуль|Data/GrandStats.json}} — огромная бандура для хранения генерируемого <code>Cron/GenerateStats</code> машинного кода.
* {{Модуль|Data/GrandStats.json}} — огромная бандура для хранения генерируемого <code>Cron/GenerateStats</code> машинного кода.
== Обновление баз данных ==
Пока актуально только для финального турнира ЧТМ, но планируется расширить.
; Обновление
# Обновите или исправьте статистику на нужной подстранице, убедитесь, что нет ошибок синтаксиса.
# Откройте служебную страницу '''{{БС|Служебная|Развёртка шаблонов}}''' и вставьте следующий код: {{Параметр|#invoke:Cron/GenerateStats{{!}}main}}
# Целиком скопируйте json-массив, перейдите на страницу '''[[Модуль:Data/GrandStats.json]]''', удалите всё её содержимое и замените на только что скопированный код.
{{Начало скрытого блока|Очистка базы данных (только для разработчиков, имеющих доступ к SQL-запросам на сервере)}}
JSON-массивы занимают несколько мегабайт и хранить в SQL горы устаревшего нечитаемого кода абсолютно бессмысленно. Поэтому необходимо периодически чистить кэш от старых расчётов следующим образом:
<markdown>**Шаг 1. Находим `old_id` этих гигантских правок**
Выполните следующий SQL-запрос:</markdown>
<syntaxhighlight lang="sql" line>
SELECT old_id, LENGTH(old_text) AS size, old_flags
FROM text
ORDER BY size DESC
LIMIT 10;
</syntaxhighlight>
<markdown>Поскольку обычные статьи весят килобайты, этот запрос мгновенно выведет вам топ самых тяжелых правок за всю историю вашей вики. На первых строчках вы увидите ваши три правки размером ~2800000 байт.
*Запишите их `old_id`.*
**Шаг 2. Обнуляем их вес (Освобождаем БД)**
Теперь мы просто превращаем этот машинный код в пустой, но валидный JSON-объект, чтобы не сломать парсер MediaWiki, если кто-то случайно откроет эту правку в истории. Выполните:</markdown>
<syntaxhighlight lang="sql" line>
UPDATE text
SET old_text = '{"info": "Любой текст."}',
    old_flags = 'utf-8'
WHERE old_id IN (НОМЕР, НОМЕР, НОМЕР);
</syntaxhighlight>
<markdown>*(Замените цифры в скобках на те `old_id`, которые вы нашли на первом шаге).*
**Почему `old_flags = 'utf-8'`?**
Иногда MediaWiki сжимает старые тяжелые правки и ставит флаг `gzip` или `utf-8,gzip`. Если мы заменяем сжатый бинарник на обычный текст, флаг `gzip` нужно обязательно убрать, иначе вики попытается «разархивировать» наш новый текст и выдаст ошибку. Флага `utf-8` или вообще пустой строки `''` будет достаточно.</markdown>
{{Конец скрытого блока}}

Версия от 22:38, 4 июня 2026

Список баз данных

База данных финального турнира ЧТМ (Data)

2006 • 2010 • 2014 • 2018 • 2022 • 2026 • 2030 • 2034 • 2038 • 2042 • 2046

База данных результатов всех турниров (Data/Tournaments)

2006 • 2009 • 2010 • 2013 • 2014 • 2015 • 2017 • 2018 • 2019 • 2020 • 2021 • 2022 • 2023 • 2024 • 2025 • 2026 • 2027 • 2028 • 2029 • 2030 • 2031 • 2032 • 2033 • 2034 • 2035 • 2036 • 2037 • 2038 • 2039 • 2040 • 2041 • 2042 • 2043 • 2044 • 2045 • 2046 • 2047 • 2048

Прочие базы данных
  • Data/Teams — словарь команд.
  • Data/RatingCalc — единое хранилище словарей очков, рангов и ручных переопределений для движка подсчёта рейтинга.
Технические страницы
  • Cron/GenerateStats — служебный скрипт, предназначенный для агрегации, расчёта и кэширования полной базы данных финального турнира ЧТМ.
  • Data/GrandStats.json — огромная бандура для хранения генерируемого Cron/GenerateStats машинного кода.

Обновление баз данных

Пока актуально только для финального турнира ЧТМ, но планируется расширить.

Обновление
  1. Обновите или исправьте статистику на нужной подстранице, убедитесь, что нет ошибок синтаксиса.
  2. Откройте служебную страницу Развёртка шаблонов и вставьте следующий код: {{#invoke:Cron/GenerateStats|main}}
  3. Целиком скопируйте json-массив, перейдите на страницу Модуль:Data/GrandStats.json, удалите всё её содержимое и замените на только что скопированный код.