Cuando trabajamos con bases de datos todo el contenido de ellas es extremadamente importante para la organización que nos contrató y no podemos permitir que por nuestra culpa, por no prever las contingencias, se pierdan datos.

Las armas que tenemos para evitar que algo desastroso ocurra son:

  • Copias de seguridad, también llamadas backups o copias de respaldo
  • Copias shadow, también llamadas copias espejo
  • Replicación

La importancia de hacer backups supongo que todo el mundo la conoce y no es necesario explayarse sobre ese tema. El problema con los backups es que generalmente cuando se los restaura lo que se obtiene es algo viejo. Dependiendo de cuando se hizo el último backup lo que restauremos tendrá minutos, horas, días, semanas o meses de antigüedad. Y todo lo que se registró desde el momento en que se inició el backup hasta el momento actual será trabajo perdido. En una organización pequeña eso puede ser aceptado, pero en una organización grande con varias sucursales y decenas o cientos de usuarios concurrentes será totalmente inaceptable. Simplemente no les puedes decir a tus usuarios que todo el trabajo que hicieron desde el último backup se perdió y deben registrarlo nuevamente.

Las copias shadow tienen la ventaja de que todo lo que se registró en la Base de Datos original también se registró en la copia shadow, hasta el último detalle. Todas las inserciones, borrados y actualizaciones realizados en la Base de Datos original están fielmente reflejados en la copia shadow. El problema con la copia shadow es que debe encontrarse en la misma computadora que la Base de Datos original y si esa computadora se incendió, fue robada, destruida por una inundación, por un terremoto, por un ataque terrorista o algo así, todo lo registrado en la Base de Datos original y en la copia shadow puede estar irremediablemente perdido.

La replicación tiene la ventaja de que podemos tener una copia de seguridad, un backup, en otra computadora, quizás alejada del Servidor por decenas, centenas o miles de kilómetros.

¿Qué significa replicación?

Copiar el contenido de una Base de Datos en otra Base de Datos, las cuales pueden (y deberían) estar en computadoras distintas

¿La replicación necesariamente requiere copiar todo el contenido de una Base de Datos?

No, se puede copiar solamente una parte o sea solamente algunas tablas, o inclusive solamente algunas filas de algunas tablas.

¿Cómo funciona la replicación?

  1. En una computadora llamada «Servidor de Replicación» o «Administrador» se encuentra la Base de Datos cuyo contenido será copiado en otra Base de Datos que se encuentra en una computadora cuyo nombre es «Cliente de Replicación«. Ambas computadoras pueden encontrarse a miles de kilómetros de distancia.
  2. En el «Servidor de Replicación» se eligen las tablas cuyos contenidos  serán copiados en el «Cliente de Replicación«. Pueden ser todas las tablas o solamente algunas tablas.
  3. No es obligatorio copiar todas las filas de las tablas elegidas, pueden copiarse solamente algunas filas si se desea.
  4. Cuando el proceso se inicia, el contenido de las tablas que tienen el mismo nombre se trata de igualar. Por ejemplo, si se decidió replicar la tabla PRODUCTOS entonces los datos de cada producto que está en el «Servidor de Replicación» se trata de copiar en la tabla PRODUCTOS que se encuentra en el «Cliente de Replicación«
  5. Si un producto existe en el «Servidor de Replicación» y no existe en el «Cliente de Replicación» entonces no hay problema, se lo inserta en la tabla de PRODUCTOS y listo. Pero si ya existe y además fue actualizado en ambas bases de datos después de la última replicación hay un conflicto ¿cuál de las dos versiones se debe mantener, la que se encontraba en el «Servidor de Replicación» o la que se encontraba en el «Cliente de Replicación«? Esto es algo que debe resolverse manualmente, o sea que una persona debe decidir.
  6. El «Servidor de Replicación» no tiene por que coincidir con el Servidor del Firebird. Cualquier computadora puede actuar como «Servidor de Replicación» y cualquier computadora puede actuar como «Cliente de Replicación«, inclusive la computadora que en un instante actuó como «Servidor de Replicación» en otro instante puede actuar como «Cliente de Replicación«.
  7. Del punto 6. se deduce que la replicación puede ser bidireccional, eso ocurre cuando ambas bases de datos son actualizadas.

