Типа в прошлой версии это был пол клиента, а теперь вес, в следующей - рост?
Ну примерно так. Уже встретил нечто подобное.
В общем я понял Вашу идею. Разбавлять XML_VER_2.0 полями из XML_VER_1.0.
Но тогда надо и в скрипты вшивать это все. И не получится чистого XML_VER_2.0.
Мне кажется это усложнит весь процесс.
На SO подсказали заюзать напрямую svn, git, mercurial, you_name_it, как я и думал. Тупо переключать ветки.
Сейчас обдумываю этот вариант. Он чуть сложнее в реализации, но чище по коду и проще в сопровождении, как мне кажется.
Обновил вопрос с примером.
Так наглядней.
Если следовать варианту "перевести XML_VER_1.0 в XML_VER_2.0", то последний должен будет выглядеть уже так:
XML_VER_2.0:
FIELD_1: 10
FIELD_2: 20
FIELD_3: 30
FIELD_4: 40
Но это примитивный пример.
Сам смысл полей может меняться от версии к версии.
Последнее.
Каждая выгрузка идет в базу (все версии).
Вышла новая версия. В ней нет поля. Но старая версия (она так же передается рядом с новой) это поле содержит. И оно идет в базу.
Другими словами, из новой версии поле исключили, но в старой оставили. В один период надо обрабатывать и новую и старую одновременно. Просто для новой отсутствующее поле получит некое дефолтное значение в базе.
Нет. Не пойдет.
OLD_FIELD на момент старой версии было актуально и в базе должно присутствовать, т.к. там вся история.
Это потом оно не нужно, но в какое-то время было необходимо и при всяких отчетах должно быть на этот период. А дальше уже просто будет либо null либо какое-то дефолтное.
Таким образом придется раздувать версию 1.2 старыми полями.
Может я не так понял?
К примеру есть версия 1.1 и 1.2.
В версии 1.1 есть поле OLD_FIELD. В версии 1.2 такого поля нет.
По вашей идее (если я верно ее понял) мы делаем обработчики только для версии 1.2, а версию 1.1 приводим к 1.2 и просто шлем по пайплайну, верно? Как тогда быть с полем OLD_FIELD?
В новой версии может не быть каких-то полей, а в старой они есть и должны пройти валидацию и сохраниться в базу. Либо же какие-то из полей поменяют свою иерархию. Такое уже наблюдается.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Ну примерно так. Уже встретил нечто подобное.
В общем я понял Вашу идею. Разбавлять XML_VER_2.0 полями из XML_VER_1.0.
Но тогда надо и в скрипты вшивать это все. И не получится чистого XML_VER_2.0.
Мне кажется это усложнит весь процесс.
На SO подсказали заюзать напрямую svn, git, mercurial, you_name_it, как я и думал. Тупо переключать ветки.
Сейчас обдумываю этот вариант. Он чуть сложнее в реализации, но чище по коду и проще в сопровождении, как мне кажется.