ASP.NET MVC - duomenų bazės lygiagretumas

Turinys
Tvarkymas sutapimas Žiniatinklio programose tai yra viena iš temų, kuriai turime skirti šiek tiek kokybiško laiko, nes dėl pačios programos pobūdžio galime rasti atvejų, kai keli vartotojai turi sąveikauti su tuo pačiu elementu.
Pats savaime yra sąveika Tai ne problema, tikroji problema kyla tada, kai pakeitus ar palietus šį elementą būtina jį išsaugoti duomenų bazėje, o tada du ar daugiau vartotojų tuo pačiu metu nori atlikti veiksmą tuo pačiu elementu. mūsų logika turi apibrėžti elgesį, kad žinotume, kaip tinkamai tai spręsti.
Kaip paaiškinome pradžioje, sutapimas Kai du ar daugiau veikėjų dirba su mūsų programos elementu, sukeldami veiksmą prieš duomenų bazę.
Lygiagretumo atvejisProblemos gali kilti, kai pakeitimai prieštarauja, pavyzdžiui: naudotojas A išsaugojo vertę, tačiau vartotojas B tuo metu taip pat modifikavo ir išsaugojo kitą vertę, A vartotojo nuomone, jo turinys nebuvo pakeistas ir vartotojui B, niekas netrukdė jam pakeisti.
Tokie konfliktai gali pabloginti mūsų programos našumą vartotojo akyse, todėl turime įvertinti, ar mūsų turimos sritys bus vertos, ar neužprogramuoti lygiagrečiai.
Pažiūrėkime kai kuriuos lygiagretumo rūšys, tokiu būdu galime šiek tiek geriau suprasti, kokius veiksmus galime atlikti savo programose:
Pesimistinis sutapimasŠis metodas siūlo, kad naudojant duomenų bazę sudarytume prevencinis blokavimas naudojamo registro, todėl išvengiame, kad keli vartotojai vienu metu keistų vertę, todėl problema kyla dėl to, kad žiniatinklio aplinkoje neįmanoma jos kruopščiai naudoti, nes kadangi nėra būsenų, mes tikrai nežinome, ar užraktas buvo pritaikytas arba pašalintas, kol nebendraujame su serveriu, sukeldami painiavą ir naudojimo lėtumą.
Optimistiškas rinkėjų aktyvumasŠis kitas metodas vietoj to daro kažką šiek tiek labiau suderinamo su žiniatinkliu, prieš modifikuodamas duomenų bazėje jis patikrina, ar duomenys nebuvo pakeisti nuo to momento, kai buvo perskaityti duomenys, todėl palyginame įrašų vertes ir susijęs laukas, kuriame yra laiko žyma su data, laiku ir sekundėmis, kad būtų tiksliau.
ASP.NET MVC Jis nepalaiko pesimistinio požiūrio, todėl turime dirbti su optimistiniu, nes tam turime pateikti savo struktūroms datos laukus, kad būtų išsaugotas paskutinis jo keitimo laikas, kad galėtume žinoti, ar vertė pasikeitė gavus įrašą ir prieš išsaugodami tai galime gauti įspėjimą ir taip nuspręsti, ar perrašyti tas vertes, ar ne.
Pažiūrėkime nedidelį kodo pavyzdį, kaip galėtume tai patvirtinti:

Tada pastebime, kad atlikdami pakeitimus duomenų bazėje patvirtiname, ar laukas buvo pakeistas po to, kai mes perskaitėme, jei taip keliame išimtį, tokiu būdu galėsime imtis atitinkamų veiksmų, taip pat paliekame erdvės, kad galėtume dirbti su įvairiomis išimtimis, kurios gali būti sukurtos.
Šios pamokos pabaigoje mes jau žinome šiek tiek daugiau apie duomenų bazių sutapimą ir kaip išspręsti problemą ASP.NET MVC.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave