sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es el propósito de la replicación de datos?

Hay una aplicación de librería universitaria en línea donde muchos estudiantes pueden comprar libros. Cada vez que un estudiante inicia sesión, muestra una lista de sugerencias basadas en su historial de compras anterior. El servidor SQL que almacena los datos de los clientes está en Seattle, pero estos estudiantes inician sesión desde todas partes del mundo. Por lo tanto, el rendimiento puede verse afectado y aquellos que están más lejos en la WAN pueden experimentar un retraso en las consultas.

En lugar de que los estudiantes que están más lejos sufran tiempos de carga de página lentos, la replicación se puede usar para copiar y mantener objetos de base de datos en varios sitios y sincronizarlos más tarde para mantener la coherencia. Cada sitio mantiene la porción de la base de datos que contiene los datos que son más relevantes para ellos y que se usan con más frecuencia. Ahora, cada estudiante puede comprar libros en el sitio web y los datos se sincronizarán más tarde.

Cómo funciona la replicación de datos

Hay varios componentes de servidor y asumen diferentes roles para implementar la replicación. Un rol de publicador es una instancia de base de datos donde reside el origen de los datos y contiene objetos que están diseñados como artículos de replicación. Estos artículos se agrupan y publican en una publicación para que los datos se repliquen como una unidad. El editor puede tener varias publicaciones.

Un rol de distribuidor es una instancia de base de datos que contiene las bases de datos de distribución. Cada publicador se asigna a una única base de datos de distribución que almacena los datos replicados del publicador que se pasarán al suscriptor. El distribuidor podría configurarse como un distribuidor local, lo que significa que una sola instancia de servidor puede desempeñar las funciones tanto de editor como de distribuidor. Si un distribuidor está configurado en servidores separados, se lo denomina distribuidor remoto.

Un rol de suscriptor es la(s) instancia(s) que recibe(n) los datos replicados al suscribirse a las publicaciones. El suscriptor no está limitado y es elegible para recibir datos de varios publicadores, y los objetos pueden actualizarse según el tipo de replicación. Si corresponde, el editor recibiría estos cambios del suscriptor y volvería a publicar los datos.

En general, el suscriptor recibe cambios en los datos de dos maneras:mediante suscripción push o suscripción pull. La diferencia está en qué componente del servidor realiza las actualizaciones. Con push, el distribuidor empuja o actualiza directamente la base de datos de suscriptores. Con pull, el suscriptor se comunica con el distribuidor para ver si hubo algún cambio y él mismo realizará la actualización.

Tres tipos de replicación de datos

Para implementar la replicación, se utilizan varios agentes para realizar los trabajos asociados con la copia de cambios, el seguimiento de los cambios y la distribución de datos. Los agentes que se necesitan dependen del tipo de replicación utilizada. Hay tres tipos principales de replicación.

1. Replicación de instantáneas

La replicación de instantáneas es el tipo más simple de replicación de datos y se usa si los datos no se cambian con tanta frecuencia o si es necesario replicar pequeños volúmenes de datos. Por ejemplo, si hay tablas que no se actualizan mucho, los Agentes de instantáneas se pueden usar para copiar toda la base de datos una o varias veces según un cronograma. Luego, un Agente de Distribución se encarga de transferir estos archivos al suscriptor.

Esta técnica requiere poco mantenimiento porque lo que se distribuye es una instantánea de los datos en un momento específico. Además, no es necesario monitorear los cambios porque cada vez que un suscriptor recibe una actualización, sobrescribe la copia completa de los datos.

Desafortunadamente, copiar una base de datos completa puede contribuir a una alta latencia o más esperas de las deseables. La generación de instantáneas requiere mantener bloqueos en los objetos. No es conveniente si los datos se cambian con frecuencia y es probable que afecten el rendimiento, por ejemplo, si el editor tiene mucha actividad de inserción, actualización y eliminación.

Además de usar los agentes de instantáneas para crear las instantáneas, las replicaciones transaccionales también aprovechan los agentes de lectura del registro que se ejecutan en el distribuidor. El Log Reader Agent lee los registros de transacciones de la base de datos del editor y solo entrega los cambios marcados en lugar de esperar en una base de datos completa. Esto proporciona flexibilidad porque le da espacio para decidir qué parte de la base de datos publicar (por ejemplo, una columna). Luego, el Agente de distribución mueve las transacciones a los suscriptores, y donde se ejecuta acomodará las estrategias de suscripción push y pull respectivamente.

2. Replicación transaccional

La replicación transaccional estándar implica que los datos del suscriptor son de solo lectura. Sin embargo, existen diferentes tipos de publicación que permiten realizar modificaciones en el suscriptor. Si se realizan estos cambios, se pueden retransmitir al editor para que los vuelva a publicar. El Queue Reader Agent se utiliza para la replicación transaccional bidireccional y leerá los cambios de la cola y los aplicará en el editor.

La replicación transaccional es muy beneficiosa en un entorno de servidor a servidor donde se pueden realizar cambios en el editor y en el suscriptor en tiempo real, por ejemplo, datos en tiempo real relacionados con qué vuelos están disponibles actualmente para una aerolínea. No tiene sentido usar la replicación de instantáneas en este caso porque las actualizaciones generalmente se sincronizan una vez al día o según un cronograma.

3. Fusionar replicación

La replicación de mezcla es como la replicación de transacciones, pero permite que las actualizaciones tanto en el suscriptor como en el publicador se combinen. Muchos suscriptores pueden desconectarse, actualizar los datos en diferentes momentos y luego volver a conectarse y sincronizar esos cambios más tarde.

Es probable que este tipo de replicación se utilice en entornos de servidor a cliente, como clientes móviles. Al igual que la replicación de instantáneas y transacciones, la instantánea inicial la crea el Agente de instantáneas, pero luego el Agente de mezcla rastreará los cambios y resolverá los conflictos con los desencadenadores. Si varios suscriptores actualizan las mismas filas, pueden causar un problema. Por lo tanto, la resolución de conflictos debe tenerse en cuenta.