Коллеги,
Некоторое время не дает покоя тема версионности.
Допустим, тот же MS Word. От версии к версии формат документа меняется. И очень не хотелось бы, чтобы код "для обратной совместимости" рос пропорционально кол-ву версий, ибо: новый Office выходит раз в год-два. Если же продукт обновляется раз в квартал, то ой. Посему хотелось бы узнать, кто как борется с проблемой версионности данных без потери backward compatibility.
Как показало гугление на тему schema evolution, то основных подходов два: либо фиксировать версию данных при создании (т.е. аналогично интерфейсам — однажды объявленный, он не должен меняться, можно лишь объявлять новые интерфейсы), либо делать автообновление при открытии (путем user-defined кода).
Первый подход мне не нравится тем, что проблема версионности просто эскалируется в Data Access Layer, который должен содержать набор средств по унификации/преобразованию версий данных.
Второй подход не нравится именно "рукописностью" — простыня из методов FromV1ToV2, FromV2ToV3, FromV3ToV4 почему-то не воодушевляет
Возможно, кому-то чем-то близка подобная тема — прошу поделиться пинком в нужном направлении.