Википедия:Вики-конференция 2012/Программа/Круглые столы/Википедия и базы данных: проблема актуализации статей
Ниже приведён примерный текст доклада участника Ivan A. Krestinin, с которого был начат круглый стол, выступлений других участников круглого стола здесь нет. Раздел «Выводы» также резюмирует только этот первый доклад, но не круглый стол в целом.
Введение
[править код]Первые версии многих статей Википедии были созданы как стабы на основе сведений из различных баз данных, например, статьи о реках России создавались на основе данных Государственного водного реестра, о населённых пунктах — с использованием базы ОКАТО и т. д. То есть в определённый момент времени была взята актуальная на тот момент версия базы данных и на основе этой версии были созданы статьи.
Проблема здесь в том, что после этого момента статья начала жить своей жизнью, а база данных своей. В статью вносились множественные правки, база, как правило, также не остаётся на месте, в ней также исправляются ошибки, актуализируются сведения. В результате часто можно видеть ситуацию, когда изменения в базе не отражены в статье.
Есть и обратная проблема, когда ошибка в базы была исправлена в статье, но в базу она не попала. Но эту проблему, пожалуй, надо обсуждать на другой конференции.
Если говорить техническим языком, то проблема в отсутствии связи между статьёй и базой данных. Я с различным уровнем успеха работал над установлением подобных связей в нескольких группах статей, там были статьи о населённых пунктах России и базы ОКАТО, реки России и Государственный водный реестр, космические аппараты и базы NASA. Подробно я остановлюсь на двух примерах..
Курсы валют
[править код]Начал с этого примера, так как задача относительно простая и получившееся решение получилось довольно удачным. Держателем базы данных здесь является центробанк, он ежедневно обновляет эту базу данных.
Сложность состоит в том, что число статей в которых нужно обновлять курсы не фиксировано, как и число мест в этих статьях. Решение такое — в статьи вставляется не сам курс, а шаблон. Таким образом все сведения подлежащие ежедневному обновлению оказываются сосредоточенными в единственном шаблоне. Шаблон имеет несколько параметров для выбора необходимых данных и формата их представления.
Далее создаётся робот, который ежедневно копирует сведения с сайта центробанка в шаблон. Однако здесь есть вторая сложность: робот будет перезаписывать шаблон. Если кто-то из редакторов заметит, что шаблон содержит ошибку и решит её исправить, то робот затрёт его изменение при очередном обновлении. Такое поведение робота плохо согласуется с принципами на которых построена Википедия. Для решения этой проблемы шаблон был разделён на две части: одна содержала логику форматирования данных, а вторая простой набор данных центробанка без каких-либо модификаций. Таким образом первая часть может без проблем редактироваться обычными участниками. Необходимости же редактировать вторую часть у обычных участников нет (как я надеялся), так как это просто копия сведений центробанка.
Однако выяснилось, что вторая часть также иногда требует коррекции, это относится к валютам имеющим фиксированные курсы, дело в том, что сведения о них обычно отсутствуют в данных центробанков. Эта проблема была решена введением дополнительного подшаблона-таблицы, который автоматически не обновлялся. Данные о курсе сначала ищутся в этой таблице, а затем в данных центробанка.
Список космических запусков
[править код]В качестве базы данных здесь выступает список поддерживаемый Джоном Макдауэлом. В нём указана дата запуска, стартовая площадка, тип ракета-носителя, тип полезной нагрузки, её имя и международного идентификатора.
Так как многие строки этой базы соответствуют военным запускам, то полные сведения становятся доступными лишь спустя много лет. Это приводит к регулярным обновлениям старых записей. Также несколько раз в месяц появляются новые записи.
Статьи требующие обновления — это 56 статей-списков разбитые по годам. Здесь также было применено решение с отделением данных от оформления, однако в обратном порядке: всё форматирование было вынесено в два отдельных шаблона, а в самих статьях остались только данные.
Был создан полуавтомат, который из исходной базы генерировал статьи. Однако проблемы начались после заливки: эти статьи начали регулярно исправляться обычными редакторами. Некоторые эти исправления относились к ошибкам моего алгоритма конвертации базы в формат Википедии и проблемам перевода (оригинальная база на английском языке), они особой проблемы не составляли, я просто дорабатывал свой алгоритм. Другие же проблемы касались уже самих данных и здесь уже дела обстояли куда хуже: об автоматическом обновлении речи уже не шло, приходилось вручную добавлять изменения редакторов к новой версии списка. Со временем частично этот процесс удалось частично автоматизировать, но процедура обновления всё равно остаётся весьма тяжёлой.
Выводы
[править код]Итак, суммируя свой опыт, могу отметить следующие решения, которые были удачными:
- Разнесение данных и отображения на отдельные страницы;
- Обработка данных из базы не роботом, а механизмом шаблонов Википедии, в идеале будет лучше, если робот будет просто копировать исходную базу без обработки;
- Разделение данных на основные (обновляемые автоматически) и поправки к ним (обновляемые вручную).
Остались нерешёнными такие проблемы:
- Сложность полученных механизмов, отсутствие стандартов реализации, индивидуальный подход к каждой задаче;
- Монополизация страниц ботом плохо согласуется с принципами Википедии;
- Неполная открытость схемы, в частности обычные участники не могут напрямую влиять на работу бота, обновляющего данные;
- Отсутствие заменимости автора такого решения, например, если у меня будут проблемы с каналом, свободным временем или ещё что-нибудь, то механизм обновления может сломаться. Из-за его сложности найти участника, который смог бы продолжить поддерживать механизм обновления проблематично.