Към съдържанието

Синхронизиране

Синхронизирането на bae е синхронизирането на coven: bae декларира своите таблици и blob-ове, а coven прави останалото. Тази страница описва механиката, както важи за bae; собствената документация на coven покрива всяка част в дълбочина.

coven притежава SQLite връзката, така че всеки запис, който bae потвърждава, минава през него. Когато се потвърди транзакция, която променя синхронизирани таблици, coven записва всяка промяна на ред, с колоните, които е засегнала, в същата транзакция, така че потвърдена промяна никога не се губи, дори ако приложението се срине миг по-късно. Няма сравняване на файлове, няма флагове за замърсено състояние: улавянето е свойство на връзката и запис не може да бъде пропуснат. Промяната чака на устройството и се шифрова и подписва едва при изпращане, така че записът не изисква ключ или мрежа.

Цялата история на библиотеката в облачния дом е една номерирана поредица от обекти. Всеки съдържа пакета промени на едно устройство, администраторски запис, ключ, запечатан за един член, или обявление за snapshot. Всяко устройство ги прилага поред и никога не пропуска нито един, така че всички устройства са съгласни какво и кога се е случило. Устройство добавя следващия обект едва след като е приложило всички предишни.

Проходът на синхронизиране чете напред от последния обект, който устройството е приложило, докато някой липсва, проверява подписа на всеки и го прилага, изпраща чакащите промени на това устройство като един нов обект и после върши работата, която новото състояние изисква: споделяне или отнемане на достъп, правене на snapshot-и, изтриване на стара история. Проход над спокойна библиотека струва две заявки, независимо от размера ѝ.

Проходите се изпълняват след локални промени, по таймер при бездействие и веднага при Синхронизиране сега. Неуспехите се повтарят по един график на отстъпване, а всичко, което не може да продължи, казва какво чака, което bae показва в реда си за състояние на синхронизирането.

Две устройства, които редактират една и съща библиотека, докато са разделени, са нормалният случай, не изключението. Когато промените им се срещнат:

  • Редакции по различни редове или различни колони се прилагат и двете. Редакция на годината на издание на лаптопа и на лейбъла му на настолния компютър дава и двете.
  • Редакции по една и съща колона на един и същ ред се подреждат по времеви отпечатък: по-късната редакция печели, детерминирано и еднакво на всяко устройство.
  • Изтриванията печелят над едновременни редакции: редакция на ред, който междувременно е изтрит, губи, когато и да пристигне, така че издание, изтрито на едно устройство, остава изтрито, дори ако друго устройство го е редактирало в същия интервал.

coven пази всяка заменена стойност като загубена стойност; bae не показва и не отхвърля нито една, така че няма интерфейс за конфликти. Всяко устройство стига до един и същ резултат при всеки ред на пристигане.

Устройство, което се присъединява или възстановява, не преиграва историята от началото. Устройствата правят snapshot-и, пълното състояние на библиотеката в една точка от поредицата, и щом библиотеката и всеки личен кръг имат такъв, историята преди него се изтрива. Ново устройство зарежда най-новия snapshot, после прилага само това, което е дошло след него. Устройство, което е отсъствало по-дълго, отколкото се пази историята, прави същото и запазва неизпратените си редакции.

Версии на схемата

Връзка към този раздел

Схемата на bae е една миграция и всяка промяна, която устройство изпраща, записва версията на схемата, с която е направена. Устройство, което стигне до промяна от по-нова схема от собствената си, спира там, без да прилага нищо след нея, докато приложението се обнови; нищо не се губи и нищо не се прилага погрешно.

По-едра от версията на схемата е ерата на съвместимост: фиксираната ревизия на coven, вградена във всеки бинарен файл. Две компилации синхронизират само в рамките на една ера; промяна, която чупи мрежовия формат на coven, е нова ера и увеличение на основната версия във всяко приложение. Преди 1.0 всяка компилация е ера нула и форматите се променят без миграция.

Какво вижда доставчикът

Връзка към този раздел

Доставчикът съхранява шифровани промени, snapshot-и, записи за членство и файлове; може да брои обекти, да наблюдава размери и времена и да вижда кой акаунт записва всеки обект, но не може да прочете нищо от съдържанието. Всеки обект, който устройство дърпа, се проверява по подпис и членство, преди нещо да докосне базата данни: хранилището е тъпа, недоверена пощенска кутия. Вижте Шифроване и Идентичност и членство.