Sinhronizacija podatkov

Sinhronizacija podatkov omogoča usklajeno delovanje programa MuLeMa na več računalnikih in v spletni aplikaciji. Podatki se med posameznimi računalniki izmenjujejo preko sinhronizacijskega strežnika, kjer so varno shranjeni tudi v primeru, če pride do okvare lokalnega računalnika.

Izmenjava podatkov med lokalnim računalnikom in sinhronizacijskim strežnikom se za zdaj izvaja le na zahtevo uporabnika. Vsi podatki se shranjujejo tudi lokalno, kar omogoča avtonomno delovanje v primeru, ko nimamo povezave z omrežjem in internetnim strežnikom.

Za sinhronizacijo podatkov so v glavnem meniju pod Datoteka->Sinhronizacija podatkov na voljo štirje ukazi:

Sinhronizacijski algoritmi poskrbijo, da se med lokalnimi računalniki in strežnikom pošiljajo le spremembe podatkov, tako da je omrežni promet čim manjši, prenosni časi pa temu ustrezno krajši.

Program MuLeMa nas ob izhodu še vedno vpraša, ali želimo shraniti spremembe. Če se odločimo, da jih ne shranimo, se bo program ob naslednjem zagonu odprl brez sprememb, ki smo ji prenesli iz strežnika, zato se bodo ponovno prenesle ob prvi naslednji sinhronizaciji.

Če smo spremembe ob izhodu shranili, želimo pa se vrniti na eno od prejšnjih stanj, lahko še vedno iz lokalnega arhiva naložimo eno od prejšnjih shranjenih verzij baze podatkov.

Princip delovanja in priporočila

V trenutni verziji programa (ver. 3.3.0) se izvaja sinhronizacija podatkov med lokalnim računalnikom in sinhronizacijskim strežnikom le na zahtevo uporabnika. Zaklepanje podatkovnih zapisov in samodejno izmenjevanje ni podprto. Zato moramo poznati osnovne principe delovanja in se držati nekaterih priporočil, če se želimo izogniti konfliktom, ki lahko nastanejo, če različni uporabniki istočasno spreminjajo isti podatkovni zapis.

V nadaljevanju sta primera, ko uporabnika istočasno spreminjata podatke, prvi primer prikazuje nekonfliktno, drugi pa konfliktno situacijo in poriporočilo, kako se ji v čim večji meri izognemo.

Predpostavimo, da podatke spreminjata uporabnika A in B (lahko bi jih bilo tudi več) vsak na svojem računalniku.

Primer regularnih sprememb: istočasna sprememba različnih zapisov
  1. Uporabnik A spremeni naslov osebe Janez Novak, uporabnik B pa istočasno naslov osebe Marija Mustar.
  2. Uporabnik A sinhronizira podatke s strežnikom. Sprememba naslova osebe Janez Novak je oddana na strežnik.
  3. Uporabnik B sinhronizira podatke s strežnikom. Sprememba naslova osebe Marija Mustar je oddana na strežnik. Sprememba naslova osebe Janez Novak je sprejeta v računalnik osebe B.
  4. Uporabnik A sinhronizira podatke. Sprememba osebe Marija Mustar je sprejeta v računalnik osebe A.

Pravilo: če se spremembe nanašajo na različne zapise, jih lahko istočasno spreminjamo na katerem koli računalniku brez omejitev. Vse spremembe se bodo uspešno prenesle med strežnikom in uporabniki. Enako bi veljalo v primeru, da bi uporabnik A spremenil naslov osebe Janez Novak, uporabnik B bi spremenil način plačila na polici te osebe, uporabnik C pa bi spremenil letno premijo zavarovalnemu produktu na isti polici. Ker se vsaka od teh sprememb nanaša na različne tipe zapisov, ki se sinhronitzirajo ločeno, ne pride do konfliktov, kljub temu, da so bile spremembe istočasno opravljene na različnih računalnikih.

Primer konflikta: istočasna sprememba podatkov istega zapisa
  1. Uporabnik A spremeni naslov osebe Janez Novak, uporabnik B pa istočasno telefonsko številko iste osebe.
  2. Uporabnik A sinhronizira podatke s strežnikom. Sprememba naslova osebe Janez Novak je oddana na strežnik.
  3. Uporabnik B sinhronizira podatke s strežnikom. Pri sinhronizaciji podatkov pride do konflikta, ker so podatki istega zapisa spremenjeni tako na strežniku kot na lokalnem računalniku. Program ponudi uporabniku B, da se odloči, ali bo uveljavljal svojo spremembo (in s tem povozil sprememembo uporabnika A), ali bo sprejel spremenjen zapis iz strežnika  (in s tem povozil spremembo, ki jo je naredil sam). Zaradi konflikta nujno pride do izgube ene od sprememb.

Pravilo: podatkov, ki se nanašajo na isti zapis (na primer iste osebe, police, produkta na isti polici,...) ne smemo spreminjati istočasno na različnih računalnikih, ker trenutno ni podprto zaklepanje zapisov in samodejna sinhronizacija.

Priporočilo: Redno, še posebej pa neposredno pred vnašanjem in po vnašanju sprememb v program, sinhronizirajmo podatke s strežnikom. S tem močno zmanjšamo možnost konfliktov, saj na minimum omejimo čas, v katerem bi lahko drugi uporabnik spremenil isti podatkovni zapis.