Ejemplos en los cuales se necesitaría hacer replicación

Ejemplo 1:

Un vendedor viajante registra en su notebook (también llamada laptop) los datos de las ventas que va realizando. Él no necesita conocer los precios de compra de los productos, ni las compras realizadas, ni los pagos efectuados, ni los sueldos de los empleados, ni un montón de otras cosas. Solamente debe tener en su notebook los códigos de los productos, los nombres de los productos, la cantidad en stock de los productos, los precios de venta de los productos. Adicionalmente, los códigos, nombres, direcciones, teléfonos y quizás algunos otros datos de sus propios clientes. No debería tener los datos de los clientes de los otros vendedores, solamente de sus propios clientes.

En este caso la replicación es parcial, solamente algunas tablas son replicadas en la computadora notebook del vendedor e inclusive solamente algunas filas de dichas tablas, ni siquiera se replican las tablas completas, solamente se replican las filas que el vendedor puede necesitar.

Cuando el vendedor copia en su notebook los datos de los productos y de los clientes que se encuentran en la Base de Datos principal su computadora notebook actúa como «Cliente de Replicación» porque es la computadora que recibe los datos. Sin embargo, ¿qué sucede si más tarde se corta la conexión con Internet? el vendedor sigue registrando las ventas en su notebook y cuando la conexión se restablece actualiza a la Base de Datos remota, la que se encuentra en las oficinas de la Empresa. En este caso su computadora notebook actuó como «Servidor de Replicación» porque fue la que envió los datos.

Ejemplo 2:

La Casa Central o Casa Matriz de la Empresa se encuentra en Londres y las sucursales se encuentran en Berlín, Madrid, París y Roma. Cada una de estas sucursales tiene su propia Base de Datos en la cual se registran todas las operaciones que le conciernen. En la Base de Datos que se encuentra en la sucursal de Berlín solamente se tienen los datos que corresponden a la sucursal de Berlín. En la Base de Datos que se encuentra en la sucursal de Madrid solamente se tienen los datos que corresponden a la sucursal de Madrid. Y así sucesivamente. Pero en la Base de Datos que se encuentra en Londres se tienen los datos de Londres y también los de Berlín, Madrid, París y Roma. O sea, allí está todo.

Cada noche, al final de la jornada laboral, se replican los datos de las sucursales en la Casa Central. La computadora que se encuentra en Londres actúa como «Cliente de Replicación» porque es la computadora que recibe los datos y las computadoras que se encuentran en Berlín, Madrid, París y Roma actúan como «Servidores de Replicación» porque son las que envían los datos.

Pero un poco más tarde los papeles se invierten. Las computadoras que se encuentran en Berlín, Madrid, París y Roma necesitan ser actualizadas con los nuevos precios de costo de algunos productos y entonces la computadora de Londres actúa como «Servidor de Replicación» porque es la que envía los datos y las otras computadoras actúan como «Clientes de Replicación» porque son las que reciben los datos.

Ejemplo 3:

El propietario de la Empresa no quiere tener problemas por causa de una Base de Datos dañada porque ya tuvo una mala experiencia con eso en el pasado, por lo tanto cada vez que llega a su casa replica en su computadora personal toda la Base de Datos que está en su oficina. Cuando el proceso de replicación finaliza él está seguro de que ambas bases de datos son exactamente iguales y así puede dormir tranquilo.

Conclusión:

La replicación es extremadamente importante cuando las computadoras no se encuentran en una red local o cuando se desea tener un backup en una computadora que está lejos. La computadora que envía los datos se llama «Servidor de Replicación» y la computadora que recibe los datos se llama «Cliente de Replicación«. Cuando se hace la replicación puede ocurrir un conflicto si una fila fue actualizada en ambas bases de datos después de la última replicación y en esos casos generalmente se requiere de intervención humana para solucionar el conflicto. Si se corta la conexión con Internet no hay problema, se puede continuar trabajando normalmente con ambas bases de datos y cuando la conexión se restablece se realiza la replicación.

Artículos relacionados:

Creando una copia shadow

El índice del blog Firebird21