Eliberat suport de tranzacții pentru Java.

Sursă originală: http://www-cs.ccny.cuny.edu/~akira/javaesr.desc.html

Coeficientul de control al concurrency (CC) sprijină serializabilitatea (SR) a tranzacțiilor. Aplicațiile legate de facturare, vânzarea cu amănuntul și suportul decizional împărtășesc o problemă comună a degradării performanței, adesea cauzată de interferențele dintre tranzacțiile de interogare lungă și tranzacțiile de actualizare. În special, aplicațiile de baze de date recente, construite pe mediul Internet, au descoperit că SR-ul strict este prea restrictiv. O problemă serioasă de performanță poate apărea atunci când aceste aplicații dezvoltate în partea superioară a interfeței Java / JDBC și Servlet se bazează în mare măsură pe utilizarea controlului firului Java pentru procesarea lor paralelă. Controlul thread-ului Java este de a menține punctele de sincronizare, nu pentru a obține un control sofisticat al concurenței. Serializabilitatea Epsilon (ESR) este introdus pentru a explora o posibilă soluție pentru această problemă.

Importanța serializării Epsilon: Conceptul ESR este propus pentru a atenua constrângerile SR, permițând unui istoric al tranzacțiilor să aibă o anumită inconsecvență limitată. În special, o sumă limitată de inconsecvență poate fi văzută prin tranzacții numai citite. Specificarea acestei toleranțe la erori se numește o specificație epsilon (epspec). Acesta poate fi definit ca o măsură a distanței în spațiul de stare a bazei de date. Un exemplu simplu este interogarea sumelor din contul de verificare — un manager de bancă dorește să știe câte milioane de dolari are un client în toate conturile de verificare cu rata de toleranță a eroriloro jumătate de milion (adică, epspec = 0,5 milioane de dolari). Eroarea rotundă a interogării este de o jumătate de milion de dolari. Această interogare returnează un rezultat semnificativ, chiar dacă ar putea conține erori din cauza unor conflicte care nu pot fi serializate cu unele actualizări, până la o jumătate de milion de dolari. Prin măsurarea distanțelor de stat pentru operațiile care nu sunt serializabile, mai degrabă forțând serializarea strictă, această interogare sumară se termină mult mai rapid. Divergențele de control (DC) algoritmi au fost proiectate pentru a lega cantitatea de inconsecvență pentru ESR în același mod în care controlul concurenței menține SR. De fapt, algoritmii DC extind algoritmi CC clasici, cum ar fi blocarea în două faze, validarea optimistă și timestamp-urile.

Java Serializabilitate: Un fir Java permite unui programator să scrie cod care se execută în paralel. Firele multiple trimit, de obicei, obiecte și, prin urmare, obiectele trebuie să utilizeze mecanisme de sincronizare pentru a coordona accesul la aceste obiecte. Controlul concurenței pentru un grup de fire active se bazează pe această sincronizare – doar un fir este permis să ruleze la un moment dat pe un obiect și toate firele concurente pentru a accesa acel obiect sunt în coada de așteptare. Sincronizarea thread-ului Java utilizează un primitiv de monitor care implementează o excludere reciprocă utilizând o blocare, unde granularitatea blocării este un obiect. Blocarea blocării este responsabilitatea programatorului deoarece monitorul nu suportă nici o rezoluție de blocare. Într-un mediu tipic de fire, membrii de date ai unui obiect de colecție, spun un obiect care are o serie de obiecte ca membri de date, sunt citite și scrise simultan. O abordare naivă pentru a menține o schimbare constantă a unui astfel de obiect este utilizarea unui primitiv de limbă Java, numit metodă sincronizată, care va secvențializa operațiile de citire și scriere. Aceasta ar genera totuși cheltuieli mari dacă aplicația construită pe obiectul de colectare citește în principal elementele de date. Amintiți-vă că mai multe operații de citire nu pot coexista, chiar dacă operația de citire nu modifică starea obiectului. Este mai bine dacă operațiile de citire multiple nu interferează; este chiar mai bine dacă o granulație de blocare este mai fină, adică fiecare element de date din matrice este ales pentru o unitate de blocare în locul obiectului de colectare (care deține astfel de elemente de date) ca întreg. Această observație ne motivează să explorăm cadrul ESR,

Semnificația proiectului: Acest proiect își propune să realizeze o alternativă la metoda de sincronizare Java. Conceptul ESR este aplicat pentru a realiza controlul diversității Java. Controlul diferențelor bazat pe două blocări de fază a fost pus în aplicare și corectitudinea lor a fost verificată în anul 2000, conform planului propus în propunerea inițială. Următoarea etapă este realizarea controlului divergent optimist (ODC) pentru sincronizarea firului Java. Prin optimism, înțelegem că verificarea blocării (citirii) atentă va fi amânată până când starea obiectului va fi schimbată printr-o operație de scriere. Fiecare fir care a citit un obiect va fi abandonat și re-executat, pentru a garanta serializabilitatea dacă unul dintre firele scrie acel obiect. Un blocaj nu va apărea niciodată în acest caz. Controlul optimist al concurenței, spre deosebire de blocarea în două faze (ca în implementarea monitorului Java) a fost propusă în anii 1980 în contextul procesării bazelor de date. Mai multe studii de simulare au arătat că, în mediul citit intensiv, metoda optimistă depășește alte metode de control al concurenței. Importanța utilizării metodei optime bazate pe ESR ar putea crește atunci când aplicația câștigă un avantaj de performanță în prezența unei cantități limitate de inconsecvență. Multe aplicații de citire intensă, construite pe Internet, ar putea beneficia de această abordare. Prin urmare, un obiectiv al proiectului este de a demonstra un potențial avantaj al utilizării Divergence Control pentru mediul de fire Java. Aceasta este una dintre primele lucrări care explorează extinderea controlului firului Java.