La replicación ( del inglés replication ) es un mecanismo para sincronizar el contenido de varias copias de un objeto (por ejemplo, el contenido de una base de datos ). La replicación es el proceso de copiar datos de una fuente a otra (o muchas otras) y viceversa.
Con la replicación, los cambios realizados en una copia de un objeto se pueden propagar a otras copias.
Un ejemplo de una solución de software puede ser DRBD , un dispositivo de bloques diseñado para construir sistemas de clúster tolerantes a fallas en un sistema operativo con un kernel de Linux .
La replicación puede ser síncrona o asíncrona , como se describe a continuación.
En el caso de la replicación síncrona , si se actualiza una réplica determinada , todas las demás réplicas del mismo dato también deben actualizarse en la misma transacción . Lógicamente, esto significa que solo hay una versión de los datos.
En la mayoría de los productos, la replicación síncrona se implementa mediante procedimientos de activación (quizás ocultos y administrados por el sistema). Pero la replicación síncrona tiene la desventaja de que crea una sobrecarga adicional para todas las transacciones en las que se actualizan las réplicas (además, puede haber problemas relacionados con la disponibilidad de datos).
En el caso de la replicación asíncrona , la actualización de una réplica se propaga a otras después de un tiempo y no en la misma transacción. Por lo tanto, la replicación asíncrona introduce un retraso, o tiempo de espera, durante el cual las réplicas individuales pueden no ser realmente idénticas (es decir, la definición de réplica no es del todo apropiada, ya que no se trata de copias creadas exactas y oportunas).
En la mayoría de los productos, la replicación asincrónica se implementa leyendo el registro de transacciones o una cola persistente de las actualizaciones que se van a distribuir. La replicación asíncrona tiene la ventaja de que la sobrecarga de replicación adicional no está asociada con las transacciones de actualización, que pueden ser fundamentales para el funcionamiento de toda la empresa e imponen requisitos de alto rendimiento.
Las desventajas de este esquema incluyen que los datos pueden ser inconsistentes (es decir, incompatibles desde el punto de vista del usuario). En otras palabras, la redundancia puede manifestarse a nivel lógico, lo que, estrictamente hablando, significa que el término redundancia controlada no se aplica en este caso.
Consideremos brevemente el problema de la consistencia (o más bien, la inconsistencia). El hecho es que las réplicas pueden volverse incompatibles como resultado de situaciones difíciles (o incluso imposibles) de evitar y cuyas consecuencias son difíciles de corregir.
En particular, pueden surgir conflictos sobre el orden en que se deben aplicar las actualizaciones. Por ejemplo, suponga que la transacción A inserta una fila en la réplica X, y luego la transacción B elimina la fila, y también suponga que Y es una réplica de X. Si las actualizaciones se propagan a Y, pero se inyectan en la réplica Y en orden inverso (para ejemplo, debido a diferentes retrasos en la transmisión), la transacción B no encuentra una fila en Y para eliminar y no realiza su acción, después de lo cual la transacción A inserta esta fila. El efecto neto es que la réplica Y contiene la fila especificada, pero la réplica X no.
En general, las tareas de eliminar situaciones de conflicto y asegurar la consistencia de las réplicas son muy complejas. Cabe señalar que, al menos en la comunidad de usuarios de bases de datos comerciales, el término replicación significa predominantemente (o incluso exclusivamente) replicación asincrónica.
La principal diferencia entre la replicación y el control de copia es:
Si se utiliza la replicación, la actualización de una réplica eventualmente se propaga a todas las demás automáticamente.
En el modo de control de copia, por el contrario, no existe tal distribución automática de actualizaciones. Las copias de datos se crean y administran mediante un proceso por lotes o en segundo plano que está separado en el tiempo de las transacciones de actualización.
La gestión de copias suele ser más eficaz que la replicación porque se pueden copiar grandes cantidades de datos a la vez. Las desventajas incluyen que la mayoría de las veces, las copias de los datos no son idénticas a los datos subyacentes, por lo que los usuarios deben saber exactamente cuándo se sincronizaron los datos.
Por lo general, la administración de copias se simplifica por el requisito de que las actualizaciones se apliquen de acuerdo con el esquema de copia principal de un tipo u otro.