Tema: Re: .NET, SQL audit trail/log; change tracking; batch changes; restoreold/historydata
Autorius: 2x50
Data: 2013-03-22 00:16:35
O koks viso to tikslas - atvynioti duomenis iki tam tikro snapshoto ar 
tiesiog tureti galimybe suzinoti kaip duomenys atrode tam tikru laiko 
momentu?


On 2013.03.19 17:28, Laimis wrote:
> 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.
>
>
>
>
>
>

3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser