domingo, 5 de abril de 2009

¿Por qué migrar a SQL Server 2008?

Una pregunta que últimamente se da con frecuencia es la de: “vale, pero yo tengo mi sistema con SQL 2000 y me va bien ¿que gano yo instalándome el SQL 2008 si no voy a utilizar ninguna de sus novedades a priori?”. Para este tipo de cuestiones, evidentemente uno se puede poner a enumerar una por una todas y cada una de las novedades que aparecen en SQL Server 2008, pero eso no le resolverá la duda a la persona que la plantea, sino que probablemente piense que tiene un montón de “extras” que no le sirven para nada (datos espaciales, jerárquicos,…).

Es por ello, que en este post voy a poner algunas de las razones que a mi modo de ver, son las mejoras mas significativas que se nos ofrecen, por el simple y mero hecho de instalar SQL Server 2008 y restaurar ahí nuestra BBDD de SQL 2000:

  • Compresión de datos

Como sabemos, en SQL Server 2008 disponemos de la posibilidad de realizar compresión de datos. En algunos posts anteriores (este y este) , ya discutí las bondades de disponer de esta característica. Ciertamente, el disponer de entrada, de la posibilidad de comprimir datos o backups, es algo muy a tener en cuenta. Es más, todavía me falta el post III de III, donde se podrán ver las grandes mejoras en cuanto a rendimiento se refiere, de activar la compresión de datos.

image

  • Resource Governor

Gracias a Resource Governor, vamos a poder conseguir que el motor relacional se comporte como queremos. Se acabaron las consultas que nos tumban el servidor, aquellos reports que lanzaba el director cuando le apetecía una y otra vez que nos ralentizaban a todos, esas consultas críticas que no salían cuando se las necesitaba porque el becario estaba jugueteando con eso llamado T-SQL en producción,…

image

  • Consolidación de servidores

Gracias a la característica de “administración centralizada de servidores” (Central Management Servers), podremos gestionar múltiples servidores de forma simultanea. Desde el mismo momento en que instalemos SQL Server 2008, podremos gestionar SQL 2008, SQL 2005 e incluso SQL 2000 de una manera centralizada, validando políticas de seguridad, lanzando comandos T-SQL de administración,…Es decir, que por el mero hecho de tener un único SQL 2008, nos vamos a beneficiar incluso en la gestión de servidores de otras ediciones.

image

  • Transparent Data Encryption

¿Te has parado a pensar en qué ocurre si un backup de producción cae en malas manos? Quizás estás pensando que realmente no pasa nada porque tu ya estás implementando encriptación a nivel de columna mediante certificados en SQL Server 2005…; ¿y si te dijera que con solo lanzar un comando, SQL Server 2008 cifra TODO y además de forma transparente a tus aplicaciones? Pues es posible y se llama TDE (Encriptación transparente de datos), una característica por la que incluso los propios backups realizados sobre una BBDD cifrada mediante TDE son imposibles de restaurar sin su certificado y/o password, y están completamente cifrados.

  • Consultas mas eficientes para tipos de datos fecha

Con la aparición de los nuevos tipos de datos fecha, aparece el tipo de datos “date”. Gracias a el, cuando deseemos realizar una consulta a un datetime o smalldatetime para obtener datos filtrados por una fecha en particular, podremos realizar una consulta mas natural y eficiente de la siguiente forma:

select * from dbo.TestIndexSeek where cast(sample_datetime as date) = '20071208';

*NOTA: sample_datetime puede ser de tipo datetime o smalldatetime, no es necesario que cambiemos nada en nuestro modelo EER


Este tipo de consultas, pese a lo que se pueda pensar al ver el cast al lado izquierdo de la comparación, ahora son eficientes (se entiende que existe un índice sobre sample_datetime).

image

  • Múltiples hilos para consultas sobre datos particionados

En SQL Server 2005, si una consulta debía recorrer múltiples particiones para devolver los resultados, solo existía un único hilo para recorrerlas. En SQL Server 2008, mejoras en el motor relacional hacen que existan múltiples hilos no solo para recorrer cada partición, sino para aquellas operaciones que deben moverse entre particiones para devolver datos

