Sveiki, Toks principinis klausimas: pačiam pakeitimų žurnalui (change tracking; audit trail) — aibė įvairių sprendimų (pradedant ORM, t.y. NHibernate teikiamais modeliais, funkcionalumu), tačiau paviršutiniškai kol kas nepavyksta sugūglint sprendimo, kaip organizuoti duomenų atstatymą ir visą duomenų atstatymo (undo/redo) grandinę laike. Galvoje greitai išsikeroja kompleksiški medžiai ir netrunka išryškėti loginio duomenų nesuderinamumo problema (kai duomenys iš kažkokio praeities taško tiesiog negalėtų būti atstatomi, nes jie griauna kitų/paskesnių duomenų loginį teisingumą/suderinamumą, struktūras ir pan.), todėl nieko gudresnio, kaip tik nuoseklų rewind in time nesugalvoju. Iš čia kyla šiokia tokia intuicija, kad paprastas principinis sprendimas — vargiai įmanomas (reikia tiesiog programuoti modelius, sekti suderinamumą), tačiau norisi tikėti, kad egzistuoja bent jau teoriniai modeliai ar net kažkokie praktiniai framework'ai/modeliai šiam reikalui. Kad nebūtų tik „daug raidžių“, tai konkretus pavyzdys — aibės kodų keitimas (batch changes). Jei vienu ypu pervadinama aibės įrašų Id ir norima audituoti tokius pakeitimus, tai galiausiai gaunamas maždaug toks (supaprastintas) modelis: [Change tracking header] ct_id old_val new_val 1 A B 2 B C <..> - - 9 Y Z [Change tracking data] ct_id ref_id 1 1 1 2 1 3 <...> <...> 1 k 2 1 2 2 <...> <...> 2 j 9 1 9 2 <...> <...> 9 m Čia ref_id — susijusių įrašų, kurių kodai/laukai buvo keisti, Id. Taigi, turime kodų keitimo laike grandinę (old_val -> new_val/old_val -> new_val/old_val -> ...), pvz.: A -> B -> C -> D -> ... -> Z ir poreikį atkurti duomenis (atstatyti pakeitimus) į tam tikrą kodo reikšmę (pavyzdžiui B). Sykį atstatyti — dar ne problema, nes galima nukeliauti grandine iki galo (restore point) ir visiems susijusiems įrašams (ref_id), kurių kodai nebuvo pavieniui pakeisti, pakeisti kodą į senąją reikšmę. Tačiau kaip po to atstatyti ir dar kelias/skirtingas tos pačios grandinės praeities reikšmes ir — SVARBIAUSIA — konstruoti šių pakeitimų/atstatymų undo/redo grandinę, hierarchijas, tai jau, kaip rašiau, galvoje greitai sužaliuoja džiunglės... :-) Ačiū už bet kokias nuorodas į šio reikalo teorinius skaitinius.