విషయానికి వెళ్లండి

సమకాలీకరణ

bae సమకాలీకరణ అనేది coven సమకాలీకరణ: bae తన పట్టికలు మరియు blobs ను declare చేస్తుంది, మిగతాది coven చేస్తుంది. ఈ పేజీ అవి bae కు ఎలా వర్తిస్తాయో mechanics; coven సొంత docs ప్రతి భాగాన్ని పూర్తిగా వివరిస్తాయి.

coven SQLite connection కు యజమాని కాబట్టి, bae commit చేసే ప్రతి రాతా దాని ద్వారానే వెళ్తుంది. సమకాలీకరించబడే పట్టికలను మార్చే transaction commit అయినప్పుడు, coven అదే transaction లో ప్రతి వరుస మార్పునూ, అది తాకిన columns తో సహా, నమోదు చేస్తుంది; కాబట్టి commit అయిన మార్పు ఎప్పుడూ పోదు, యాప్ మరుక్షణం crash అయినా. diffing లేదు, dirty flags లేవు: capture connection లక్షణం, ఏ రాతా తప్పిపోదు. మార్పు పరికరంలో వేచి ఉండి పంపేటప్పుడు మాత్రమే గుప్తీకరించబడి సంతకం చేయబడుతుంది, కాబట్టి రాయడానికి కీ లేదా network అవసరం లేదు.

మేఘ నిల్వ ఇంట్లో గ్రంథాలయపు మొత్తం చరిత్ర objects యొక్క ఒక సంఖ్యాక్రమ వరుస. ప్రతి దానిలో ఒక పరికరపు మార్పుల సమూహం, ఒక admin entry, ఒక సభ్యుడి కోసం ముద్రించిన కీ, లేదా snapshot ప్రకటన ఉంటుంది. ప్రతి పరికరం వాటిని క్రమంగా అమలు చేస్తుంది, దేన్నీ దాటవేయదు; కాబట్టి ఏమి, ఎప్పుడు జరిగిందో అన్ని పరికరాలూ అంగీకరిస్తాయి. పరికరం ముందున్నవన్నీ అమలు చేసిన తర్వాతే తదుపరి object ను జోడిస్తుంది.

ఒక సమకాలీకరణ రౌండ్ పరికరం చివరిగా అమలు చేసిన object తర్వాత నుంచి లేనిది కనిపించే వరకు చదివి, ప్రతి దాని సంతకాన్ని తనిఖీ చేసి అమలు చేస్తుంది, ఈ పరికరపు వరుసలోని మార్పులను ఒక కొత్త object గా పంపుతుంది, తర్వాత కొత్త స్థితి కోరే పని చేస్తుంది: ప్రాప్యతను పంచుకోవడం లేదా తీసేయడం, snapshots తీయడం, పాత చరిత్రను తొలగించడం. నిశ్శబ్ద గ్రంథాలయంపై ఒక రౌండ్ దాని పరిమాణం ఏదైనా రెండు అభ్యర్థనలు మాత్రమే తీసుకుంటుంది.

రౌండ్లు స్థానిక మార్పుల తర్వాత, idle timer మీద, Sync Now మీద వెంటనే నడుస్తాయి. వైఫల్యాలు ఒకే backoff ప్రణాళికతో మళ్లీ ప్రయత్నిస్తాయి; ముందుకు వెళ్లలేనిది తాను దేని కోసం వేచి ఉందో చెబుతుంది, దాన్ని bae తన సమకాలీకరణ స్థితి వరుసలో చూపిస్తుంది.

