La sincronización de datos es el proceso de establecer coherencia entre los datos de una fuente a un almacenamiento de datos de destino y viceversa y la armonización continua de los datos a lo largo del tiempo. Es fundamental para una amplia variedad de aplicaciones, incluida la sincronización de archivos y la sincronización de dispositivos móviles, por ejemplo, para PDA . [1] [2] La sincronización también puede ser útil en el cifrado para sincronizar servidores de claves públicas . [3]
Soluciones basadas en archivos
Hay herramientas disponibles para sincronización de archivos , control de versiones ( CVS , Subversion , etc.), sistemas de archivos distribuidos ( Coda , etc.) y duplicación ( rsync , etc.), en el sentido de que todos estos intentan mantener sincronizados conjuntos de archivos. Sin embargo, solo las herramientas de sincronización de archivos y control de versiones pueden manejar modificaciones en más de una copia de los archivos.
- La sincronización de archivos se utiliza comúnmente para realizar copias de seguridad en el hogar en discos duros externos o para actualizarlos para su transporte en unidades flash USB . El proceso automático evita la copia de archivos ya idénticos, por lo que puede ahorrar un tiempo considerable en comparación con una copia manual, siendo también más rápido y menos propenso a errores. [4]
- Las herramientas de control de versiones están diseñadas para tratar situaciones en las que más de un usuario intenta modificar simultáneamente el mismo archivo, mientras que los sincronizadores de archivos están optimizados para situaciones en las que solo se editará una copia del archivo a la vez. Por esta razón, aunque las herramientas de control de versiones se pueden utilizar para la sincronización de archivos, los programas dedicados requieren menos gastos generales .
- También se puede considerar que los sistemas de archivos distribuidos garantizan la sincronización de varias versiones de un archivo. Esto normalmente requiere que los dispositivos que almacenan los archivos estén siempre conectados, pero algunos sistemas de archivos distribuidos como Coda permiten una operación desconectada seguida de reconciliación. Las funciones de fusión de un sistema de archivos distribuido suelen ser más limitadas que las de un sistema de control de versiones porque la mayoría de los sistemas de archivos no mantienen un gráfico de versiones.
- Espejo (computación) : un espejo es una copia exacta de un conjunto de datos. En Internet, un sitio espejo es una copia exacta de otro sitio de Internet. Los sitios espejo se utilizan más comúnmente para proporcionar múltiples fuentes de la misma información y son de particular valor como una forma de proporcionar acceso confiable a grandes descargas.
Modelos teóricos
Existen varios modelos teóricos de sincronización de datos en la literatura de investigación, y el problema también está relacionado con el problema de la codificación Slepian-Wolf en la teoría de la información . Los modelos se clasifican en función de cómo consideran que los datos están sincronizados.
Datos desordenados
El problema de sincronizar datos desordenados (también conocido como el problema de conciliación de conjuntos ) se modela como un intento de calcular la diferencia simétrica entre dos equipos remotos y de números de b-bit. [5] Algunas soluciones a este problema se caracterizan por:
- Transferencia al por mayor
- En este caso, todos los datos se transfieren a un host para realizar una comparación local.
- Sincronización de marca de tiempo
- En este caso, todos los cambios en los datos están marcados con marcas de tiempo. La sincronización continúa transfiriendo todos los datos con una marca de tiempo posterior a la sincronización anterior. [6]
- Sincronización matemática
- En este caso, los datos se tratan como objetos matemáticos y la sincronización corresponde a un proceso matemático. [5] [7] [8]
Datos ordenados
En este caso, dos cadenas remotas y necesita ser reconciliado. Normalmente, se supone que estas cadenas difieren hasta en un número fijo de ediciones (es decir, inserciones, eliminaciones o modificaciones de caracteres). Entonces, la sincronización de datos es el proceso de reducir la distancia de edición entre y , hasta la distancia ideal de cero. Esto se aplica en todas las sincronizaciones basadas en sistemas de archivos (donde se ordenan los datos). Muchas aplicaciones prácticas de esto se comentan o se mencionan anteriormente.
A veces es posible transformar el problema en uno de datos desordenados a través de un proceso conocido como tejas (dividir las cadenas en tejas [ aclaración necesaria ] ). [9]
Manejo de errores
En los sistemas tolerantes a fallas, las bases de datos distribuidas deben poder hacer frente a la pérdida o corrupción de (parte de) sus datos. El primer paso suele ser la replicación , que implica realizar varias copias de los datos y mantenerlas actualizadas a medida que se realizan los cambios. Sin embargo, es necesario decidir en qué copia confiar cuando se produce la pérdida o corrupción de una instancia.
El enfoque más simple es tener una única instancia maestra que sea la única fuente de verdad. Los cambios se replican en otras instancias, y una de esas instancias se convierte en el nuevo maestro cuando falla el antiguo.
Paxos y Raft son protocolos más complejos que existen para resolver problemas con efectos transitorios durante la conmutación por error, como dos instancias que piensan que son el maestro al mismo tiempo.
El intercambio secreto es útil si las fallas de nodos completos son muy comunes. Esto mueve la sincronización de un proceso de recuperación explícito a ser parte de cada lectura, donde una lectura de algunos datos requiere recuperar datos codificados de varios nodos diferentes. Si es posible que haya datos corruptos o desactualizados en algunos nodos, este enfoque también puede beneficiarse del uso de un código de corrección de errores .
Los DHT y Blockchains intentan resolver el problema de la sincronización entre muchos nodos (de cientos a miles de millones).
Ver también
- SyncML , un estándar principalmente para la sincronización de calendario, contactos y correo electrónico
- Sincronización (informática)
Referencias
- ^ Agarwal, S .; Starobinski, D .; Ari Trachtenberg (2002). "Sobre la escalabilidad de los protocolos de sincronización de datos para PDA y dispositivos móviles". Red IEEE . 16 (4): 22-28. CiteSeerX 10.1.1.12.5572 . doi : 10.1109 / MNET.2002.1020232 .
- ^ S. Braun; R. Carbon; M. Naab (2016). "Pilotando un ecosistema de aplicaciones móviles para la agricultura inteligente". Software IEEE . 33 (4): 9-14. doi : 10.1109 / MS.2016.98 .
- ^ "sks.dnsalias.net" . Archivado desde el original el 5 de marzo de 2007 . Consultado el 17 de julio de 2019 .
- ^ A. Tridgell (febrero de 1999). "Algoritmos eficientes de ordenación y sincronización" (PDF) . Tesis doctoral. La Universidad Nacional de Australia. Cite journal requiere
|journal=
( ayuda ) - ^ a b Minsky, Y .; Ari Trachtenberg ; Zippel, R. (2003). "Establezca la reconciliación con una complejidad de comunicación casi óptima". Transacciones IEEE sobre teoría de la información . 49 (9): 2213–2218. CiteSeerX 10.1.1.73.5806 . doi : 10.1109 / TIT.2003.815784 .
- ^ "Manuales de la base de conocimientos para desarrolladores de Palm" . Archivado desde el original el 11 de marzo de 2002 . Consultado el 9 de enero de 2007 .
- ^ Ari Trachtenberg ; D. Starobinski; S. Agarwal. "Sincronización rápida de PDA mediante interpolación polinomial característica" (PDF) . IEEE INFOCOM 2002 . doi : 10.1109 / INFCOM.2002.1019402 .
- ^ Y. Minsky y A. Trachtenberg, Reconciliación de conjuntos escalables, Conferencia de Allerton sobre comunicación, control y computación, octubre de 2002
- ^ S. Agarwal; V. Chauhan; Ari Trachtenberg (noviembre de 2006). "Conciliación de cadenas de ancho de banda eficiente mediante rompecabezas" (PDF) . Transacciones IEEE en sistemas paralelos y distribuidos . 17 (11): 1217-1225. doi : 10.1109 / TPDS.2006.148 . Consultado el 23 de mayo de 2007 .