viernes, 14 de marzo de 2014

Creando una Replica Flexible con Marklogic

Replica Flexible en Marklogic Server



Pre-requisitos


Los siguientes son conocimientos que deben tener previamente al tratar de leer este documento:

  • Marklogic Server
  • Creación de Forest y Bases de Datos
  • Creación de Documentos
  • Content Processing Framework (CPF)

Introducción


En esta oportunidad voy a explicarles como realizar replicas de Bases de Datos en Marklogic Server. Para esto primero definamos algunos términos:

  • Replicar: Es crear una copia de un documento en otras bases de datos y mantener esa copia sincronizada(Posiblemente con algo de retardo/latencia) con el original.
  • Maestro: Es el repositorio que ofrece las actualizaciones por parte de las aplicaciones. El maestro es el que replica las actualizaciones a otros repositorios llamados replicas. 
  • Replica: Es un repositorio que recibe actualizaciones del Maestro.
  • Copia Maestra: Es el contenido que va empezar a ser replicado.
  • Replicación Flexible: Es una implementación de replicación basada en el Marklogic Server Content Processing Framework(CPF). Esta replicación es de un Único Maestro, asincrono y provee un nivel medio de latencia.
Ahora bien, explicados los conceptos que vamos a manejar, quiero mostrarles una imagen que va ilustrar más en detalle de que estamos hablando cuando decimos "Replicar".

Replica Basica
En este punto debe estar claro que es Replica de Bases de Datos y en que consiste. Quiero agregar que las replicas se pueden hacer en Marklogic por Colección, Directorio o Documento.


 Implementando una Replica de Bases de Datos en Marklogic


Para realizar la replica debemos seguir los siguientes pasos en el orden que los voy a enunciar. Recuerden que deben revisar las políticas de seguridad entre los servidores que se están comunicando para que el proceso no sea bloqueado por un Firewall o Proxy. 


Creando las Bases de Datos


Debemos crear una base de datos "Master" y una base de datos "Replica". Para esto debemos crear un forest para cada base de datos y agregarlo respectivamente a cada base de datos. Una vez tenemos las bases de datos que queremos configurar para la Replica, podemos pasar a configurar la base de datos Master, a continuación los pasos:

  1. Verificamos que tenga una base de datos asignada en Triggers. Por defecto podemos usar la de Triggers del sistema o podemos crear una y asignarla.
  2. Vamos a la opción de Content Processing en la base de datos Master e Instalamos presionando el boton Install. 
  3. Después de instalar observamos que el sistema creo un grupo por defecto con los pipelines de conversion de documentos asociados. En este punto debemos seleccionar solamente "Status Change Handling" y "Flexible Replication" como aparece en esta imagen. 
  4. Una vez seleccionamos los pipelines correspondientes, presionamos "Guardar".
Con estos pasos habremos configurado la base de datos Master para que procese todos los documentos que se creen, pero hasta el momento no esta enviando ninguna información. 


Creando La Aplicación de Replica


En la Replica de datos necesitamos hacer uso de una Aplicación para recibir los datos que la base de datos Master nos va enviar, para esto debemos crear la aplicación siguiendo los pasos a continuación:

  1.  En la base de datos de Replica(La Base de datos que va recibir la información) buscamos la opción "Flexible Replication" y presionamos Click.
  2. En esta pantalla le damos al botón "Create" que se encuentra debajo del titulo "Application Server" 
  3. Esto nos abrirá una pantalla donde debemos solamente colocar el numero del puerto que vamos a usar, los demás campos los dejamos tal cual como los define el sistema.
  4. Presionamos el botón "Guardar" y con esto habremos creado la Aplicación correctamente.

Configurando el Envío de Información a la Replica


En esta parte vamos a configurar a donde debe enviar la información la base de datos Master y con que configuraciones. Para esto debemos buscar en la base de datos Master la opción "Flexible Replication" y presionar Click. Una vez hagamos esto debemos seguir los siguientes pasos:

  1. Buscamos en la pantalla las opciones de "Content Processing" y presionamos click en el grupo que creamos en la instalación del Content Processing. Por defecto es "Default Master" donde Master es el nombre de la base de datos en la que estamos trabajando. 
  2. Esto nos va llevar a una pantalla en blanco con un botón "Create", presionamos el botón.
  3. Nos debe aparecer una pantalla para colocar la información necesaria para configurar un envío de datos. En esta pagina debemos llenar los siguientes datos:
    • target name: Es un identificador para diferenciar de varios destinos. 
    • target urls: Podemos colocar varias urls si deseamos replicar a varias bases de datos. Para este ejemplo colocamos la url de la aplicación que creamos en el paso de "Creando la Aplicación de Replica".
    • username: Usuario en la base de datos de Replica para autenticación.
    • password: Contraseña del usuario ingresado en username.
  4. Una vez llenamos los datos presionamos el botón "Guardar".
Con estos pasos ya tenemos configurado que el sistema va enviar datos a una base de datos de replica y sabemos a donde la va enviar. Pero todavía nos falta decirle cada cuanto lo va enviar, para esto debemos crear una tarea.

Creando Tarea de Replicación


Para crear la tarea que va estar pendiente de enviarnos todas las actualizaciones de información debemos ir a la base de datos de Master y buscar la opción "Flexible Replication" y seguir los pasos a continuación:


  1. Buscamos la opción "Scheduled Tasks" y presionamos el botón "Create" que se encuentra en esa opción. 
  2. Luego aparece una ventana con una información por defecto, lo único que debemos cambiar es la periodicidad con la que deseamos actualizar nuestros datos en la base de datos de Replica. El valor por defecto es "minutely". Y para un mejor performance, podemos cambiar la opción de "Task Priority" a "Normal".
  3. Presionamos el botón "Guardar" y listo.

CONCLUSIÓN


Con estos pasos ya tendremos una base de datos principal que hará replica minuto a minuto de todos los cambios que sucedan en nuestra base de datos a un servidor que puede ser externo, local o incluso en el mismo cluster. Esta funcionalidad nos va permitir tener opciones para cuando tengamos un problema en un servidor, tengamos problemas de conexión o incluso por si nuestro servidor principal sufre daños, tendremos la Replica como backup de todos los datos.

Comenta si tienes preguntas, sugerencias o deseas saber mas sobre como Marklogic puede mejorar tus procesos.