Actualizar una tabla en varias bases de datos usando pentaho

En esta ocasión vamos a actualizar una tabla( escogemos la tabla contact de sybase) de la base de datos de asademo, en varias bases de datos.
Las bases de datos previamente se crean en mysql se utilizara pentaho para realizar esa actualizaciones.
Requerimiento:
MySql
Sybase
Pentaho

Procedimiento:

1. Crear 5 bases diferente en Mysql en este ejemplo cada base van a ser llamadas: base1, base2, base3, base4 y base5.
En cada base de datos se debe crear la tabla contact con los respectivos parametros.

2. En pentaho, creamos una nueva hoja de transformacion.
3. Insertamos un tabla input, damos doble click y creamos una nueva conexión

4. Nombre de la conexion : asademo

Tipo de conexión: Sybase
Access: ODBC
En Settings: ODBC DSN
Source Name: ASA 9.0 sample
User Name: dba
Password: sql

5. Se da click en Test para verificar que la conexión fue exitosa. Caso contrario revisar los parametros indicados anteriormente


6. En Get SQL select stament aparecera la base asademo de sybase escogemos la tabla contact


7. Se da doble click y acepta

8. Una vez configurada la tabla contact, se procede a crear las bases de datos en las cuales va a ser actualizada la tabla, para ello, se utiliza insert/update para cada base de datos.


9. Se traza un vinculo desde la tabla de entrada hasta el insert/update con los controles: shift y con click en la tabla de entrada y se arrastra hasta el insert/update.Se procede a configurar cada una de ellas.


10. Configuracion de la base 1:Step name: base 1Connection : se va a configurar creando una nueva conexión pero en este caso con la base 1 que previamente se creo en MySql

11. Nombre de la conexión: base 1

Tipo de Conexión : MySql
Access: Native(JDBC)
Host Name:localhost
Database Name: (nombre de la base) base1
Port Name:3306
User Name:root
Password: (en este caso no va nada)


12. Se procede hacer el respectivo test


13. Target table: se selecciona Browser y se escoge la tabla contact


14. En la opcion Get fields se procede a escoger la opcion id
y en Get update fields se deja todos los parametros


15. Se procede a configurar a todas los insert/update
16. Finalmente se observa el esquema que queda.


17. En sybase se modifica cualquier dato de la tabla luego se desconecta de asademo
18. Se procede a correr pentaho


19. Finalmente se verificar lo modificado en cada base de datos

Truncar Log de Transacciones de Bases de Datos

En este ejemplo se trunca los archivos de log, lo que significa, hacer un backup de log de las entradas correspondientes a las modificaciones realizadas en las bases y así reutilizar el espacio del log de transacciones.

Oracle:
Pasos: Application Builder -> Manage Services -> Manage Logs -> Page Views -> TRUNCATE LOGS
Interfáz: interface  oracle

Sybase:
comando: dbeng9 -n asademo.db -m
Ejecución: cmd (desde el cmd, llegar hasta la carpeta de instalación y ejecutar el comando)


MySql(wamp):
Por defecto el mysql de wamp no trae configurado el log de transacciones, por lo que se debe configurar con el parametro especificado.
Parametro: En el archivo my.ini poner esta linea: log=c:\mysql\logquery.log
para truncar el log, ejecutar en la consola de mysql el comando: flush logs
Archivo: my.ini

Paralelismo de Bases de Datos

En este ejemplo se configura las bases de datos para que se ejecuten en varios CPU's, en los ejemplo de abajo se configura a Oracle y Sybase para que se ejecuten en dos CPU's.

Oracle:
Parametros: parallel_server=TRUE; parallel_threads_per_cpu=2
Archivo: init.ora

Sybase:
Comando: dbsrv9 -n asademo.db -gt 2
Ejecución: cmd (en el cmd, llegar hasta la ruta de instalación del sybase y ejecutar el comando)

Configuración de Paquetes de Red

En este ejemplo se muestra en que archivo y como manejar el tamaño de los paquetes de red de cada base de datos

Oracle:
Parametro: SDU=2048
Archivo:
tnsnames.ora
listener.ora
sqlnet.ora

