stringtranslate.com

Sincronización de datos

Proceso de sincronización entre un servidor y dos clientes

La sincronización de datos es el proceso de establecer la 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, incluidas 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 incluyen:

Desafíos

Algunos de los desafíos que el usuario puede enfrentar en la sincronización de datos:

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 da como resultado no solo la creación de interfaces simples entre las dos aplicaciones (fuente y destino), sino también la necesidad de transformar los datos al pasarlos a la aplicación de destino. Las herramientas ETL (extracción, transformación y carga) pueden ser útiles en esta etapa para gestionar las complejidades del formato de datos.

Oportunidad real

En los sistemas en tiempo real, los clientes quieren ver el estado actual de su pedido en la tienda electrónica, el estado actual de la entrega de un paquete (seguimiento del paquete en tiempo real), el saldo actual de su cuenta, etc. Esto muestra la necesidad de un sistema en tiempo real, que también se actualiza para permitir un proceso de fabricación fluido en tiempo real, por ejemplo, para pedir material cuando la empresa se está quedando sin existencias, para sincronizar los pedidos de los clientes con el proceso de fabricación, etc. En la vida real, existen muchos ejemplos en los que el procesamiento en tiempo real proporciona una ventaja competitiva y exitosa.

Seguridad de datos

No existen reglas ni políticas fijas para hacer cumplir la seguridad de los datos. Puede variar según el sistema que se utilice. Aunque la seguridad se mantiene correctamente en el sistema de origen que captura los datos, la seguridad y los privilegios de acceso a la información también deben aplicarse en los sistemas de destino para evitar cualquier posible uso indebido de la información. Se trata de un problema grave, especialmente cuando se trata de manejar 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 un lugar y compartirlos con distintas personas y distintos sistemas o aplicaciones desde distintas ubicaciones. Esto ayuda a evitar inconsistencias en los datos.

Actuación

Hay cinco fases diferentes involucradas en el proceso de sincronización de datos:

Cada uno de estos pasos es fundamental. En el caso de 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 disponibles para la sincronización de archivos , el control de versiones ( CVS , Subversion , etc.), los sistemas de archivos distribuidos ( Coda , etc.) y la duplicación ( rsync , etc.), en el sentido de que todas ellas intentan mantener sincronizados los conjuntos de archivos. Sin embargo, sólo las herramientas de control de versiones y sincronización de archivos pueden gestionar las modificaciones de más de una copia de los archivos.

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 de 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 sincronización de datos no ordenados (también conocido como el problema de reconciliación de conjuntos ) se modela como un intento de calcular la diferencia simétrica entre dos conjuntos remotos y 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 host para realizar una comparación local.
Sincronización de marca de tiempo
En este caso, todos los cambios realizados a los datos se marcan con marcas de tiempo. La sincronización se lleva a cabo 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, es necesario conciliar dos cadenas remotas y . Normalmente, se supone que estas cadenas difieren en un número fijo de ediciones (es decir, inserciones, eliminaciones o modificaciones de caracteres). 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 discuten o se mencionan anteriormente.

A veces es posible transformar el problema en uno de datos desordenados a través de un proceso conocido como "shingling" (dividir las cadenas en "shingles" [ aclaración necesaria ] ). [7]

Manejo de errores

En los sistemas tolerantes a fallos, las bases de datos distribuidas deben ser capaces de 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 todas actualizadas a medida que se realizan cambios. Sin embargo, después 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 información. Los cambios que se realicen en ella se replicarán en otras instancias y una de esas instancias se convertirá en la nueva instancia maestra cuando la antigua falle.

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 uso compartido de secretos resulta útil si las fallas de nodos completos son muy comunes. Esto hace que la sincronización pase de ser un proceso de recuperación explícito a ser parte de cada lectura, donde la lectura de algunos datos requiere recuperar datos codificados de varios nodos diferentes. Si puede haber datos corruptos o desactualizados en algunos nodos, 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 (cientos o 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". Comunicaciones de la Asociación de Sistemas de Información . 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. ^ ab Minsky, Y.; Ari Trachtenberg; Zippel, R. (2003). "Conciliación de conjuntos con una 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 desde el 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, Conciliación de conjuntos escalables, 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 . Consultado el 23 de mayo de 2007 .