Preskoči na sadržaj

Sinkronizacija

Sinkronizacija bae sinkronizacija je coven-a: bae prijavljuje svoje tablice i binarne objekte, a coven radi ostalo. Ova stranica opisuje mehaniku kako se primjenjuje na bae; vlastita dokumentacija covena pokriva svaki dio u punoj dubini.

coven posjeduje SQLite vezu, pa svako pisanje koje bae potvrdi prolazi kroz njega. Kad se potvrdi transakcija koja mijenja sinkronizirane tablice, coven u istoj transakciji bilježi svaku promjenu retka sa stupcima koje je dotaknula, pa se potvrđena promjena nikad ne gubi, čak ni ako se aplikacija trenutak poslije sruši. Bez računanja razlika, bez prljavih zastavica: hvatanje je svojstvo veze, a pisanje se ne može propustiti. Promjena čeka na uređaju i šifrira se i potpisuje tek pri slanju, pa pisanje ne treba ni ključ ni mrežu.

Cijela povijest biblioteke u mjestu u oblaku jedan je numerirani niz objekata. Svaki sadrži skup promjena jednog uređaja, administratorski zapis, ključ zapečaćen za jednog člana ili najavu snimke. Svaki ih uređaj primjenjuje redom i nikad ne preskače nijedan, pa se svi uređaji slažu o tome što se dogodilo i kada. Uređaj dodaje sljedeći objekt tek nakon što je primijenio sve prethodne.

Prolaz sinkronizacije čita unaprijed od zadnjeg objekta koji je uređaj primijenio dok neki ne nedostaje, provjerava potpis svakog i primjenjuje ga, šalje promjene ovog uređaja na čekanju kao jedan novi objekt, a zatim obavlja posao koji traži novo stanje: dijeljenje ili ukidanje pristupa, izradu snimki, brisanje stare povijesti. Prolaz preko mirne biblioteke stoji dva zahtjeva, bez obzira na njezinu veličinu.

Prolazi se pokreću nakon lokalnih promjena, na mjeraču neaktivnosti i odmah na Sinkroniziraj sada. Neuspjesi se ponovno pokušavaju po jednom rasporedu odgode, a sve što ne može napredovati navodi na što čeka, što bae prikazuje u svom retku stanja sinkronizacije.

Dva uređaja koja uređuju istu biblioteku dok su odvojena normalan su slučaj, ne iznimka. Kad se njihove promjene susretnu:

  • Izmjene različitih redaka ili različitih stupaca obje se primjenjuju. Uređivanje godine izdanja na prijenosniku i njegova izdavača na desktopu daje oboje.
  • Izmjene istog stupca istog retka redoslijede se po vremenskoj oznaci: kasnija izmjena pobjeđuje, deterministički i jednako na svakom uređaju.
  • Brisanja pobjeđuju nad istodobnim izmjenama: izmjena retka koji je u međuvremenu izbrisan gubi, kad god stigla, pa izdanje izbrisano na jednom uređaju ostaje izbrisano čak i ako ga je drugi uređaj uredio u istom razdoblju.

coven čuva svaku zamijenjenu vrijednost kao izgubljenu vrijednost; bae nijednu ne prikazuje ni ne odbacuje, pa nema sučelja za sukobe. Svaki uređaj dolazi do istog rezultata iz bilo kojeg redoslijeda dolaska.

Uređaj koji se pridružuje ili obnavlja ne reproducira povijest od početka. Uređaji izrađuju snimke, potpuno stanje biblioteke u jednoj točki niza, a kad biblioteka i svaki privatni krug imaju svoju, povijest prije nje se briše. Novi uređaj učitava najnoviju snimku, a zatim primjenjuje samo ono što je došlo poslije. Uređaj koji je bio odsutan dulje nego što se povijest čuva radi isto i zadržava svoje neposlane izmjene.

Shema bae jedna je migracija, a svaka promjena koju uređaj pošalje bilježi verziju sheme s kojom je napravljena. Uređaj koji naiđe na promjenu iz novije sheme od svoje zaustavlja se ondje, ne primjenjujući ništa nakon nje, dok se aplikacija ne ažurira; ništa se ne gubi i ništa se ne primjenjuje pogrešno.

Grublja od verzije sheme je era kompatibilnosti: prikovana revizija covena ugrađena u svaku binarnu datoteku. Dvije gradnje sinkroniziraju se samo unutar ere; prekid žičanog formata covena nova je era i povećanje glavne verzije na svakoj aplikaciji. Prije 1.0 svaka je gradnja era nula i formati se mijenjaju bez migracije.

Što pružatelj vidi

Poveznica na ovaj odjeljak

Pružatelj sprema šifrirane promjene, snimke, zapise članstva i datoteke; može brojati objekte, promatrati veličine i vrijeme te vidjeti koji račun piše svaki objekt, a ne može čitati ništa od sadržaja. Svaki objekt koji uređaj povuče provjerava se, potpis i članstvo, prije nego što išta dotakne bazu podataka: pohrana je glupi, nepouzdani poštanski sandučić. Pogledajte Šifriranje i Identitet i članstvo.