Синхронизиране
Синхронизирането на bae е синхронизирането на coven: bae декларира своите таблици и blob-ове, а coven прави останалото. Тази страница описва механиката, както важи за bae; собствената документация на coven покрива всяка част в дълбочина.
Улавяне
Връзка към този разделcoven притежава SQLite връзката, така че всеки запис, който bae потвърждава, минава през него. Когато се потвърди транзакция, която променя синхронизирани таблици, coven записва всяка промяна на ред, с колоните, които е засегнала, в същата транзакция, така че потвърдена промяна никога не се губи, дори ако приложението се срине миг по-късно. Няма сравняване на файлове, няма флагове за замърсено състояние: улавянето е свойство на връзката и запис не може да бъде пропуснат. Промяната чака на устройството и се шифрова и подписва едва при изпращане, така че записът не изисква ключ или мрежа.
Поредицата
Връзка към този разделЦялата история на библиотеката в облачния дом е една номерирана поредица от обекти. Всеки съдържа пакета промени на едно устройство, администраторски запис, ключ, запечатан за един член, или обявление за snapshot. Всяко устройство ги прилага поред и никога не пропуска нито един, така че всички устройства са съгласни какво и кога се е случило. Устройство добавя следващия обект едва след като е приложило всички предишни.
Проходът на синхронизиране чете напред от последния обект, който устройството е приложило, докато някой липсва, проверява подписа на всеки и го прилага, изпраща чакащите промени на това устройство като един нов обект и после върши работата, която новото състояние изисква: споделяне или отнемане на достъп, правене на snapshot-и, изтриване на стара история. Проход над спокойна библиотека струва две заявки, независимо от размера ѝ.
Проходите се изпълняват след локални промени, по таймер при бездействие и веднага при Синхронизиране сега. Неуспехите се повтарят по един график на отстъпване, а всичко, което не може да продължи, казва какво чака, което bae показва в реда си за състояние на синхронизирането.
Сливане
Връзка към този разделДве устройства, които редактират една и съща библиотека, докато са разделени, са нормалният случай, не изключението. Когато промените им се срещнат:
- Редакции по различни редове или различни колони се прилагат и двете. Редакция на годината на издание на лаптопа и на лейбъла му на настолния компютър дава и двете.
- Редакции по една и съща колона на един и същ ред се подреждат по времеви отпечатък: по-късната редакция печели, детерминирано и еднакво на всяко устройство.
- Изтриванията печелят над едновременни редакции: редакция на ред, който междувременно е изтрит, губи, когато и да пристигне, така че издание, изтрито на едно устройство, остава изтрито, дори ако друго устройство го е редактирало в същия интервал.
coven пази всяка заменена стойност като загубена стойност; bae не показва и не отхвърля нито една, така че няма интерфейс за конфликти. Всяко устройство стига до един и същ резултат при всеки ред на пристигане.
Snapshot-и
Връзка към този разделУстройство, което се присъединява или възстановява, не преиграва историята от началото. Устройствата правят snapshot-и, пълното състояние на библиотеката в една точка от поредицата, и щом библиотеката и всеки личен кръг имат такъв, историята преди него се изтрива. Ново устройство зарежда най-новия snapshot, после прилага само това, което е дошло след него. Устройство, което е отсъствало по-дълго, отколкото се пази историята, прави същото и запазва неизпратените си редакции.
Версии на схемата
Връзка към този разделСхемата на bae е една миграция и всяка промяна, която устройство изпраща, записва версията на схемата, с която е направена. Устройство, което стигне до промяна от по-нова схема от собствената си, спира там, без да прилага нищо след нея, докато приложението се обнови; нищо не се губи и нищо не се прилага погрешно.
По-едра от версията на схемата е ерата на съвместимост: фиксираната ревизия на coven, вградена във всеки бинарен файл. Две компилации синхронизират само в рамките на една ера; промяна, която чупи мрежовия формат на coven, е нова ера и увеличение на основната версия във всяко приложение. Преди 1.0 всяка компилация е ера нула и форматите се променят без миграция.
Какво вижда доставчикът
Връзка към този разделДоставчикът съхранява шифровани промени, snapshot-и, записи за членство и файлове; може да брои обекти, да наблюдава размери и времена и да вижда кой акаунт записва всеки обект, но не може да прочете нищо от съдържанието. Всеки обект, който устройство дърпа, се проверява по подпис и членство, преди нещо да докосне базата данни: хранилището е тъпа, недоверена пощенска кутия. Вижте Шифроване и Идентичност и членство.