¿Qué hay de nuevo, viejo? (again)

Carlos, nuestro experto de SQL Server escribe un artículo sobre las nuevas versiones del producto.

Allá por mayo del año pasado escribía un artículo donde hacía referencia a la nueva versión de SQL Server (denominada 2012) y ya estoy de nuevo escribiendo otro sobre una inminente salida al mercado de otra versión, esta vez denominada 2014 (por cierto. Que yo recuerde, es la primera vez que tenemos el nombre final en vez de uno interno como ha ocurrido en las veces anteriores: Yukon para 2005, Katmai para 2008 o Denali para 2012) Por tanto es normal que surjan preguntas como que si merece la pena el cambio, o si es que SQL2012 no ha sido un producto aceptado en el mercado.

Respecto a la respuesta a la segunda pregunta, influye mucho el contexto actual, donde la inversión en cualquier ámbito tiene que estar justificadísima y es difícil convencer de las ventajas que tiene el actualizar la versión de los servidores de bases de datos. En cuanto a la primera pregunta, depende de dónde vengas y sobre todo del uso que se le esté dando al motor de base de datos que se tenga (hay escenarios donde da igual que tengas la última versión del SGBD más potente del mercado, porque daría el mismo resultado usar ficheros de texto) Desde mi punto de vista, creo que es bueno poder disponer de una nueva versión mayor en tan poco tiempo (apenas 18 meses)

Así que si nos encontramos en una situación donde las empresas no ven justificable invertir en actualización de software o donde el rendimiento actual no es el mejor porque no se saben explotar adecuadamente los recursos disponibles, ¿qué tiene de interesante SQL Server 2014 para que alguien con capacidad de decisión diga “lo quiero”? Bueno, es difícil resumirlas en las 800 palabras de las que dispongo, pero como de todos es sabida mi capacidad para ser breve (a las cenas de navidad me remito), pues voy a intentarlo.

¿Qué os parecería si os dijera que simplemente instalando SQL Server 2014 el rendimiento de nuestra aplicación fuera 10 veces mejor de media y con un poco de esfuerzo (análisis y depuración) pudiéramos llegar a 30 veces más rápida (bwin, por ejemplo, ha conseguido en su sistema de producción pasar de 10.000 tps a 250.000. Nostamal, ¿eh?) ?No me podéis negar que es una buena frase de venta. Bueno, pues detrás de esto está lo que se ha venido llamando Hekaton y que a partir de ahora es In-Memory OLTP database technology y que como su nombre indica, permite trabajar con todos los datos (y también los procedimientos almacenados) directamente en memoria.

Los que sepan un poco de SQL Server seguramente se sorprendan porque sabrán que los datos siempre son devueltos desde el buffer pool y no desde disco, así que ¿dónde está la novedad? Bueno, aunque eso es cierto, no es lo mismo diseñar un sistema donde los datos residan principalmente en disco y se use la memoria como un recurso para mejorar el rendimiento, que diseñarlo usando la memoria directamente como el almacenamiento principal. Para quien quiera profundizar, os recomiendo este enlace

Otra característica de la que puede beneficiarse directamente nuestras aplicaciones es la posibilidad de usar discos SSD directamente como una extensión del buffer pool. Es decir, que en vez de comprar más RAM para mejorar el rendimiento de nuestro sistema, podemos usar discos SSD (mucho más baratos) para ello. Ahora bien, para vernos beneficiados de esta característica, nuestro sistema debe reunir una serie de características, como por ejemplo: que sea una aplicación OLTP principalmente de lectura (que suele ser la mayoría con la que trabajamos) y que nuestros discos supongan un cierto cuello de botella. Para más info, aquí

Los índices columnares actualizables son también una nueva característica de que va a disponer SQL 2014. Si bien los índices columnares ya existían en SQL 2012 (para quien no lo sabía, este tipo de índices disponen los datos se almacenan basándose en los valores de las columnas, no a nivel de fila, lo cual implica un rendimiento mucho mayor en ciertos tipos de consultas como las que se suelen realizar en un DWH), la ventaja de esta nueva versión es que vamos a poder ejecutar instrucciones DML contra ellos. Aquí explican más internamente cómo funciona todo esto.

Destacable también es el hecho de poder realizar reconstrucciones en línea de particiones individuales, y es que desde que salió el particionado nativo en SQL Server (allá por la versión 2005), cada vez que se quería hacer una desfragmentación del índice particionado, había que o bien reorganizarlo (que es siempre en línea, pero menos completo) o bien esperar a una ventana de tiempo en la que fuera posible hacerlo off-line.

Y como siempre, hay más novedades: capacidad hasta 640 procesadores y 4Tb de RAM, guardar un backup en un almacenamiento de Azure (url), Resource Governor va a permitir modificar parámetros relacionados con IO, mejoras en la gestión de las estadísticas (disponibles a nivel de partición y mejoras en la estimación de la cardinalidad), mejoras en los grupos de disponibilidad (por ejemplo que una réplica esté en Azure), etc.

Así que bueno, para quien quiera empezar a jugar con este nuevo juguete, os recomiendo la página oficial del producto e instalar la CTP1 que está disponible en estos momentos (en una máquina virtual, claro)