
La sincronización de datos es el proceso de establecer coherencia entre los almacenes de datos de origen y destino , y la armonización continua de los datos a lo largo del tiempo. Es fundamental para una amplia variedad de aplicaciones, incluyendo la sincronización de archivos y la sincronización de dispositivos móviles. La sincronización de datos también puede ser útil en el cifrado para sincronizar servidores de clave pública .
La sincronización de datos es necesaria para actualizar y mantener múltiples copias de un conjunto de datos coherentes entre sí o para mantener la integridad de los datos , Figura 3. [ 1 ] Por ejemplo, la replicación de bases de datos se utiliza para mantener múltiples copias de datos sincronizadas con servidores de bases de datos que almacenan datos en diferentes ubicaciones.
Ejemplos
Algunos ejemplos son:
- Sincronización de archivos , como por ejemplo sincronizar un reproductor de MP3 portátil con un ordenador de sobremesa;
- Los sistemas de archivos en clúster son sistemas de archivos que mantienen datos o índices de forma coherente en todo un clúster informático ;
- Coherencia de caché , que consiste en mantener múltiples copias de datos sincronizadas en múltiples cachés ;
- RAID , donde los datos se escriben de forma redundante en varios discos, de modo que la pérdida de un disco no conlleva la pérdida de datos;
- Replicación de bases de datos , donde las copias de los datos de una base de datos se mantienen sincronizadas, a pesar de una posible gran separación geográfica;
- El registro de transacciones es una técnica utilizada por muchos sistemas de archivos modernos para garantizar que los metadatos de los archivos se actualicen en un disco de manera coherente y consistente.
Desafíos
Algunos de los desafíos que puede enfrentar el usuario en la sincronización de datos:
- complejidad de los formatos de datos;
- en tiempo real;
- seguridad de los datos;
- calidad de los datos;
- actuación.
Complejidad de los formatos de datos
Los formatos de datos tienden a volverse más complejos con el tiempo a medida que la organización crece y evoluciona. Esto conlleva no solo la creación de interfaces sencillas entre las dos aplicaciones (origen y destino), sino también la necesidad de transformar los datos al transferirlos a la aplicación de destino. Las herramientas ETL (extracción, transformación y carga) pueden ser útiles en esta etapa para gestionar la complejidad de los formatos de datos.
En tiempo real
En los sistemas en tiempo real, los clientes desean ver el estado actual de su pedido en la tienda en línea, el estado de la entrega de un paquete (seguimiento en tiempo real), el saldo de su cuenta, etc. Esto demuestra la necesidad de un sistema en tiempo real, que además se actualiza constantemente para permitir un proceso de fabricación fluido, por ejemplo, solicitando materiales cuando la empresa se queda sin existencias, sincronizando los pedidos de los clientes con el proceso de fabricación, etc. En la vida real, existen numerosos ejemplos donde el procesamiento en tiempo real proporciona una ventaja competitiva y un éxito rotundo.
seguridad de los datos
No existen reglas ni políticas fijas para garantizar la seguridad de los datos. Estas pueden variar según el sistema que se utilice. Aunque la seguridad se mantenga correctamente en el sistema de origen que captura los datos, es fundamental aplicar las medidas de seguridad y los permisos de acceso a la información también en los sistemas de destino para prevenir cualquier posible uso indebido. Este es un asunto grave, especialmente cuando se trata de información secreta, confidencial y personal. Por lo tanto, debido a la sensibilidad y confidencialidad, la transferencia de datos y toda la información intermedia deben estar cifradas.
Calidad de los datos
La calidad de los datos es otra limitación importante. Para una mejor gestión y para mantener una buena calidad de los datos, la práctica habitual es almacenarlos en una única ubicación y compartirlos con diferentes personas, sistemas o aplicaciones desde distintas ubicaciones. Esto ayuda a prevenir inconsistencias en los datos.
Actuación
El proceso de sincronización de datos consta de cinco fases diferentes:
- Extracción de datos del sistema de origen (o maestro, o principal);
- transferencia de datos ;
- transformación de datos ;
- Carga de datos en el sistema de destino.
- actualización de datos
Cada uno de estos pasos es fundamental. En caso de manejar grandes cantidades de datos, el proceso de sincronización debe planificarse y ejecutarse cuidadosamente para evitar cualquier impacto negativo en el rendimiento.
Soluciones basadas en archivos
Existen herramientas para la sincronización de archivos , el control de versiones ( CVS , Subversion , etc.), los sistemas de archivos distribuidos ( Coda , etc.) y la replicación ( rsync , etc.), ya que todas ellas buscan mantener conjuntos de archivos sincronizados. Sin embargo, solo las herramientas de control de versiones y sincronización de archivos pueden gestionar las modificaciones realizadas en más de una copia de los archivos.
- La sincronización de archivos se usa comúnmente para copias de seguridad domésticas en discos duros externos o para actualizar archivos en unidades flash USB antes de transportarlos . El proceso automático evita copiar archivos idénticos, lo que ahorra mucho tiempo en comparación con una copia manual, además de ser más rápido y menos propenso a errores. [ 2 ]
- Las herramientas de control de versiones están diseñadas para situaciones en las que varios usuarios intentan modificar el mismo archivo simultáneamente, 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 pueden utilizarse para la sincronización de archivos, los programas especializados requieren menos recursos .
- Los sistemas de archivos distribuidos también pueden considerarse como mecanismos para garantizar la sincronización de múltiples 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 el funcionamiento sin conexión seguido de la 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, ya que la mayoría de los sistemas de archivos no mantienen un registro de versiones.
- Espejo (informática) : Un espejo es una copia exacta de un conjunto de datos. En internet, un sitio espejo es una copia exacta de otro sitio web. Los sitios espejo se utilizan con frecuencia para proporcionar múltiples fuentes de la misma información y son especialmente útiles para ofrecer acceso fiable a descargas de gran tamaño.
Modelos teóricos
En la literatura de investigación existen varios modelos teóricos de sincronización de datos, y el problema también está relacionado con el problema de la codificación de Slepian-Wolf en la teoría de la información . Los modelos se clasifican según cómo consideran que se sincronizan los datos.
Datos no ordenados
El problema de sincronizar datos no ordenados (también conocido como problema de reconciliación de conjuntos ) se modela como un intento de calcular la diferencia simétrica.entre dos conjuntos remotos yde números de b bits. [ 3 ] Algunas soluciones a este problema se caracterizan por:
- Transferencia al por mayor
- En este caso, todos los datos se transfieren a un único servidor para su comparación local.
- Sincronización de marcas de tiempo
- En este caso, todos los cambios en los datos se marcan con marcas de tiempo. La sincronización se realiza transfiriendo todos los datos con una marca de tiempo posterior a la sincronización anterior. [ 4 ]
- 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. [ 3 ] [ 5 ] [ 6 ]
Datos ordenados
En este caso, dos cadenas remotasyes necesario conciliar. Normalmente, se supone que estas cadenas difieren en hasta 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 entreyhasta la distancia ideal de cero. Esto se aplica en todas las sincronizaciones basadas en sistemas de archivos (donde los datos están ordenados). Numerosas aplicaciones prácticas de esto se analizan o se mencionan anteriormente.
En ocasiones es posible transformar el problema en uno de datos no ordenados mediante un proceso conocido como shingling (dividir las cadenas en shingles ). [ 7 ]
Manejo de errores
En los sistemas tolerantes a fallos, las bases de datos distribuidas deben ser capaces de gestionar la pérdida o corrupción de (parte de) sus datos. El primer paso suele ser la replicación , que consiste en crear múltiples copias de los datos y mantenerlas todas actualizadas a medida que se producen cambios. Sin embargo, posteriormente es necesario decidir en qué copia confiar cuando se produce la pérdida o corrupción de una instancia.
El enfoque más sencillo consiste en tener una única instancia maestra que sea la única fuente de información fidedigna. Los cambios que se realicen en ella se replican en otras instancias, y una de ellas se convierte en la nueva instancia maestra cuando la anterior falla.
Paxos y Raft son protocolos más complejos que existen para resolver problemas con efectos transitorios durante la conmutación por error, como por ejemplo, cuando dos instancias creen ser la maestra al mismo tiempo.
El uso compartido de secretos resulta útil si las fallas de nodos completos son muy frecuentes. Esto traslada la sincronización de un proceso de recuperación explícito a formar parte de cada lectura, donde la lectura de ciertos datos requiere recuperar datos codificados de varios nodos diferentes. Si algunos nodos contienen datos corruptos o desactualizados, este enfoque también puede beneficiarse del uso de un código de corrección de errores .
Las DHT y las cadenas de bloques intentan resolver el problema de la sincronización entre muchos nodos (desde cientos hasta miles de millones).
Véase también
- SyncML , un estándar principalmente para la sincronización de calendarios, contactos y correo electrónico.
- Sincronización (informática)
Referencias
- ↑ Nakatani, Kazuo; Chuang, Ta-Tao; Zhou, Duanning (2006). "Tecnología de sincronización de datos: estándares, valores comerciales e implicaciones" . Communications of the Association for Information Systems . 17. doi : 10.17705/1cais.01744 . ISSN 1529-3181 .
- ↑ A. Tridgell (febrero de 1999). "Algoritmos eficientes para la clasificación y sincronización" (PDF) . Tesis doctoral. Universidad Nacional de Australia.
- 1 2 Minsky, Y.; Ari Trachtenberg ; Zippel, R. (2003). "Reconciliación de conjuntos con complejidad de comunicación casi óptima". IEEE Transactions on Information Theory . 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 del 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 polinómica característica" (PDF) . IEEE INFOCOM 2002. doi : 10.1109 /INFCOM.2002.1019402 .
- ↑ Y. Minsky y A. Trachtenberg, Reconciliación de conjuntos escalable, Conferencia Allerton sobre Comunicación, Control y Computación, octubre de 2002
- ↑ S. Agarwal; V. Chauhan; Ari Trachtenberg (noviembre de 2006). "Reconciliación de cadenas eficiente en ancho de banda mediante rompecabezas" (PDF) . IEEE Transactions on Parallel and Distributed Systems . 17 (11): 1217– 1225. doi : 10.1109/TPDS.2006.148 . S2CID 4300693. Recuperado el 23 de mayo de 2007 .
- Sincronización de datos
- Sistemas informáticos tolerantes a fallos