Yo reorganizo, tu reorganizas, el reorganiza


Las reorganizaciones de las bases de datos en la versión Genexus Rocha, han tenido varias mejoras espectaculares .

Las principales son:
1) Se ejecuta la reorg por módulos, que ejecutan en paralelo
2) Se mejoró mucho el SQL generado y muchos casos que antes generaban tablas temporarias ahora se resuelven con sentencias SQL.
3) Se generan los scripts SQL y se puede tener scripts para correr antes y después de reorganizar
4) Se pueden ver la cantidad de registros que tienen las tablas que serán reorganizadas
5) Cuando una reorganización falla, si la corro nuevamente se retoma desde el ultimo punto que falló
6) Se verifica la estructura base de datos para prever algunos casos que hacen cancelar reorganizaciones.
Con todas estas mejoras, estamos mucho mejor que antes para utilizar Genexus para la realización de las reorganizaciones con bases de datos grandes.

Lo que falta
Con el fin de poder ejecutar la reorganización en un periodo de varios días (en realidad, de varias noches) estaría bueno poder dividir la reorganización entre las cosas que se pueden cambiar permitiendo que la versión de aplicación existente no cancele y los cambios críticos, o sea, los cambios necesarios para que la versión nueva de aplicación no cancele

El proceso de reorganización hoy puede ser dividido en :

a) Se hace una lista de las sentencias que se pueden ejecutar antes:
Create Table
Add column con inicializacion
Create index
Drop index //esta con cuidado

b) Se hace la lista de sentencias que se DEBEN ejecutar antes de instalar la nueva version
Modificar el tipo/largo de una columna
Modificar clave de una tabla
Integridad referencial

c) Lista de sentencias que se pueden ejecutar DESPUES y la nueva versión siguen funcionado
Drop table
Drop column

En los días previos de la instalación de la nueva versión, se ejecutan las sentencias de a)
El día de la instalación se ejecuta b) e inmediatamente se instala
Los días posteriores de la instalación se puede ejecutar c)

El objetivo de todo DBA es tener la aplicación baja lo menos posible (o dormir lo mas posible, nunca me quedó muy claro), por lo que debería hacerse el esfuerzo en tratar de minimizar lo que demora b).
Las tareas de a) y c) pueden demorar mas y no son tan criticas.
Teniendo la lista de sentencias a ejecutar, esta tarea es MUCHO mas fácil en la versión Rocha que en la GeneXus 9.0, pero creo que aun hay algunas mejoras posibles, para quienes sufran aplicaciones que necesiten una alta disponibilidad.

Comentarios

  1. Me encantó! No había pensado la separación del proceso con esta lógica. Creo que GX puede hacer cosas para ayudar en este particionamiento. Vamos a ver cóm le entramos!

    ResponderBorrar
  2. Gustavo: Creo que somos varios los que tenemos que hacer este tipo de particiones. En realidad a los que no lo sufran, pueden seguir ejecutando los tres pasos en un solo momento y tendran el mismo resultado que hoy.

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.