Mikä on samanaikaisuuden valvonta?

Tietojenhallinnan ohjelmoinnissa samanaikaisuuden hallinta on mekanismi, joka on suunniteltu varmistamaan, että samanaikaiset toiminnot tuottavat tarkkoja tuloksia. Nämä tulokset on myös saatava ajoissa. Rinnakkaisuuden valvonta näkyy hyvin usein tietokannoissa, joissa käyttäjien on haettavissa olevien tietojen välimuisti.

Ohjelmoijat yrittävät suunnitella tietokannan siten, että tärkeiden tapahtumien vaikutus jaettuun dataan on sarjassa vastaava. Tämä tarkoittaa sitä, että tiedot, jotka ottavat yhteyttä tapahtumaryhmiin, olisivat tietyssä tilassa, jossa tulokset ovat saatavissa, jos kaikki tapahtumat suoritetaan sarjassa ja tietyssä järjestyksessä. Joskus tiedot ovat virheellisiä, koska niitä muutetaan kahdella tapahtumalla samanaikaisesti.

On useita tapoja varmistaa, että tapahtumat suoritetaan peräkkäin, mukaan lukien keskinäisen poissulkemisen käyttö ja resurssin luominen, joka päättää, millä tapahtumilla on käyttöoikeus. Tämä on kuitenkin liioittelua, eikä ohjelmoija voi hyötyä rinnakkaisvalvonnasta hajautetussa järjestelmässä. Rinnakkaishallinta mahdollistaa useiden tapahtumien samanaikaisen suorittamisen pitäen nämä tapahtumat erillään toisistaan, mikä takaa linearoitavuuden. Yksi tapa toteuttaa samanaikaisuuden valvonta on käyttää yksinomaista lukkoa tietylle resurssille sarjaliikenteen suorituksissa, jotka jakavat resursseja. Tapahtumat lukitsevat käytettävän objektin, ja jos jokin muu tapahtuma pyytää pyyntöä lukitusta objektista, tapahtuman on odotettava objektin avaamista.

Tämän menetelmän käyttöönotto hajautetuissa järjestelmissä edellyttää lukonhallintaa – palvelimia, jotka myöntävät resurssilukkoja. Tämä on hyvin samankaltainen kuin keskitettyjen keskinäisten poissulkemisten palvelimet, joissa asiakkaat voivat pyytää lukkoja ja lähettää viestejä tietyn resurssin lukkojen vapauttamisesta. Sarjan suorituksen säilyttäminen on kuitenkin välttämätöntä samanaikaisuuden valvonnassa. Jos kaksi erillistä tapahtumaa käyttävät samanlaista objektijoukkoa, tulosten on oltava samankaltaisia ​​ja ikään kuin nämä tapahtumat olisi suoritettu tietyssä järjestyksessä. Resurssien käytön järjestyksen varmistamiseksi otetaan käyttöön kaksivaiheinen lukitus, mikä tarkoittaa, että tapahtumat eivät ole sallittuja uusia lukkoja, kun erillinen lukko vapautetaan.

Kaksivaiheisessa lukituksessa samanaikaisuuden valvontaa varten sen alkuvaihetta pidetään kasvuvaiheena, jolloin tapahtuma saa tarvittavan lukon. Seuraavaa vaihetta pidetään kutistumisvaiheena, jossa tapahtuman lukot on vapautettu. Tämän tyyppisessä lukituksessa on ongelmia. Jos tapahtumat keskeytetään, muut tapahtumat saattavat käyttää tietoja objekteista, joita keskeytetyt tapahtumat ovat muokanneet ja avanneet. Tämä johtaisi muiden tapahtumien keskeyttämiseen.