У меня есть таблица, относящаяся к записям с использованием метода список смежности (таблица A ), и другая таблица, относящаяся к тем же записям с использованием закрывающей таблицы (таблица B ).Они оба захватывают один и тот же график, поэтому их нужно синхронизировать.
Вопрос в том, как лучше всего обновить таблицу закрытия?
На мой взгляд, естьтри варианта:
- Триггеры.На INSERT / UPDATE / DELETE в A , запустите sproc, который вычисляет новые замыкания. Минусы: изменяется на A , что приводит к длительной синхронной (блокирующей?) Операции;возможные тупики (?).
- Код приложения.Сузьте изменения в A для методов Add / Update / Delete (например, шаблон репозитория) и перегрузите их вызовами sproc, который вычисляет новые замыкания. Минусы: дополнительные поездки в оба конца в БД;возможная проблема целостности, если другая команда изменяет A или B в противоположное время одновременно;возможная проблема целостности, если, скажем, другое приложение решит изменить A , а не B .
- Обновление фона.Напишите вторичный процесс, который постоянно ищет обновления для A и вносит соответствующие обновления в таблицу замыканий. Минусы: сложный (дополнительный сервис для написания и управления);Windows без синхронизации.
Даже если нет «лучшего» варианта, любые мысли о компромиссах будут наиболее ценными!