Меню

Актуальность данных о странах: источники, дата и стратегии

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

Опубликовано

  • источники
  • обновление
  • версия

Актуальность данных о странах — это не свойство файла, а свойство записи вместе с её происхождением. Любой статичный перечень стран рано или поздно расходится с реальностью: меняются названия, меняются денежные единицы, перекраиваются административные границы, появляются и закрываются системы почтовых индексов. Пока у записи не указано, откуда она взята и на какую дату верна, спор о расхождении превращается в спор о вкусах.

Разберём, почему данные устаревают, какие стратегии обновления существуют, зачем хранить дату получения и почему обновление справочника не должно переписывать историю.

Почему данные о странах устаревают?

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

Вторая причина — уточнение задним числом. Иногда запись не «устарела», а была неточной с самого начала: например, кто-то записал сокращённое название как официальное. Внешне это выглядит одинаково, но реакция должна быть разной: в первом случае нужно обновление, во втором — исправление ошибки.

Третья причина связана с самим источником. Публичные описания тоже обновляются: пересматриваются классификаторы, уточняются формулировки, меняются обозначения. Даже если ничего в мире не произошло, ваша копия может отличаться от текущей версии описания.

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

Какие изменения встречаются чаще всего?

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

Тип изменения Насколько заметно Что требует
Переименование страны или территории сразу бросается в глаза обновление отображаемого названия при сохранении кода
Смена денежной единицы заметно в расчётах пересмотр связанных правил и исторических записей
Изменение административного деления заметно в адресах пересмотр состава уровней и их проверок
Появление или отмена системы почтовых индексов заметно в формах пересмотр применимости поля
Уточнение формулировки в описании почти незаметно исправление без изменения поведения

Последняя строка самая частая и самая недооценённая. Уточнение формулировки не меняет правил, но меняет тексты подсказок и примеры. Если такие правки накапливаются без пересмотра, тексты начинают противоречить данным, и это обнаруживается только при разборе жалобы.

Зачем хранить дату получения записи?

Дата получения — это единственный способ отличить два принципиально разных вывода. Если значение отличается от ожидаемого, возможны две версии: либо ваша копия старая, либо ожидание неверно. Без даты выбрать между ними нельзя, и разбирательство заходит в тупик.

Дата полезна и для планирования. Зная, когда запись получена и как быстро меняется соответствующая область, можно решить, как часто её пересматривать. Записи по административному делению устаревают быстрее, чем записи по денежным единицам.

Третий довод в пользу даты — воспроизводимость. Если проверка зависела от конкретной версии записи, нужно уметь воспроизвести её состояние на тот момент. Иначе невозможно понять, почему тест вёл себя иначе месяц назад.

Что стоит хранить вместе с записью:

  • указание на источник, из которого взято значение;
  • дату получения;
  • область применения: к чему именно относится запись;
  • признак того, проверена ли запись после последнего обновления источника.

Как выбрать стратегию обновления?

Стратегий три, и они различаются не столько техникой, сколько стоимостью последующей проверки.

  1. Полная замена по расписанию. Простой и предсказуемый путь: копия регулярно заменяется целиком. Плюс в том, что расхождения не накапливаются. Минус в том, что каждая замена — это новая версия всех записей, и проверить нужно всё, даже то, что не менялось.
  2. Дополнение по частям. Обновляются только затронутые записи по мере появления сведений об изменениях. Дешевле по объёму проверки, но требует механизма, который отслеживает, что именно изменилось.
  3. Исправление по обращению. Запись меняется тогда, когда обнаружено конкретное расхождение. Самый дешёвый вариант по трудозатратам и самый опасный: без регулярного пересмотра расхождения копятся молча.

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

Почему обновление не должно переписывать историю?

Это правило нарушают чаще всего, потому что оно выглядит противоречащим здравому смыслу: если данные устарели, почему их нельзя обновить?

Ответ в том, что уже случившиеся события описываются значениями, действовавшими на тот момент. Заказ, оформленный по прежним правилам, остаётся таким, каким он был; документ, выданный с прежним названием, не становится другим оттого, что название изменилось. Если обновить справочник и позволить ему влиять на прошлое, исторические записи начнут меняться сами по себе, а вместе с ними — отчётность и сверки.

Практическое решение — снимок. В момент оформления значения копируются в саму запись и больше не зависят от справочника. Тогда обновление меняет будущие записи, не затрагивая прошлые. Это относится и к коду страны, и к отображаемому названию, и к применимости отдельных полей.

Такой снимок стоит делать осознанно и явно: если он получается случайно, как побочный эффект хранения, никто не сможет сказать, где он есть, а где нет.

Что делать при расхождении двух источников?

Расхождение источников — не аварийная ситуация, а постоянное состояние. Полезно заранее принять несколько решений.

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

Второе: вести список исключений. Если по конкретной записи вы сознательно отступаете от основного источника, это фиксируется явно, с основанием и датой. Без такого списка отступления существуют в виде устных договорённостей и теряются при смене команды.

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

Что важно разработчику

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

Второе: не делайте молчаливого обновления. Изменение записи, влияющее на проверки, должно оставлять след, иначе невозможно объяснить, почему поведение изменилось.

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

Четвёртое: помните, что часть полей вообще не следует за страной адреса, и обновление справочника их не касается.

Что делать дальше

Начните с ревизии: выпишите, сколько у вас сейчас источников сведений о странах и какие из них считаются основными. Если ответа нет, это первое, что стоит зафиксировать.

Сверить состав стран и регионов целиком удобно по каталогу стран и регионов; расхождения с ним обычно показывают, где ваша копия отстала. Дальше стоит посмотреть на измеримую сторону того же вопроса — как считать, что у вас заполнено, а что нет: этому посвящён материал про список покрытия данных по странам. А когда стран станет много, пригодится статья про масштабирование тестовых данных по странам.

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

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

Читать дальше

Статьи: Форматы адресов и данных личности по странам