Mikä on lopullinen johdonmukaisuus?

Lopullinen johdonmukaisuus on ohjelmointimalli, jossa ohjelmoijat olettavat, että riittävän pitkän ajanjakson aikana ilman muutoksia järjestelmään tietyn ohjelman nykyinen versio jaetaan lopulta, kunnes jokainen ohjelman kopio on johdonmukainen. Lopullisen johdonmukaisuuden käsitettä käytetään ohjelmointimenetelmissä, kuten optimistisessa replikoinnissa, jaetussa muistissa ja hajautetuissa tapahtumissa. Tietokantojen osalta mahdollinen johdonmukaisuus saavutetaan kolmivaiheisella prosessilla. Ensinnäkin jaetut tiedot asetetaan saataville järjestelmässä; tätä seuraa pehmeä tila, jossa eri käyttäjät voivat edelleen työskennellä eri dataversioiden kanssa; ja lopuksi johdonmukaisuus saavutetaan, ja kaikilla tietokoneilla on pääsy identtisiin tietoihin.

Yksi näkyvimmistä tavoista soveltaa lopullista johdonmukaisuutta liittyy verkossa jaettaviin ohjelmistopäivityksiin. Muutaman sekunnin kuluttua päivityksen julkaisemisesta kukaan ei saa sitä; ei ole kulunut tarpeeksi aikaa ohjelmiston käyttäjille ladata ja asentaa päivitys. Tämä on “käytettävissä” -tila; Päivitys on olemassa, mutta sitä ei ole vielä jaettu. Ajan myötä, kun käyttäjät lataavat päivityksen, joillakin on se ja joillakin ei. Riittävän ajan kuluttua kaikki ohjelmistoa käyttävät ovat kuitenkin päivittäneet uusimpaan versioon. Tämä on lopullisen johdonmukaisuuden taustalla oleva lähtökohta: jos tarpeeksi aikaa annetaan, kaikki päivitykset leviävät täysin koko järjestelmässä.

Koska järjestelmä pyrkii lopulliseen johdonmukaisuuteen, konfliktit ovat väistämättömiä. Nämä tapahtuvat, kun ohjelmaversio tai tietokoneessa olevat tiedot eivät vastaa ohjelman “malliversiota”. Ohjelmat on yleensä perustettu tunnistamaan tällaiset ristiriidat ja hallitsemaan niitä. Kun tietyn tietokoneen tiedostot ovat vanhempia kuin kyseisen ohjelmiston tai tietojen uusin malliversio, järjestelmä yleensä pyytää käyttäjää aloittamaan päivityksen eron ratkaisemiseksi.

Käytettävissä on kolme mahdollista tapaa tehdä nämä resoluutiot: kirjoitus-, luku- ja asynkroninen korjaus. Kaikki nämä menetelmät tuovat ohjelman version tai datan yhdenmukaisen mallin mukaiseksi. Keskeinen ero näiden välillä liittyy siihen, miten järjestelmä korjaa korjaustoimenpiteet. Kaikilla tällaisilla toimilla on etuja ja haittoja.

Kirjoituksen korjauksessa tietokoneeseen tallennettuun koodiin tehdään muutoksia kirjoitusoperaation aikana, kun tietokone kirjoittaa jo jotain järjestelmän kiintolevylle. Tämä korjaa epäjohdonmukaisuuden ja tuo ohjelman tai tiedot mallin mukaiseksi, mutta hidastaa myös väliaikaisesti alkuperäistä kirjoitustoimintaa. Lukukorjausta varten korjaustoimenpide suoritetaan kiintolevyn lukusyklin aikana. Tämä puolestaan ​​hidastaa lukutoimintoa. Asynkronisessa korjauksessa korjaus tapahtuu, kun luku- tai kirjoitustoimintaa ei tapahdu, mikä johtaa CPU: n tyhjäkäyntijaksojen kulutukseen.