Как реализовать историческое управление версиями?

Мы находимся на ранних стадиях создания большого приложения C # MVC2 (мы также используем архитектуру Sharp и Nhibernate как часть экосистемы) на SQL 2008 R2, и одно из требований состоит в том, что все версии строк базы данных доступны в течение определенного периода времени. история.

Мы играли с идеей макета, похожего на:

id (PK)
RecordId
VERSIONID

и каждое редактирование записи приводит к созданию новой записи с тем же recordId и увеличенным versionId. Отображение записи будет тогда выполнено с чем-то вроде SELECT ... WHERE recordId = X AND versionId = MAX (versionId)

Снимок на каждую транзакцию не сработает (слишком много? И не доступен из приложения легко).

Но нам любопытно, какие другие реализации были опробованы с успехом, или потенциальные проблемы с нашим предложением.

Ответы на вопрос(1)

Ваш ответ на вопрос