Sincronización
La sincronización de bae es la sincronización de coven: bae declara sus tablas y blobs, y coven hace el resto. Esta página describe los mecanismos como se aplican a bae; la propia documentación de coven cubre cada pieza en profundidad.
Captura
Enlace a esta seccióncoven posee la conexión SQLite, así que cada escritura que confirma bae pasa por él. Cuando se confirma una transacción que cambia tablas sincronizadas, coven registra cada cambio de fila, con las columnas que tocó, en la misma transacción, así que un cambio confirmado nunca se pierde, aunque la app se cierre un momento después. Sin cálculo de diferencias, sin marcas de suciedad: la captura es una propiedad de la conexión, y una escritura no puede perderse. El cambio espera en el dispositivo y se cifra y firma solo al enviarse, así que escribir no necesita clave ni red.
La secuencia
Enlace a esta secciónTodo el historial de una biblioteca en el hogar en la nube es una secuencia numerada de objetos. Cada uno contiene el lote de cambios de un dispositivo, una entrada de administración, una clave sellada para un miembro o un anuncio de snapshot. Cada dispositivo los aplica en orden y nunca se salta ninguno, así que cada dispositivo coincide en qué pasó y cuándo. Un dispositivo agrega el siguiente objeto solo después de haber aplicado todos los anteriores.
Una pasada de sincronización lee hacia adelante desde el último objeto que aplicó el dispositivo hasta que falta uno, comprueba la firma de cada uno y lo aplica, envía los cambios en cola de este dispositivo como un objeto nuevo y luego hace el trabajo que pide el estado nuevo: compartir o dejar de compartir acceso, tomar snapshots, borrar historial antiguo. Una pasada sobre una biblioteca tranquila cuesta dos solicitudes, sea cual sea su tamaño.
Las pasadas se ejecutan después de cambios locales, con un temporizador en reposo, e inmediatamente con Sincronizar ahora. Los fallos reintentan con un único calendario de espera, y todo lo que no puede avanzar nombra lo que está esperando, que bae muestra en su línea de estado de sincronización.
Combinación
Enlace a esta secciónQue dos dispositivos editen la misma biblioteca mientras están separados es el caso normal, no la excepción. Cuando sus cambios se encuentran:
- Las ediciones a filas distintas o columnas distintas se aplican ambas. Editar el año de un lanzamiento en el portátil y su sello en el escritorio produce ambos cambios.
- Las ediciones a la misma columna de la misma fila se ordenan por marca de tiempo: gana la edición posterior, de forma determinista e idéntica en cada dispositivo.
- Las eliminaciones ganan sobre ediciones concurrentes: una edición hecha a una fila que después se eliminó pierde, llegue cuando llegue, así que un lanzamiento eliminado en un dispositivo sigue eliminado aunque otro dispositivo lo haya editado en el mismo intervalo.
coven conserva cada valor reemplazado como valor perdido; bae no muestra ninguno ni descarta ninguno, así que no hay UI de conflictos. Cada dispositivo converge al mismo resultado desde cualquier orden de llegada.
Snapshots
Enlace a esta secciónUn dispositivo que se une o restaura no reproduce el historial desde el principio. Los dispositivos toman snapshots, el estado completo de la biblioteca en un punto de la secuencia, y una vez que la biblioteca y cada círculo privado tienen uno, el historial anterior se borra. Un dispositivo nuevo carga el snapshot más reciente y luego aplica solo lo que vino después. Un dispositivo que ha estado ausente más tiempo del que se conserva el historial hace lo mismo, y conserva sus ediciones sin enviar.
Versiones de esquema
Enlace a esta secciónEl esquema de bae es una sola migración, y cada cambio que envía un dispositivo registra la versión de esquema con la que se hizo. Un dispositivo que llega a un cambio de un esquema más nuevo que el suyo se detiene ahí, sin aplicar nada posterior, hasta que la app se actualiza; nada se pierde y nada se aplica mal.
Más gruesa que la versión de esquema es la era de compatibilidad: la revisión fijada de coven incluida en cada binario. Dos compilaciones sincronizan solo dentro de una era; una ruptura del formato de red de coven es una era nueva y un aumento de versión major en cada app. Antes de 1.0, cada compilación está en la era cero y los formatos cambian sin migración.
Qué ve el proveedor
Enlace a esta secciónEl proveedor almacena cambios, snapshots, registros de membresía y archivos cifrados; puede contar objetos, observar tamaños y tiempos y ver qué cuenta escribe cada objeto, y no puede leer nada del contenido. Cada objeto que trae un dispositivo se verifica por firma y membresía, antes de que algo toque la base de datos: el almacenamiento es un buzón tonto y no confiable. Consulta Cifrado e Identidad y membresía.