Здравствуйте, Аноним, Вы писали:
А>Просьба поделиться опытом/накидать ссылок на реализацию версионности состояния сущностей. То есть при каждом новом апдейте сущности надо сохранять его предыдущее состояние, при этом в дальнейшем должна быть возможность просмотреть все предыдущие состояния и работать с произвольной выбранной версией. Используется mssql + nhibernate.
Существует всего два подхода:
1. хранить все версии
entity {
id,
date,
/* fields */
}
primary_key entity (id, created)
Занимает много места, зато прост в реализации, быстр и удобен.
2. Хранить изменения
actual_entity {
/* fields */
}
entity_changes {
id,
date,
field,
old_value,
new_value
}
Занимает мало места, зато сложен в реализации, нетривиален в восстановлении предыдущей версии и требует размышлений над типом полей old_value и new_value.