Практический пример использования¶
Воспользуемся примером аналитики, чтобы получить более четкое представление о пользе версионирования в различных сферах.
Основной процесс аналитики заключается в создании метрик, содержащих логику для оценки бизнеса и поведения пользователей.
Вспомним пример модели данных и добавим новый тип объекта Tourists
:
[
{
"name": "Country",
"type": "record",
"fields": [
{"name": "title", "type": "string"},
{"name": "phone_code", "type": ["null", "string"]}
],
"indexes": ["title"],
"relations": [
{ "name": "city_relation", "to": "City", "count": "many", "from_fields": "title", "to_fields": "country" }
]
},
{
"name": "City",
"type": "record",
"fields": [
{"name": "title", "type": "string"},
{"name": "country", "type": "string"},
{"name": "population", "type": "int"},
{"name": "capital", "type": "boolean"},
{"name": "postcodes", "type": {"type":"array", "items":"int"}}
],
"indexes": [
{"name":"primary", "parts":["title", "country"]},
"title",
"country",
"population",
"postcodes"
]
},
{
"name": "Tourists",
"type": "record",
"fields": [
{"name": "title", "type": "string"},
{"name": "country", "type": "string"},
{"name": "name", "type": "string"},
{"name": "number_of_visits", "type": "int"}
],
"indexes": ["title"],
"relations": [
{ "name": "city", "to": "City", "count": "many", "from_fields": "title", "to_fields": "сity" }
]
},
]
Tourists
уже имеет 12 версий, и сегодня нам нужно сделать очередную выборку о
количестве посещений туристами определенного города.
Для этого всегда использовался запрос на чтение Tourists
:
{
Tourists(title: "Moscow") {
title
country
number_of_visits
}
}
Но сегодня запрос, который отлично работал день назад, вызывает ошибки из-за измененных данных. Самый эффективный способ выяснить, что вызывает проблему – выполнить тот же запрос к предыдущей версии, в которой не было ошибки. В нашем случае – это версия 11:
{
Tourists(title: "Moscow", version: "11") {
title
country
number_of_visits
}
}
Note
Если же версия объекта нам неизвестна, сначала потребуется выполнить запрос на чтение исторических данных.
Но ответ снова возвращает ошибку. В этом случае необходимо сделать новый запрос к 10 версии объекта и продолжать делать запросы к предыдущим версиям, пока не будет найдена та, в которой нет ошибки.
Обнаружив такую версию, вы можете передать эти данные команде разработке. Сведения о том, с какой версии появилась ошибка, позволит им решить проблему гораздо быстрее. Вы же сможете временно использовать рабочую версию объекта, если она содержит необходимые данные для решения вашей задачи.
Таким образом, если вы используете версионирование, это упрощает отладку и приводит к быстрому исправлению ошибок данных.