Grimpi IT Blog

enero 18, 2011

Lo nuevo en SQL Server 2011

Filed under: SQL Server, SQL Server 2011, T-SQL — grimpi @ 2:02 pm

Estuve investigando SQL Server 2011, llamada “Denali”. Actualmente está en estado beta y se puede bajar la CTP desde acá. Antes de bajarla, para poder instalar esta CTP se requiere como minimo Windows Vista SP2. No funciona ni en Windows XP ni en Windows 2003. De todas maneras parece bastante prometedora.
Que tiene de nuevo esta nueva versión? Obviamente muchas, pero hay 2 cosas que realmente me gustaron:

1) Objetos sequences: Quienes trabajen con Oracle o PostgreSQL, sabrán perfectamente que son. Para el que no lo sabe, un sequence es un objeto cuyo valor se autoincrementa cada vez que es consultado.
Es un excelente reemplazo de los identities, ya que es un objeto externo a la tabla.
Dentro de poco veremos las flamewars en blogs argumentando si es mejor o peor usar sequences o identities como campo PK de una tabla.
Sin embargo, la incorporación de este objeto facilitara enormemente la migración de Oracle y PostgreSQL a SQL Server.
Ejemplo:

CREATE SEQUENCE PrimerSequence
START WITH 1
INCREMENT BY 1;
GO

SELECT (NEXT VALUE FOR PrimerSequence)
GO

INSERT INTO Tabla (Id, Nombre)
SELECT NEXT VALUE FOR PrimerSequence, ‘Esteban’
GO

Link:
http://msdn.microsoft.com/en-us/library/ff878058(v=SQL.110).aspx

La única contra que le veo, es la forma en que SQL Server implementó la lectura de los sequences. Escribir NEXT VALUE FOR xxxx es demasiado texto para simplemente para leer un sequence.
En Oracle o en PostgreSQL resulta más legible y compacto hacer lo mismo.

2) Paginación: Ya no hay que inventar subqueries y cosas raras para paginar datos. Con SQL Server 2011 va a ser posible paginar nativamente una query declarando un OFFSET en la cláusula ORDER BY.
Habrá que investigar la performance de esto, pero parece prometedor.
Ejemplo:

SELECT Id, Campo1, Campo2 FROM Tabla
ORDER BY
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY
GO

Maravilloso. Lo único que no entiendo es porque decidieron poner en el ORDER BY la paginación y no en la instrucción TOP, que pareciera ser lo mas lógico. Después de todo se supone que el ORDER BY solo se limita a ordenar datos y no a limitar la cantidad de registros a devolver.
Además lo hicieron demasiado trabajoso. Demasiadas palabras claves para algo tan simple. Hay que escribir OFFSET, ROWS, FETCH, NEXT, ONLY, ROWS nuevamente solamente para limitar un resultado. MySql lo resuelve de manera mucho mas elegante y practica con su cláusula LIMIT (0,10). Simple, claro y elegante.

Link:
http://msdn.microsoft.com/en-us/library/ff878058(v=SQL.110).aspx

ACTUALIZACION: Me acabo de enterar que la manera en que SQL Server implementó la paginacion corresponde a la especificación ANSI SQL:2008.

Hay otras cosas interesantes en SQL Server 2011.  Se agregó un nuevo tipo de indice, llamado “columnstore”, pensado especialmente para escenarios de datawharehousing. Se mejoró notablemente el Full Text Search, la IDE cambió, se agregaron snippets, varias mejoras en BI y SSIS.
Seguramente con el correr de los meses, se irán incorporando nuevas características. Pero ya el hecho de tener paginación nativa y sequences, representa un gran avance para los desarrolladores y en mi opinion, el nuevo indice por columnas en algunos escenarios, va a ser imprescindible. Pero esto lo voy a explicar en otro post.

3 comentarios »

  1. […] https://grimpidev.wordpress.com/2011/01/18/lonuevoensqlserver2011/ January 21, 2011   //   MsSQL   //   No Comments   //   […]

    Pingback por Lo nuevo en SQL Server 2011 « DbRunas – Noticias y Recursos sobre Bases de Datos — enero 21, 2011 @ 4:01 am

  2. Hola grimpi,

    Gracias por tu articulo, realmente hay muy poco de información sobre Denali. Tal vez he visto 2 streamcast y algunos blogs. Solo veo un error en el código que colocaste y es que en el order by paginado, te falta especificar por que columna se realizará el ordenamiento :).

    Comentario por Julian — mayo 17, 2011 @ 9:29 pm

  3. Ja, es verdad. Me comi la columna.
    Sobre el Denali, es verdad. No hay mucha info.
    Yo escribi este post tambien sobre SQL Server 2011, https://grimpidev.wordpress.com/2011/01/25/lo-nuevo-de-sql-server-2011-column-storage-index/

    Comentario por grimpi — mayo 18, 2011 @ 5:39 pm


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: