optimista zár

Megosztott állam, amelyekről ismert, hogy védeni kell. Ellenkező esetben a párhuzamos szálak a „szünet”. Ez vonatkozik a web-alkalmazásokat. Annak ellenére, hogy a hiányzó józan konkurencia legtöbb web-orientált nyelv (PHP, Python, Ruby), konkurencia hiányzó web-alkalmazásokat. Kérés érkezik egy web-szerver párhuzamosan kerülnek végrehajtásra a különböző processzorok párhuzamos, stb Emiatt a következő kód helytelen:







Két alapvetően különböző módon az adatok integritásának biztosítása: az optimista és pesszimista zár. Pesszimista zár feltételezi, hogy ha mi végre a kódot, a versenyképes teljesítményt vezethet „hiba” az adatok, akkor ki kell zárni annak versenyképes végrehajtását. Ez szerializált patak ezen a ponton. Ezt úgy érjük el, elosztott vagy lock'ov vagy ügyleteket az adatbázisban.

Már van egy kis könyvtár, amely lehetővé teszi, hogy megvalósítsa a kizárólagos zár be a kódot. Használata hasonló a következő:

Pesszimista Zár elv hasonló Murphy. Azt feltételezi, hogy ha valami rossz nem történhet, meg fog történni. Ezzel szemben a pesszimista, optimista zár feltételezi, hogy a frissítés során az adatbázist leszünk az egyetlenek, akik meg kell változtatni. A legtöbb esetben ez úgy, hogy az optimizmus indokolt. Során azonban UPDATE'a azt ellenőrzi, hogy a rekord biztosan megváltozott, mivel azt olvasni. Ha változott, akkor kell olvasni a legújabb verzióját az adatbázis rekord, és ismételje meg a műveletet vele.







végrehajtás

Ez valósul meg, ez elég egyszerű. Ahhoz, hogy tárolja és minden rekord az adatbázisban és a változat azonosítót, amikor a felvétel, hogy ellenőrizze, hogy nem változott, és változtassa meg. Az algoritmus a következő.

Ebben az eljárásban, ha frissíted, akkor ellenőrizze, hogy a verziószám nem változott, ami azt jelenti, hogy egy bejegyzés az adatbázisban senki megváltozott. Ha a verziószám módosult, akkor kötelesek értesíteni az ügyfelet, hogy.

De van egy fogás. Hogy fog az ügyfél ezzel exception'om?

Ha végre optimista zár, akkor a modell kell tenniük a logikája megőrzése tárgyak, különben megduzzad, hogy írjon az ügyfelek. A modell biztosítani kell egy még inkább felhasználóbarát felület működését a tárgyakat. A képességeit PHP / 5.3, akkor tegye a következőket:

Előnyei „optimisták felett pesszimisták”

Ne takarja el a kliensek, amelyek nem változnak az állam

Képzeljük el a következő kódot:

Ügyfél szükségtelenné vigyázni lock'ah

Ha optimista zárolás ügyfél kód egyszerűbb és kevésbé ezt a kódot. Kevesebb kódot → kevesebb problémát.

Garantált az adatok védelme

Ha működik lock'ami megtörténhet négyféle problémák:

  • túl kevés zárak (törött adatok);
  • Ön túl sok zárak (holtpont éhen.);
  • Ön a rossz Loka (törött adatok);
  • szedése ezeket boszorkánymesterek, de nem abban a sorrendben (holtpont).

Ha azt szeretnénk, hogy pesszimista zár jól működik a nagyobb rendszerekben, az szükséges, hogy a programozók, akik az ügyféloldali kód, pontosan tisztában a lényege a verseny folyamat nagyon figyelmes, és hogy volt 5 kg agyban. Valószínűleg ők, mint a legtöbb más normális ember, az agy súlya mindössze 3 kg. Tehát ne nyomja le őket a feladattal modell - nevezetesen, hogy biztosítsa az adatok integritását.

A legrosszabb dolog, ami történhet abban az esetben optimista zárolás - az ügyfél kap kivétel. A legrosszabb dolog, ami történhet abban az esetben, pesszimista zár - akkor „megtört” adatokat.

Mit válasszam?




Kapcsolódó cikkek