రెండు పరికరాలు ఒకే లైబ్రరీని వేరువేరుగా edit చేయడం సాధారణ case, exception కాదు. వాటి changes కలిసినప్పుడు:

  • వేరు వరుసలు లేదా వేరు columns పై edits రెండూ apply అవుతాయి. Laptop లో విడుదల year edit చేసి desktop లో label edit చేస్తే రెండూ ఉంటాయి.
  • అదే వరుసలోని అదే column పై సవరణలు timestamp ద్వారా క్రమపరచబడతాయి: తర్వాతి సవరణ గెలుస్తుంది, నిర్ధారితంగా మరియు ప్రతి పరికరంలో ఒకేలా.
  • ఏకకాల సవరణలపై తొలగింపు గెలుస్తుంది: తర్వాత తొలగించబడిన వరుసకు చేసిన సవరణ ఎప్పుడు వచ్చినా ఓడిపోతుంది; కాబట్టి ఒక పరికరంలో తొలగించిన విడుదల, అదే వ్యవధిలో మరో పరికరం సవరించినా తొలగించినట్లే ఉంటుంది.

coven ప్రతి అధిగమించబడిన విలువనూ పోయిన విలువ గా ఉంచుతుంది; bae వాటిలో దేన్నీ చూపదు, తొలగించదు, కాబట్టి ఘర్షణ UI లేదు. వచ్చే క్రమం ఏదైనా, ప్రతి పరికరం అదే ఫలితానికి చేరుతుంది.

స్నాప్‌షాట్‌లు

ఈ విభాగానికి లింక్

చేరే లేదా పునరుద్ధరించే పరికరం చరిత్రను మొదటి నుంచి replay చేయదు. పరికరాలు snapshots తీస్తాయి, అంటే వరుసలోని ఒక బిందువు వద్ద గ్రంథాలయపు పూర్తి స్థితి; గ్రంథాలయానికీ ప్రతి వ్యక్తిగత circle కూ ఒకటి లభించిన తర్వాత దానికి ముందున్న చరిత్ర తొలగించబడుతుంది. కొత్త పరికరం తాజా snapshot ను లోడ్ చేసి, దాని తర్వాత వచ్చినది మాత్రమే అమలు చేస్తుంది. ఉంచిన చరిత్ర కంటే ఎక్కువ కాలం దూరంగా ఉన్న పరికరం కూడా ఇదే చేస్తుంది, తన పంపని సవరణలను ఉంచుకుంటుంది.

bae schema ఒకే migration, పరికరం పంపే ప్రతి మార్పూ అది సృష్టించబడిన schema వెర్షన్‌ను నమోదు చేస్తుంది. తనకంటే కొత్త schema మార్పుకు చేరే పరికరం అక్కడే ఆగుతుంది, యాప్ నవీకరించబడే వరకు దాని తర్వాత ఏదీ అమలు చేయదు; ఏదీ పోదు, ఏదీ తప్పుగా అమలు కాదు.

Schema version కంటే coarser compatibility era: ప్రతి binary లో baked pinned coven revision. రెండు builds ఒక era లోనే సమకాలీకరణ అవుతాయి; coven wire-ఆకృతి break కొత్త era మరియు ప్రతి app లో major version bump. Pre-1.0 లో ప్రతి build era zero, ఆకృతులు migration లేకుండా మారుతాయి.

Provider ఏమి చూస్తుంది

ఈ విభాగానికి లింక్

నిల్వ సేవ గుప్తీకరించిన మార్పులు, snapshots, సభ్యత్వ రికార్డులు, దస్త్రాలను ఉంచుతుంది; objects ను లెక్కించగలదు, పరిమాణం మరియు సమయం గమనించగలదు, ఏ ఖాతా ప్రతి object ను రాస్తుందో చూడగలదు, కానీ విషయం నుంచి ఏదీ చదవలేదు. పరికరం తెచ్చే ప్రతి object డేటాబేస్‌ను తాకే ముందు సంతకం మరియు సభ్యత్వం రెండింటితో తనిఖీ చేయబడుతుంది: నిల్వ ఒక నిష్క్రియ, నమ్మలేని తపాలా పెట్టె. గుప్తీకరణ మరియు గుర్తింపు మరియు సభ్యత్వం చూడండి.