Выбор архитектуры для смешанного сериализатора

Имеется система которая парсит здоровенный XLSX файл. Исторически сложилось так, что все данные раскладывались по различным таблицам и сохранялись в БД.

Сейчас данных стало слишком много и селекты из БД проходят слишком медленно (не смотря на то что мы не используем ORM, а формируем запросы напрямую в БД и сам сериализатор моделек работает максимально оптимально).

Мы реализовали бинарное сохранение данных (просто формируем byte[] и записываем в БД). Такой способ оказался почти в 10 раз быстрее. Постепенно решено отказываться от старого способа, за исключением данных необходимых для обработки средствами SQL (например формирование отчетов).

При выпиливании сталкнулся со следующей проблеммой. Поскольку бинарный сериализатор работал не везде а только в некоторых частях системы. Выяснилось что часть данных просто не сохранялись. (Но в отдельных таблицах эти данные есть)

Архитектура бинарного сериализатора позволяет сделать сериализатор новой версии и добавить сохранение недостающих полей. Но вот что делать с теми данными что уже есть? Написание скрипта для правки этих данных может занять очень много времени. Слишком большой шанс допустить ошибку и похерить данные на проде.

Хотелось бы как-то реализовать в архитектуре логику подгрузки данных, в случае если их не оказалось в бинарной версии. Или например завязаться на версию бинарного сериализатора - если версия старая, то нужно часть данных подсосать из таблиц. Сами сериализаторы реализованы в лучших традициях энтерпрайза.

Собственно никто не сталкивался с подобной проблемой? Может подскажете есть ли какие-то типовые решения?


Ответы (0 шт):