Синхронизация нескольких таблиц при рефакторинге на сервере SQL

Мне нужна твоя мудрость. Я нахожусь в процессе капитального ремонта системы от классического asp до mvc и в процессе рефакторинг основной таблицы (назовем ее MAIN) в sql server 2008 r2. Таблица содержит более ста столбцов (я не несу за это ответственности), и я перемещаю структуру на 7 таблиц для повышения производительности, гибкости и удобства обслуживания. Однако новый и старый код ссылается на таблицу MAIN на многих старых и новых страницах. Я хочу переходить на новые таблицы плавно и постепенно, и это активный, основной сайт для бизнеса. Пожалуйста, помогите мне.

После того, как я перенес существующие данные,

Я думал о:

1.) Использование стандартных триггеров вставки, обновления и удаления как для таблицы MAIN, так и для семи таблиц NEW. Я должен был бы включить улов (http://stackru.com/questions/2237499/sql-server-trigger-loop) для бесконечных циклов триггера.

2.) Создание представления, эмулирующего таблицу MAIN, ссылающегося на таблицы NEW. Я бы использовал триггер INSTEAD OF в представлении для вставки и обновления таблиц через представление. Это позволило бы мне немедленно отбросить основную таблицу.

Что из этого имеет больше смысла? Или это в высшей степени глупо? И то и другое? Я определенно не dba, но мне нужно, чтобы это произошло правильно с первого раза.

Спасибо.

1 ответ

Похоже, ваше приложение имеет прямой доступ к таблице базы данных, что не очень хорошая идея, как вы сейчас выясните.

Рассматривали ли вы написание хранимых процедур для обработки операций CRUD, которые абстрагируют проект базы данных? Затем вы можете вызвать сохраненные процедуры из вашего приложения и передать все данные в качестве параметров. Хранимая процедура будет выполнять всю работу по обновлению всех новых таблиц (вы, конечно, должны использовать транзакцию), и вы можете немедленно прекратить использование своей старой таблицы.

Я думаю, что это будет проще, чем пытаться написать сложное представление, и, безусловно, дает вам большую наглядность, чем использование триггеров.

Другие вопросы по тегам