Как реализовать историческое управление версиями?
Мы находимся на ранних стадиях создания большого приложения C # MVC2 (мы также используем архитектуру Sharp и Nhibernate как часть экосистемы) на SQL 2008 R2, и одно из требований состоит в том, что все версии строк базы данных доступны в течение определенного периода времени. история.
Мы играли с идеей макета, похожего на:
id (PK)
RecordId
VERSIONID
и каждое редактирование записи приводит к созданию новой записи с тем же recordId и увеличенным versionId. Отображение записи будет тогда выполнено с чем-то вроде SELECT ... WHERE recordId = X AND versionId = MAX (versionId)
Снимок на каждую транзакцию не сработает (слишком много? И не доступен из приложения легко).
Но нам любопытно, какие другие реализации были опробованы с успехом, или потенциальные проблемы с нашим предложением.