viernes, agosto 08, 2008

Novedades en SQL 2008: Parte 1

SQL 2008 por fin alcanzo la meta de ser RTM (Release for manufacturing, por sus siglas en ingles), lo que indica que próximamente se podrá adquirir oficialmente; aunque ya esta disponible para los subscriptores que MSDN y TechNET.

Leyendo la documentación, me encuentro con una serie de nueva funcionalidad o funcionalidad mejorada que en lo particular me interesa; por tal motivo, en esta primera parte voy a describir estas nuevas o mejoradas características en relación al motor de la base de datos.

Administración de la base de datos
Compresión en los respaldos: Esta funcionalidad que anterior a SQL 2008 solo encontrábamos con herramientas de terceros, ahora es parte de SQL. A partir de ahora podemos comprimir nuestros respaldos al momento de realizarlos.

La ventajas son que se requiere de menos tiempo tiempo, menos espacio y menor numero de operaciones I/O para respaldar nuestra información.

La desventaja, es que el algoritmo de compresión requiere de mayor uso del CPU al momento de respaldar, lo que puede provocar que ciertas operaciones tomen mas tiempo al momento de realizar respaldos.

Seguimiento de cambios: Esta es una nueva característica que proporciona una forma ligera - la penalización en rendimiento es relativamente baja - para identificar cambios realizados en las tablas de nuestra base de datos. Con este nos podemos olvidar de soluciones ad-hoc que hacen uso de triggers, timestamps y otros trucos, que por lo general son ineficientes y muy específicos para cada aplicación.

El seguimiento de cambios permite escribir aplicaciones de sincronización de una vía con otras bases de datos o bien sincronización de 2 vías, aunque aquí se requiere una mecanismo para la detección de conflictos.

Es importante mencionar que los registros que cambiaron son identificados por medio de su llave primaria, por lo tanto debe de ser una llave única a través de las diferentes bases de datos o aplicaciones que consumen esta información.

Esta característica de alguna forma me recuerda a la característica de replicacion, de tipo merge, aunque en este caso el seguimiento de cambios no incorpora mecanismo para trasladar los cambios detectados a otras bases de datos, tal y como lo hace la replicacion de tipo merge.

Captura de cambio en datos: Esta es otra nueva característica de SQL 2008, que nos permite identificar cambios en nuestros datos, pudiendo determinar que fue lo que se modifico en ellos.

Por ejemplo esta es una característica muy útil para procesos ETL (Extract, Transform, Load) en donde actualizamos los cambios que van sucediendo en nuestra base de datos a un Datamart o Datawarehouse.

La forma como funciona esta característica consiste, primero, en indicar explícitamente las tablas de las que deseamos capturar cambios, estas tablas las ligamos a una instancia de captura que es quien realiza la operación. Posteriormente nuestra instancia va a monitorear el log de la base de datos para poder determinar que registros sufrieron cambios.

Por cada tabla monitoreada se crea una nueva tabla con el mismo schema, en estas tablas copia es donde se guardan los cambios realizados por una operación del DML. En las tablas de captura vamos a encontrar nuevos registros creados, los registros que fueron eliminados y 2 registros por cada actualización, uno con la imagen de como era el registros antes del cambio y otro con el cambio sufrido en el registro.

En caso de que nuestra tabla monitoreada sufra cambios en el esquema el mecanismo de captura de cambios actuara de la siguiente forma:
- Nuevas columnas, estas serán ignoradas por el monitoreo de cambios, si nos interesa que sean monitoreadas, entonces podemos crear una nueva instancia de captura que incluya el nuevo esquema o recrear la instancia actual.

- Columnas eliminadas: En este caso se insertan valores nulos en las columnas que ya no existen

- Cambio de tipo de una columna: Para evitar perdidas en los datos, se creara una nueva columna con el nuevo tipo de dato y ahí se almacenaran los nuevos valores.

Debido a que monitoreo de cambio puede llevar a tener miles de cambios, existe un tiempo de retención, que por omisión son tres días, cambios capturados anteriores a esta fecha son eliminados de la tabla de captura.

Por el momento es todo en esta primera parte sobre las novedades en el SQL 2008. Para mayor información favor visitar la documentación del SQL 2008

No hay comentarios.: