Articulo de referencia

Sincronización de datos

Proceso de sincronización entre un servidor y dos clientes. La sincronización de datos es el proceso de establecer coherencia entre los almacenes de datos de origen y destino , ...

Proceso de sincronización entre un servidor y dos clientes.

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:

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:

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.SASB=(SASB)(SBSA){\displaystyle S_{A}\oplus S_{B}=(S_{A}-S_{B})\cup (S_{B}-S_{A})}entre dos conjuntos remotosSA{\displaystyle S_{A}} ySB{\displaystyle S_{B}}de 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 remotasσA{\displaystyle \sigma _{A}}yσB{\displaystyle \sigma _{B}}es 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 entreσA{\displaystyle \sigma _{A}}yσB{\displaystyle \sigma _{B}}hasta 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

Referencias

  1. 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 . 
  2. A. Tridgell (febrero de 1999). "Algoritmos eficientes para la clasificación y sincronización" (PDF) . Tesis doctoral. Universidad Nacional de Australia.
  3. 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 . 
  4. "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 .
  5. 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 .
  6. Y. Minsky y A. Trachtenberg, Reconciliación de conjuntos escalable, Conferencia Allerton sobre Comunicación, Control y Computación, octubre de 2002
  7. 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 .