image

  • Indexación eficiente mediante filtrado de índices

Ahora es posible definir índices filtrados. Si conocemos que existen consultas que filtran datos sobre columnas cuya distribución de datos solo hace posible la utilización del índice en escasos predicados, podemos hacer un índice filtrado que optimice dichas consultas únicamente. Con ello obtendremos un índice mas ligero, puesto que solo será mantenido para el predicado que le hayamos dicho nosotros

CREATE NONCLUSTERED INDEX idx_territory5_orderdate
ON Sales.SalesOrderHeader(OrderDate)
INCLUDE(SalesOrderID, CustomerID, TotalDue)
WHERE TerritoryID = 5;
  • Seguimiento de cambios y de datos y mejoras en auditoria

En SQL Server 2008 existen las características CDC (Change Data Capture) y CT (Change Tracking) mediante las cuales podemos realizar un seguimiento de cambios de nuestros datos. De forma muy simple, podemos activar las características mediante las cuales podemos saber no solo cuantas veces ha cambiado un dato de valor, sino incluso todos los cambios por los que ha pasado e incluso (esto ya con algo de trabajo por nuestra parte) quién lo ha realizado.

¿te gustaría saber si alguien trata de obtener información sobre tu nómina? Puedes activar otra característica llamada Auditing, por la cual puedes incluso saber quien está lanzando una select (con su query) que implique lectura de alguna tabla.

  • TVP

Las siglas TVP (Table Value Parameters) hacen referencia ni mas ni menos que a la posibilidad de que nuestras aplicaciones puedan enviar tablas como parámetros de entrada de procedimientos almacenados y funciones। Algo que a priori quizás no le veas mucho sentido si no te paras a pensarlo, pero que supone un aumento de rendimiento brutal porque simplemente, SQL Server trabaja mejor con conjuntos, por lo que es exageradamente mas eficiente procesando una actualización de 100 filas, que 100 actualizaciones de una fila।

Este último realmente requiere que las aplicaciones cliente le saquen provecho, pero no he podido dejarlo pasar en este post porque me encanta ;)

Como se ha podido ver, existen numerosas características en SQL Server 2008 aprovechables de entrada, sin necesidad de tener que hacer un esfuerzo considerable ni mucho menos (algunas ya las obtenemos simplemente al restaurar el backup sobre 2008).

En cualquier caso, estas características no son ni mucho menos las únicas que aparecen en SQL 2008 y sino, aquí va una prueba:

image

2 comentarios:

Mary Arcia dijo...

Hola Enrique!
Me gusta mucho el post porque aunque estoy convencida de SQL 2008 es mejor, hay factores que me hacen retener la decisión de pasar ya a este ambiente. Por ejemplo, mi server de producción está en SQL 2000, mis desarrolladores trabajan en SQL 2005 (pruebas y todo eso) y a menudo trabajan con copias de la Base de Datos....aunque pronto quiero pasar a SQL 2005, me pregunto...Es posible montar SQL 2008 en Producción y que mis desarrolladores sigan con SQL 2005??? Tal vez no venga al caso...pero me ha puesto ha pensar.... Por otro lado, la caracteristica de CDC es una de las que mas me atrajo en SQL 2008, necesito que cuando ocurra un Insert/Update en mi BD, se entere otra BD para desplegar ciertas acciones....Esto, lo confieso me enamoró muchísimo!! Porque es que lo estaba matando a cuenta de Triggers y mucho código...pero vino algo que me desencantó...y es que CDC solo está disponible en la Edición Enterprise de SQL 2008..... :( Pues, mi empresa, aunque no es tan grande como para comprar Enterpise (tengo Stándard) si tiene necesidades de negocio tan similares como las grandes... :(
Bueno, una vez más, mil gracias por tu post, sigue escribiendo para encontrar más razones para instalar SQL 2008.

DANIEL dijo...

Aunque este blog es del 2009, me gusta tu post, efectivamente en la actualidad no hace falta convencer a la migración de 2005 a 2008R2. ya ni se habla de 200 a 2008.
estaré pendiente de tus blog..