Sybase:
Comando:dbeng9 -n asademo.db -p 1M
Ejecutar: cmd  (desde el cmd, llegar hasta la carpeta de instalcion y ejecutar el comando:esto es para 1 MB en el paquete de red)

MySql:
Agreagar Linea: max_allowed_packet=16M
Archivo:  my-innodb-heavy-4G.ini

Replicación de Bases usando Sybase

En este tutorial se explica como replicar datos usando tres bases de datos, una base consolidada o central y dos bases remotas.

Se usaron las siguientes herramientas:

  • Windows 7
  • Sybase 9 - SQl Anywhere 9
  • Sybase SQL Remote

Para nuestro ejemplo necesitamos tres carpetas las cuales nos sirven como:

  • db_consolid -> para la base de datos consolidada.
  • db_remoto1 -> para el archivo de base de  datos remota 1.
  • db_remoto2 -> para el archivo de base de datos remota 2.

carpetas para replicacion

todas estas carpetas deben estar compartidas para poder hacer la replicacion.

Luego creamos la base de datos consolidada con una unica tabla llamada persona(con los campos: id, nombre):

Nos conectamos a sybase con el user: dba y el pass: sql

crear base en sybase

click derecho en asademo y seleccionamos Create Database.

Del asistente que nos sale presionamos siguiente y elegimos Create a database on this computer

presionamos siguiente, y escribimos la ruta de nuestra base consolidad con el nombre db_consolid

Luego presionamos en Finalizar.

Nos desconectamos de la base asademo, presionando F12.

Ahora nos conectaremos a nuestra base de datos consolidada(db_consolid), haciendo lo siguiente:

Presionamos Connect o F11 y en la pestaña Identification ponemos el user: dba y pass: sql

Luego en la pestaña Database seleccionamos el fichero de conexión, en nuestro caso es la base de datos que creamos, es decir, nuestra base db_consolid

Luego presionamos OK. Con esto tenemos nuestra base db_consolid conectada.

Del panel izquierdo seleccionamos la carpeta que dice User & Groups y en el panel derecho creamos tres usuarios:

  • publicador -> es el usuario de la base consolidada
  • remoto1 -> es el usuario de la base remota 1.
  • remoto2 -> es el usuario de la base remota 2.

Ahora debemos hacer que los dos usuarios sean remotos y el otro sea publicador, ya que se va a encargar de publicar a las bases remotas los cambios en la base. Para esto debemos hacer lo siguiente:

Al usuario remoto1 le damos click derecho y elegimos la opcion de Change to Remote User y nos sale la siguiente ventana:

el el campo address debemos especificar la ruta de la base remota 1 ya que es ahi donde se localizará dicha base con todo el log de transacciones:

el formato de la ruta es: \\nombre_equipo\carpeta_de_base

donde equipo_remoto es el nombre del equipo remoto y carpeta_de_base es la carpeta donde se encuentra el log de transacciones de la base remota, en nuestro caso tenemos todas las bases en el mismo equipo, por ende la ruta para la base remoto1 y 2 serían respectivamente:

  • remoto1: \\nombre_equipo\db_remoto1
  • remoto2: \\nombre_equipo\db_remoto2

Ahora debemos configurar nuestro usuario publicador de nuestra base consolidada, para esto damos click derecho sobre el usuario publicador y elegimos la opcion de Change to Publisher

Ahora debemos crear la publicacion para la base consolidada, para esto, damos click en la carpeta del panel izquierdo que dice Publications y en panel derecho damos click derecho y creamos una nueva publicación:

del asistente que nos sale le asignamos el nombre a la publicación y damos en siguiente

En la pestaña de tabla seleccionamos la única tabla y presionamos add y de la pestaña de columnas seleccionamos ambas columnas(id y persona) y presionamos add:

luego presionamos en siguiente y le ponemos un comentario y por último damos en Finalizar, ahora ya tenemos la subscripcion, por lo que tenemos que hacer que el usuario remoto1 y el usuario remoto2 se suscriban, para esto seleccionamos del panel izquierdo la publicacion creada y del panel derecho seleccionamos la pestaña SQL Remote Subscriptions, una vez ahi le damos click derecho y creamos una nueva subscripcion, nos saldra un asistente en el cual seleccionaremos a uno de los usuarios remotos y presionamos en finalizar, con esto ya hemos suscrito al usuario remoto,

al final tenemos los usuarios remotos ya suscritos a la base consolidada.

por último debemos dar permisos a los usuarios remotos, para eso hacemos lo siguiente:

del panel izquierdo seleccionamos la carpeta de SQL Remote Users y en el panel derecho se mostraran los usuarios remotos creados, a cada uno de los usuarios remotos, le damos click derecho y seleccionamos propiedades, nos vamos a la pestaña de Permissions, y le damos todos los permisos, por últmio seleccionamos aplicar y aceptar.

Por último debemos configurar los mensajes, seleccionamos la pestaña de Message Type, luego damos doble click en FILE y en Publisher Address escribimos la ruta de nuestra base consolidada, en nuestro caso es: \\nombre_equipo\db_consolid

luego presionamos en aplicar y aceptar. Entonces ya tenemos lista nuestra base consolidad para poder realizar replicación.

Ahora debemos configurar las bases remotas, para esto debemos extraer la base de datos consolidad de la siguiente manera:

Seleccionamos la base consolidada y le damos click derecho y luego en Extract Database, del asistente que nos sale presionamos en siguiente y elegimos la base de datos consolidada, luego el siguiente, luego en siguiente y seleccionamos el primer usuario remoto1, luego presionamos en siguiente hasta que nos salga la ventana de Create and reload into the following new database file:, en la cual escribiremos la ruta de nuestra carpeta donde se localizara nuestra base remota1, luego en sguiente y or último en finalizar. Luego debemos hacer lo mismo pero con el usuario remoto2. Al final tendremos las dos bases remotas y la base consolidada creadas.

Ahora queremos probar la replicacion de bases de datos, por lo que haremos lo siguiente:

Desconectamos cualquier base y cerramos Sybase Central, luego abrimos 3 ventanas de Interactive SQL, una para cada base creada, es decir, una para la base consolidada(db_consolid), otra para la base remota1(db_remoto1) y otra para la base remota2(db_remoto2), ahora hacemos lo siguiente:

En la base consolidad insertamos un registro cualquiera, en este caso insertamos el registo con id=1 y con nombre='Juan', ahora, si hacemos una consulta en las bases remotas podemos observar que no ha pasado ningun registro aun,

eso es porq no se ha ejecutado un comando en la consola para replicar la base consolidada a las bases remotas, el comando es el siguiente:

dbremote -c "dbn=db_consolid;uid=dba;pwd=sql"

al ejecutar este comando nos saldrá una ventana de Sybase SQL Remote la cual nos indica que la base consolidada esta en espera para transmitir los cambios a las bases remotas.

Ahora con esta espera, en la misma consola y sin cerrar la ventana de Sybase SQL Remote, ejecutamos el mismo comando cambiando el nombre de la base de datos por db_remoto1, con esto hemos pasado los cambios de la base consolidada a la base remoto1, el comando quedaría: dbremote -c "dbn=db_remoto1;uid=dba;pwd=sql" , este para la base remoto1 y para la base remoto2 quedaría asi: dbremote -c "dbn=db_remoto2;uid=dba;pwd=sql" , luego de ejecutar el comando nos sale la misma ventana de Sybase SQL Remote pero al final de los mensajes nos muestra ejecucion completa, lo que indica que la replicacion fue exitosa.


Ahora nos queda verificar si las bases remotas recibieron el cambio hecho en la base consolidada, en nuestro caso hicimos un insert en la unica tabla persona, con id=1 y nombre='Juan'.

Efectivamente observamos que en las dos bases remotas, db_remoto1 y db_remoto2 se encuentra replicado el dato que se insertó en la base de datos consolidada. Con esto damos por terminado el mega mini tutorial de replicación de bases de datos usando Sybase como motor de base de datos y la herramienta SQL Remote del mismo Sybase.