Поддерживать данные таблицы базы данных параллельно с новым дизайном базы данных - PullRequest
1 голос
/ 17 ноября 2010

В настоящее время я работаю над проектом с конечной целью преобразования устаревшей системы в настоящую архитектуру N-Layer. Начальная часть проекта включает преобразование базовой базы данных в истинный реляционный дизайн.

Базовая база данных в настоящее время работает на IBM iSeries. Таблицы определены с использованием DDS и содержат множество избыточных данных, без проверки целостности и плохо спроектированных ключей и т. Д. В основном, рефакторинг их для полностью нормализованного дизайна не является началом.

Новые таблицы будут разрабатываться с нуля. Они также будут на том же iSeries, но будут определены с помощью DDL. Это также будет включать в себя переписывание любой вставки или обновления кода по всему приложению для использования новых таблиц. Однако существует большое количество устаревших приложений, отвечающих за отчеты, показы и т. Д., Которые не будут переписаны на этом этапе и все еще будут считывать данные из исходных таблиц. Поэтому нам нужно синхронизировать данные в старых устаревших таблицах с новыми данными таблиц. Мне было интересно, если кто-нибудь когда-либо делал что-то подобное или были какие-либо предложения? В настоящее время я думаю либо:

1) Хранимые процедуры, которые вставляют, обновляют, удаляют из новой таблицы A, также будут делать то же самое с соответствующей устаревшей таблицей B. В какой-то момент строки хранимой процедуры потребуется изменить, чтобы остановить синхронизацию таблицы B * 1007. *

2) Поместить триггеры в таблицу A, которая также изменяет таблицу B. Затем триггеры будут удалены по линии ... хранимая процедура не нуждается в изменении, но будет ли она работать нормально с управлением транзакциями?

3) Удалите унаследованную таблицу B и заново создайте ее как представление таблицы A. Не уверен, будет ли это работать, так как таблица B работает с доступом по ключу, и я считаю, что представления не поддерживают это?

Было бы интересно услышать чьи-то мысли?

Приветствия

1 Ответ

2 голосов
/ 17 ноября 2010

Я предпочитаю номер 3. Я предполагаю, что вы запустите какой-то процесс преобразования, который возьмет существующие данные из устаревшей таблицы B и поместит их в новую таблицу A (или, более вероятно, в набор новых таблиц, поскольку это звучит как устаревшая таблица B денормализован).

Если ваши старые приложения, отвечающие за отчеты, дисплеи и т. Д., Не нуждаются в каких-либо обновлениях, тогда использование представлений является идеальной ситуацией. Я думаю, что сохранение двух отдельных копий данных (одна нормализованная, другая денормализованная) может превратиться в головную боль, особенно когда отчеты TPS менеджера не соответствуют тому, что он ввел в новую систему. По крайней мере, имея только одну копию данных, вам не нужно беспокоиться о выполнении исправлений в двух местах.

...